Återställ en DB-ögonblicksbild från Staging eller Production
I den här artikeln visas hur du återställer en DB snapshot från Staging eller Production på Adobe Commerce i molnPro-infrastrukturen.
>Om du behöver återställa ögonblicksbilden delvis - till exempel bara återställa katalogtabellerna utan att behöva ändra ordningsföljden - måste du rådfråga utvecklaren eller DBA.
Berörda produkter och versioner
- Adobe Commerce i molninfrastruktur, alla versioner som stöds
Välj det alternativ som passar bäst:
Metod 1: Överför databasen dump till den lokala datorn och importera den meth2
Innan du importerar ögonblicksbilden måste du vidta ytterligare åtgärder för att extrahera rätt databas innan du fortsätter med dumpimporten.
Stegen är:
-
Använd SFTP och navigera till den plats där databasen snapshot har placerats, vanligtvis på den första servern/noden i cluster (till exempel:
/mnt/recovery-<recovery_id>
).Azure-baserade projekt:
Om ditt projekt är Azure-baserat (d.v.s. din projekt-URL ser ut somhttps://us-a1.magento.cloud/projects/<cluster_id>
) placeras ögonblicksbilden i:/mnt/shared/<cluster ID>/all-databases.sql.gz
/mnt/shared/<cluster ID_stg>/all-databases.sql.gz
Azure-specifika extraheringssteg
För produktion:
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;"
För mellanlagring:
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;"
-
Kopiera databasen dump file (till exempel:
<cluster ID>.sql.gz
för Production eller<cluster ID_stg>.sql.gz
för Staging) till den lokala datorn. -
Kontrollera att du har konfigurerat SSH tunnel för fjärranslutning till databasen: SSH och sFTP: SSH tunneling i utvecklardokumentationen.
-
Anslut till databasen.
code language-bash mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name>
-
Drop databasen. Ange:MariaDB
(för Production)
code language-bash drop database <cluster ID>;
(för Staging)
code language-bash drop database <cluster ID_stg>;
-
Ange följande kommando för att importera snapshot:
(för 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>
(för 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>
Metod 2: Importera databasen dump direkt från servern meth3
Stegen är:
-
Navigera till platsen där databasen snapshot har placerats, vanligtvis på den första servern/noden i cluster (till exempel:
/mnt/recovery-<recovery_id>
). -
Om du vill drop och återskapa molndatabasen ansluter du först till databasen:
code language-bash mysql -h 127.0.0.1 -P <db-port> -p -u <db-user> <db-name>
-
Drop databasen. Ange:MariaDB
(för Production)
code language-bash drop database <cluster ID>;
(för Staging)
code language-bash drop database <cluster ID_stg>;
-
När du har släppt databasen återskapar du den:
code language-bash create database [database_name];
-
Ange följande kommando för att importera snapshot:
(Vid import av säkerhetskopiering av databas från 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>
(Vid import av säkerhetskopiering av databas från 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>
(För import av en säkerhetskopiering av en databas från någon annan miljö)
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>
(För import av en säkerhetskopiering av en databas från någon annan miljö)
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>
Relaterad läsning
I vår utvecklardokumentation: