Restaurar una instantánea de base de datos desde Staging o Production

Este artículo muestra cómo restaurar una base de datos snapshot desde Staging o Production en la infraestructura de Adobe Commerce en Cloud Pro.

Productos y versiones afectados

Elija el más apropiado para su caso:

Método 1: transferir la base de datos dump al equipo local e importarla meth2

Estos son los pasos:

  1. Usando SFTP, vaya a la ubicación donde se ha colocado la base de datos snapshot, normalmente en el primer servidor/nodo de su cluster (por ejemplo: /mnt/recovery-<recovery_id>). NOTA: Si el proyecto se basa en Azure, es decir, la dirección URL del proyecto se parece a https://us-a1.magento.cloud/projects/<cluster_id>, la instantánea se colocará en /mnt/shared/<cluster ID>/all-databases.sql.gz o /mnt/shared/<cluster ID_stg>/all-databases.sql.gz.

    NOTA: El formato de la instantánea de los proyectos de Azure será diferente y contendrá otras bases de datos que no se pueden importar. Antes de importar la instantánea, deberá hacer lo siguiente Debe realizar pasos adicionales para extraer la base de datos adecuada antes de importar el volcado.

    Para la producción:

    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;"
    

    Para Ensayo:

    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. Copie la base de datos dump file (por ejemplo: <cluster ID>.sql.gz para Production o <cluster ID_stg>.sql.gz para Staging) en el equipo local.

  3. Asegúrese de haber configurado SSH tunnel para que se conecte de forma remota a la base de datos: SSH y sFTP: SSH tunneling en nuestra documentación para desarrolladores.

  4. Conéctese a la base de datos.

    code language-sql
    mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name>
    
  5. Drop la base de datos; en el símbolo del sistema MariaDB, escriba:

    (Para Production)

    code language-sql
    drop database <cluster ID>;
    

    (Para Staging)

    code language-sql
    drop database <cluster ID_stg>;
    
  6. Escriba el siguiente comando para importar snapshot:

    (Para 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>
    

    (Para 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>
    

Método 2: importar la base de datos dump directamente desde el servidor meth3

Estos son los pasos:

  1. Vaya a la ubicación en la que se ha colocado la base de datos snapshot, normalmente en el primer servidor o nodo de su cluster (por ejemplo: /mnt/recovery-<recovery_id>).

  2. Para drop y volver a crear la base de datos en la nube, conéctese primero a la base de datos:

    code language-sql
    mysql -h 127.0.0.1 -P <db-port> -p -u <db-user> <db-name>
    
  3. Drop la base de datos; en el símbolo del sistema MariaDB, escriba:

    (Para Production)

    code language-sql
    drop database <cluster ID>;
    

    (Para Staging)

    code language-sql
    drop database <cluster ID_stg>;
    
  4. Escriba el siguiente comando para importar snapshot:

    (Para importar la copia de seguridad de la base de datos desde 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>
    

    (Para importar la copia de seguridad de la base de datos desde 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>
    

    (Para importar una copia de seguridad de base de datos desde cualquier otro entorno)

    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>
    

    (Para importar una copia de seguridad de base de datos desde cualquier otro entorno)

    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>
    

Lectura relacionada

En nuestra documentación para desarrolladores:

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