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
- 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
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>
). 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;"
-
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-sql 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-sql drop database <cluster ID>;
(Para Staging)
code language-sql drop database <cluster ID_stg>;
-
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:
-
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-sql 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-sql drop database <cluster ID>;
(Para Staging)
code language-sql drop database <cluster ID_stg>;
-
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: