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.
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
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>
). NOTA: se il progetto è basato su Azure, ad esempio l'URL del progetto è simile a https://us-a1.magento.cloud/projects/<cluster_id>, lo snapshot verrà inserito in/mnt/shared/<cluster ID>/all-databases.sql.gz
o/mnt/shared/<cluster ID_stg>/all-databases.sql.gz
.NOTA: il formato dello snapshot nei progetti di Azure sarà diverso e conterrà altri database che non possono essere importati. Prima di importare la copia istantanea è necessario eseguire ulteriori operazioni per estrarre il database appropriato prima di importare l'immagine.
Per la produzione:
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;"
Per staging:
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;"
-
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-sql mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name>
-
Drop il database; al prompt MariaDB, immettere:
(Per Production)
code language-sql drop database <cluster ID>;
(Per Staging)
code language-sql drop database <cluster ID_stg>;
-
Immettere il comando seguente per importare snapshot:
(Per 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>
(Per 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>
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-sql 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-sql drop database <cluster ID>;
(Per Staging)
code language-sql drop database <cluster ID_stg>;
-
Immettere il comando seguente per importare snapshot:
(Per importare il backup del database da 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>
(Per importare il backup del database da 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>
(per importare un backup di database da qualsiasi altro ambiente)
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>
(per importare un backup di database da qualsiasi altro ambiente)
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>
Lettura correlata
Nella documentazione per gli sviluppatori: