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

Scegliere il caso più appropriato:

Metodo 1: trasferire il database dump nel computer locale e importarlo meth2

I passaggi sono i seguenti:

  1. 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;"
    
  2. Copiare il database dump file (ad esempio: <cluster ID>.sql.gz per Production o <cluster ID_stg>.sql.gz per Staging) nel computer locale.

  3. Assicurarsi di aver configurato SSH tunnel per la connessione al database in modalità remota: SSH and sFTP: SSH tunneling nella documentazione per gli sviluppatori.

  4. Connettersi al database.

    code language-sql
    mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name>
    
  5. 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>;
    
  6. 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:

  1. Passare alla posizione in cui è stato posizionato il database snapshot, in genere sul primo server/nodo di cluster (ad esempio: /mnt/recovery-<recovery_id>).

  2. 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>
    
  3. 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>;
    
  4. 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:

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a