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>
関連資料
開発者向けドキュメントでは、