[Solo PaaS]{class="badge informative" title="Se aplica solo a proyectos de Adobe Commerce en la nube (infraestructura PaaS administrada por Adobe) y a proyectos locales."}

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.

NOTE
Estos métodos restaurarán la instantánea completa.
​>Si necesita restaurar la instantánea parcialmente (por ejemplo, restaurando únicamente las tablas de catálogo y dejando las tablas de pedidos intactas), debe consultar con su desarrollador o DBA.

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

NOTE
El formato de la instantánea de proyectos de Azure será diferente y contiene otras bases de datos que no se pueden importar.
Antes de importar la instantánea, debe realizar pasos adicionales para extraer la base de datos apropiada antes de continuar con la importación de volcado.

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>).

    Proyectos basados en Azure:
    Si el proyecto está basado en Azure (es decir, la dirección URL del proyecto es https://us-a1.magento.cloud/projects/<cluster_id>), la instantánea se colocará en:

    • /mnt/shared/<cluster ID>/all-databases.sql.gz
    • /mnt/shared/<cluster ID_stg>/all-databases.sql.gz

    Pasos de extracción específicos de Azure

    Para producción:

    code language-bash
    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-bash
    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: `<cluster ID_stg>`/,/^-- 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-bash
    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-bash
    drop database <cluster ID>;
    

    (Para Staging)

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

    (Para Production)

    code language-bash
    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-bash
    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-bash
    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-bash
    drop database <cluster ID>;
    

    (Para Staging)

    code language-bash
    drop database <cluster ID_stg>;
    
  4. Después de borrar la base de datos, vuelva a crearla:

    code language-bash
    create database [database_name];
    
  5. Escriba el siguiente comando para importar snapshot:

    (Para importar la copia de seguridad de la base de datos desde Production)

    code language-bash
    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-bash
    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-bash
    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-bash
    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