Staging 또는 Production에서 DB 스냅숏 복원

이 문서에서는 Cloud Pro 인프라의 Adobe Commerce에서 Staging 또는 Production에서 DB snapshot을(를) 복원하는 방법을 보여 줍니다.

영향을 받는 제품 및 버전

사용 사례에 가장 적합한 항목 선택:

방법 1: dump 데이터베이스를 로컬 컴퓨터로 전송하고 가져옵니다. meth2

단계는 다음과 같습니다.

  1. SFTP을(를) 사용하여 데이터베이스 snapshot이(가) 배치된 위치로 이동합니다(일반적으로 cluster의 첫 번째 서버/노드(예: /mnt/recovery-<recovery_id>). 참고: 프로젝트가 Azure 기반, 즉 프로젝트 URL이 https://us-a1.magento.cloud/projects/<cluster_id>와(과) 같은 경우 스냅샷은 대신 /mnt/shared/<cluster ID>/all-databases.sql.gz 또는 /mnt/shared/<cluster ID_stg>/all-databases.sql.gz에 배치됩니다.

    참고: Azure 프로젝트의 스냅숏 형식은 다르며 가져올 수 없는 다른 데이터베이스를 포함합니다. 스냅샷을 가져오기 전에 덤프를 가져오기 전에 적절한 데이터베이스를 추출하기 위해 추가 단계를 수행해야 합니다.

    프로덕션의 경우:

    code language-sql
    cd /mnt/shared/<cluster ID/
    gunzip all-databases.sql.gz
    head -n 17 all-databases.sql > <cluster ID>.sql
    sed -n '/^-- Current Database: `<cluster ID>`/,/^-- Current Database: `/p' all-databases.sql >> <cluster ID>.sql gzip <cluster ID>.sql
    zcat <cluster ID>.sql.gz | \
    sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | \
    mysql -h 127.0.0.1 \
    -u $DB_USER \
    --password=$MYSQL_PWD $DB_NAME \
    --init-command="SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT ;SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS ;SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION ;SET NAMES utf8 ;SET @OLD_TIME_ZONE=@@TIME_ZONE ;SET TIME_ZONE='+00:00' ;SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 ;SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 ;SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' ;SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0;"
    

    스테이징의 경우:

    code language-sql
    cd /mnt/shared/<cluster ID/ | cd /mnt/shared/<cluster ID_stg>
    gunzip all-databases.sql.gz
    head -n 17 all-databases.sql > <cluster ID_stg>.sql
    sed -n '/^-- Current Database: `wyf2o4zlrljjs`/,/^-- Current Database: `/p' all-databases.sql >> <cluster ID_stg>.sql
    gzip <cluster ID_stg>.sql
    zcat <cluster ID_stg>.sql.gz | \
    sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | \
    mysql -h 127.0.0.1 \
    -u $DB_USER \
    --password=$MYSQL_PWD $DB_NAME \
    --init-command="SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT ;SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS ;SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION ;SET NAMES utf8 ;SET @OLD_TIME_ZONE=@@TIME_ZONE ;SET TIME_ZONE='+00:00' ;SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 ;SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 ;SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' ;SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0;"
    
  2. dump file 데이터베이스(예: Production의 경우 <cluster ID>.sql.gz, Staging의 경우 <cluster ID_stg>.sql.gz)를 로컬 컴퓨터에 복사합니다.

  3. 개발자 설명서에서 데이터베이스에 원격으로 연결하도록 SSH tunnel을(를) 설정했습니다. SSH 및 sFTP: SSH tunneling.

  4. 데이터베이스에 연결합니다.

    code language-sql
    mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name>
    
  5. 데이터베이스 Drop; MariaDB 프롬프트에서 다음을 입력하십시오.

    (대상: Production)

    code language-sql
    drop database <cluster ID>;
    

    (대상: Staging)

    code language-sql
    drop database <cluster ID_stg>;
    
  6. snapshot을(를) 가져오려면 다음 명령을 입력하십시오.

    (대상: Production)

    code language-sql
    zcat <cluster ID>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -P <db-port> -p -u   <db-user> <db-name>
    

    (대상: Staging)

    code language-sql
    zcat <cluster ID_stg>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -P <db-port> -p -u   <db-user> <db-name>
    

방법 2: 서버에서 직접 dump 데이터베이스를 가져옵니다. meth3

단계는 다음과 같습니다.

  1. 데이터베이스 snapshot이(가) 배치된 위치(일반적으로 cluster의 첫 번째 서버/노드)로 이동합니다(예: /mnt/recovery-<recovery_id>).

  2. drop에 클라우드 데이터베이스를 다시 만들려면 먼저 데이터베이스에 연결하십시오.

    code language-sql
    mysql -h 127.0.0.1 -P <db-port> -p -u <db-user> <db-name>
    
  3. 데이터베이스 Drop; MariaDB 프롬프트에서 다음을 입력하십시오.

    (대상: Production)

    code language-sql
    drop database <cluster ID>;
    

    (대상: Staging)

    code language-sql
    drop database <cluster ID_stg>;
    
  4. snapshot을(를) 가져오려면 다음 명령을 입력하십시오.

    (Production에서 데이터베이스 백업을 가져오는 경우)

    code language-sql
    zcat <cluster ID>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <db-user> <db-name>
    

    (Staging에서 데이터베이스 백업을 가져오는 경우)

    code language-sql
    zcat <cluster ID_stg>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <db-user> <db-name>
    

    (다른 환경에서 데이터베이스 백업을 가져오는 경우)

    code language-sql
    zcat <database-backup-name>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <db-user> <db-name>
    

    (다른 환경에서 데이터베이스 백업을 가져오는 경우)

    code language-sql
    zcat <database-backup-name>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <db-user> <db-name>
    

관련 읽기

개발자 설명서에서:

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a