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.
>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
- Adobe Commerce sur les infrastructures cloud, toutes les versions prises en charge
Choisissez la solution la plus adaptée à votre cas :
Méthode 1 : transférer le dump de la base de données vers votre ordinateur local et l'importer meth2
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 :
-
À 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;" -
Copiez le dump file de la base de données (par exemple :
<cluster ID>.sql.gzpour Production ou<cluster ID_stg>.sql.gzpour Staging) sur votre ordinateur local. -
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.
-
Connexion à la base de données.
code language-bash mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name> -
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>; -
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 :
-
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>). -
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> -
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>; -
Après avoir déposé la base de données, recréez la base de données :
code language-bash create database [database_name]; -
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 :