从恢复数据库快照 Staging 或 Production

本文说明如何还原数据库 snapshot 从 Staging 或 Production 在Adobe Commerce on Cloud Pro基础架构上。

受影响的产品和版本

选择最适合您的具体情况:

方法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 (例如: <cluster ID>.sql.gz 对象 Production 或 <cluster ID_stg>.sql.gz 对象 Staging)到本地计算机。

  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>
    

相关阅读

在我们的开发人员文档中:

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