Staging 또는 Production에서 DB 스냅숏 복원
이 문서에서는 Cloud Pro 인프라의 Adobe Commerce에서 snapshot 또는 Staging에서 DB Production을(를) 복원하는 방법을 보여 줍니다.
>부분적으로 스냅숏을 복원해야 하는 경우(예: 주문 테이블은 그대로 두고 카탈로그 테이블만 복원해야 하는 경우) 개발자 또는 DBA와 상담해야 합니다.
영향을 받는 제품 및 버전
- 클라우드 인프라의 Adobe Commerce, 지원되는 모든 버전
사용 사례에 가장 적합한 항목 선택:
방법 1: dump 데이터베이스를 로컬 컴퓨터로 전송하고 가져옵니다. meth2
스냅샷을 가져오기 전에 추가 단계를 수행하여 적절한 데이터베이스를 추출한 후 덤프 가져오기를 진행해야 합니다.
단계는 다음과 같습니다.
-
SFTP을(를) 사용하여 데이터베이스 snapshot이(가) 배치된 위치로 이동합니다(일반적으로 cluster의 첫 번째 서버/노드(예:
/mnt/recovery-<recovery_id>).Azure 기반 프로젝트:
프로젝트가 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-bash 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-bash 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: `<cluster ID_stg>`/,/^-- 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;" -
dump file 데이터베이스(예:
<cluster ID>.sql.gz의 경우 Production,<cluster ID_stg>.sql.gz의 경우 Staging)를 로컬 컴퓨터에 복사합니다. -
개발자 설명서에서 데이터베이스에 원격으로 연결하도록 SSH tunnel을(를) 설정했습니다. SSH 및 sFTP: SSH tunneling.
-
데이터베이스에 연결합니다.
code language-bash mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name> -
데이터베이스 Drop; MariaDB 프롬프트에서 다음을 입력하십시오.
(대상: Production)
code language-bash drop database <cluster ID>;(대상: Staging)
code language-bash drop database <cluster ID_stg>; -
snapshot을(를) 가져오려면 다음 명령을 입력하십시오.
(대상: Production)
code language-bash 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-bash 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
단계는 다음과 같습니다.
-
데이터베이스 snapshot이(가) 배치된 위치(일반적으로 cluster의 첫 번째 서버/노드)로 이동합니다(예:
/mnt/recovery-<recovery_id>). -
drop에 클라우드 데이터베이스를 다시 만들려면 먼저 데이터베이스에 연결하십시오.
code language-bash mysql -h 127.0.0.1 -P <db-port> -p -u <db-user> <db-name> -
데이터베이스 Drop; MariaDB 프롬프트에서 다음을 입력하십시오.
(대상: Production)
code language-bash drop database <cluster ID>;(대상: Staging)
code language-bash drop database <cluster ID_stg>; -
데이터베이스를 삭제한 후 데이터베이스를 다시 생성합니다.
code language-bash create database [database_name]; -
snapshot을(를) 가져오려면 다음 명령을 입력하십시오.
(Production에서 데이터베이스 백업을 가져오는 경우)
code language-bash zcat <cluster ID>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <db-user> <db-name>(Staging에서 데이터베이스 백업을 가져오는 경우)
code language-bash zcat <cluster ID_stg>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <db-user> <db-name>(다른 환경에서 데이터베이스 백업을 가져오는 경우)
code language-bash zcat <database-backup-name>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <db-user> <db-name>(다른 환경에서 데이터베이스 백업을 가져오는 경우)
code language-bash zcat <database-backup-name>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <db-user> <db-name>
관련 읽기
개발자 설명서에서: