[Solo PaaS]{class="badge informative" title="Applicabile solo ai progetti Adobe Commerce on Cloud (infrastruttura PaaS gestita da Adobe) e ai progetti on-premise."}

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.

NOTE
Questi metodi ripristineranno lo snapshot completo.
​>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

Scegliere il caso più appropriato:

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

NOTE
Il formato dello snapshot nei progetti Azure sarà diverso e conterrà altri database che non possono essere importati.
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:

  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>).

    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;"
    
  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-bash
    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-bash
    drop database <cluster ID>;
    

    (Per Staging)

    code language-bash
    drop database <cluster ID_stg>;
    
  6. 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:

  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-bash
    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-bash
    drop database <cluster ID>;
    

    (Per Staging)

    code language-bash
    drop database <cluster ID_stg>;
    
  4. Dopo aver eliminato il database, ricrearlo:

    code language-bash
    create database [database_name];
    
  5. 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:

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