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.
>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
- Adobe Commerce en la infraestructura en la nube, todas las versiones compatibles
Elija el más apropiado para su caso:
Método 1: transferir la base de datos dump al equipo local e importarla meth2
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:
-
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 eshttps://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;"
-
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. -
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.
-
Conéctese a la base de datos.
code language-bash mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name>
-
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>;
-
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:
-
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>
). -
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>
-
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>;
-
Después de borrar la base de datos, vuelva a crearla:
code language-bash create database [database_name];
-
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: