從Staging或Production還原資料庫快照
本文說明如何在Cloud Pro基礎結構上的Adobe Commerce上從Staging或Production還原DB snapshot。
受影響的產品和版本
- 雲端基礎結構上的Adobe Commerce,所有支援的版本
選擇最適合您的案例:
- 方法1:將資料庫 dump 傳輸至本機電腦,然後匯入它。
- 方法2:直接從伺服器匯入資料庫 dump 。
方法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>
相關閱讀
在我們的開發人員檔案中: