Staging 또는 Production에서 DB 스냅숏 복원
이 문서에서는 Cloud Pro 인프라의 Adobe Commerce에서 Staging 또는 Production에서 DB snapshot을(를) 복원하는 방법을 보여 줍니다.
영향을 받는 제품 및 버전
- 클라우드 인프라의 Adobe Commerce, 지원되는 모든 버전
사용 사례에 가장 적합한 항목 선택:
방법 1: dump 데이터베이스를 로컬 컴퓨터로 전송하고 가져옵니다. meth2
단계는 다음과 같습니다.
-
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;"
-
dump file 데이터베이스(예: Production의 경우
<cluster ID>.sql.gz
, Staging의 경우<cluster ID_stg>.sql.gz
)를 로컬 컴퓨터에 복사합니다. -
개발자 설명서에서 데이터베이스에 원격으로 연결하도록 SSH tunnel을(를) 설정했습니다. SSH 및 sFTP: SSH tunneling.
-
데이터베이스에 연결합니다.
code language-sql mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name>
-
데이터베이스 Drop; MariaDB 프롬프트에서 다음을 입력하십시오.
(대상: Production)
code language-sql drop database <cluster ID>;
(대상: Staging)
code language-sql drop database <cluster ID_stg>;
-
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
단계는 다음과 같습니다.
-
데이터베이스 snapshot이(가) 배치된 위치(일반적으로 cluster의 첫 번째 서버/노드)로 이동합니다(예:
/mnt/recovery-<recovery_id>
). -
drop에 클라우드 데이터베이스를 다시 만들려면 먼저 데이터베이스에 연결하십시오.
code language-sql mysql -h 127.0.0.1 -P <db-port> -p -u <db-user> <db-name>
-
데이터베이스 Drop; MariaDB 프롬프트에서 다음을 입력하십시오.
(대상: Production)
code language-sql drop database <cluster ID>;
(대상: Staging)
code language-sql drop database <cluster ID_stg>;
-
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>