[PaaS uniquement]{class="badge informative" title="S’applique uniquement aux projets Adobe Commerce on Cloud (infrastructure PaaS gérée par Adobe) et aux projets On-premise."}

Restaurer un instantané de base de données à partir de Staging ou Production

Cet article explique comment restaurer une base de données snapshot à partir de Staging ou Production sur l’infrastructure Adobe Commerce sur Cloud Pro.

NOTE
Ces méthodes restaurent l’instantané complet.
​>Si vous devez restaurer l'instantané partiellement, par exemple en restaurant uniquement les tables du catalogue tout en laissant les tables de commandes intactes, vous devez consulter votre développeur ou votre administrateur de base de données.

Produits et versions concernés

Choisissez la solution la plus adaptée à votre cas :

NOTE
Si vous importez un instantané dans un environnement d'intégration, tenez compte de la taille de la base de données. Les bases de données volumineuses peuvent entraîner une dégradation des performances après l’importation. Il est recommandé d’importer d’abord l’instantané dans un environnement d’évaluation ou local pour vérifier et réduire sa taille avant de le transférer vers l’intégration. En outre, envisagez de désactiver les tâches cron dans la branche d’intégration si des problèmes de performances surviennent après l’importation. Pour plus d’informations, voir Environnement d’intégration dans le guide Commerce sur les infrastructures cloud.

Méthode 1 : transférer le dump de la base de données vers votre ordinateur local et l'importer meth2

NOTE
Le format de l'instantané sur les projets Azure sera différent et contiendra d'autres bases de données qui ne peuvent pas être importées.
Avant d'importer l'instantané, vous devez prendre des mesures supplémentaires pour extraire la base de données appropriée avant de poursuivre l'importation de l'image mémoire.

Les étapes sont les suivantes :

  1. À l’aide de SFTP, accédez à l’emplacement où le snapshot de base de données a été placé, généralement sur le premier serveur/nœud de votre cluster (par exemple : /mnt/recovery-<recovery_id>).

    Projets basés sur Azure :
    Si votre projet est basé sur Azure (c’est-à-dire que l’URL de votre projet ressemble à https://us-a1.magento.cloud/projects/<cluster_id>), l’instantané est placé dans :

    • /mnt/shared/<cluster ID>/all-databases.sql.gz
    • /mnt/shared/<cluster ID_stg>/all-databases.sql.gz

    Étapes d’extraction spécifiques à Azure

    Pour la production :

    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;"
    

    Pour l’évaluation :

    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. Copiez le dump file de la base de données (par exemple : <cluster ID>.sql.gz pour Production ou <cluster ID_stg>.sql.gz pour Staging) sur votre ordinateur local.

  3. Vérifiez que vous avez configuré la SSH tunnel pour vous connecter à la base de données à distance : SSH et sFTP: SSH tunneling dans notre documentation destinée aux développeurs.

  4. Connexion à la base de données.

    code language-bash
    mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name>
    
  5. Drop la base de données ; à l’invite de MariaDB, saisissez :

    (Pour Production)

    code language-bash
    drop database <cluster ID>;
    

    (Pour Staging)

    code language-bash
    drop database <cluster ID_stg>;
    
  6. Saisissez la commande suivante pour importer le snapshot :

    (Pour 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>
    

    (Pour 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>
    

Méthode 2 : importer la base de données dump directement depuis le serveur meth3

Les étapes sont les suivantes :

  1. Accédez à l’emplacement où la snapshot de base de données a été placée, généralement sur le premier serveur/nœud de votre cluster (par exemple : /mnt/recovery-<recovery_id>).

  2. Pour drop et recréer la base de données cloud, connectez-vous d’abord à la base de données :

    code language-bash
    mysql -h 127.0.0.1 -P <db-port> -p -u <db-user> <db-name>
    
  3. Drop la base de données ; à l’invite de MariaDB, saisissez :

    (Pour Production)

    code language-bash
    drop database <cluster ID>;
    

    (Pour Staging)

    code language-bash
    drop database <cluster ID_stg>;
    
  4. Après avoir déposé la base de données, recréez la base de données :

    code language-bash
    create database [database_name];
    
  5. Saisissez la commande suivante pour importer le snapshot :

    (Pour importer la sauvegarde de la base de données depuis 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>
    

    (Pour importer la sauvegarde de la base de données depuis 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>
    

    (Pour importer une sauvegarde de base de données à partir de tout autre environnement)

    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>
    

    (Pour importer une sauvegarde de base de données à partir de tout autre environnement)

    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>
    

Lecture connexe

Dans notre documentation destinée aux développeurs :

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