Ripristinare uno snapshot del database da Staging o Production
In questo articolo viene illustrato come ripristinare un database snapshot da Staging o Production nell'infrastruttura Adobe Commerce su Cloud Pro.
>Se è necessario ripristinare lo snapshot parzialmente, ad esempio solo ripristinando le tabelle di catalogo senza modificare le tabelle dell'ordine, è necessario consultare lo sviluppatore o il DBA.
Prodotti e versioni interessati
- Adobe Commerce sull'infrastruttura cloud, tutte le versioni supportate
Scegliere il caso più appropriato:
Metodo 1: trasferire il database dump nel computer locale e importarlo meth2
Prima di importare lo snapshot, è necessario eseguire ulteriori passaggi per estrarre il database appropriato prima di procedere con l'importazione del dump.
I passaggi sono i seguenti:
-
Utilizzando SFTP, passare alla posizione in cui è stato posizionato il database snapshot, in genere sul primo server/nodo di cluster (ad esempio:
/mnt/recovery-<recovery_id>
).Progetti basati su Azure:
Se il progetto è basato su Azure (ad esempio, l'URL del progetto èhttps://us-a1.magento.cloud/projects/<cluster_id>
), l'istantanea verrà inserita in:/mnt/shared/<cluster ID>/all-databases.sql.gz
/mnt/shared/<cluster ID_stg>/all-databases.sql.gz
Passaggi di estrazione specifici di Azure
Per la produzione:
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;"
Per Staging:
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;"
-
Copiare il database dump file (ad esempio:
<cluster ID>.sql.gz
per Production o<cluster ID_stg>.sql.gz
per Staging) nel computer locale. -
Assicurarsi di aver configurato SSH tunnel per la connessione al database in modalità remota: SSH and sFTP: SSH tunneling nella documentazione per gli sviluppatori.
-
Connettersi al database.
code language-bash mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name>
-
Drop il database; al prompt MariaDB, immettere:
(Per Production)
code language-bash drop database <cluster ID>;
(Per Staging)
code language-bash drop database <cluster ID_stg>;
-
Immettere il comando seguente per importare snapshot:
(Per 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>
(Per 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>
Metodo 2: importare il database dump direttamente dal server meth3
I passaggi sono i seguenti:
-
Passare alla posizione in cui è stato posizionato il database snapshot, in genere sul primo server/nodo di cluster (ad esempio:
/mnt/recovery-<recovery_id>
). -
Per drop e ricreare il database cloud, connettersi innanzitutto al database:
code language-bash mysql -h 127.0.0.1 -P <db-port> -p -u <db-user> <db-name>
-
Drop il database; al prompt MariaDB, immettere:
(Per Production)
code language-bash drop database <cluster ID>;
(Per Staging)
code language-bash drop database <cluster ID_stg>;
-
Dopo aver eliminato il database, ricrearlo:
code language-bash create database [database_name];
-
Immettere il comando seguente per importare snapshot:
(Per importare il backup del database da 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>
(Per importare il backup del database da 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>
(per importare un backup di database da qualsiasi altro ambiente)
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>
(per importare un backup di database da qualsiasi altro ambiente)
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>
Lettura correlata
Nella documentazione per gli sviluppatori: