Een DB-momentopname herstellen vanuit Staging of Production
In dit artikel wordt weergegeven hoe u een database snapshot vanaf Staging of Production op Adobe Commerce kunt herstellen in de Cloud Pro-infrastructuur.
>Als u de momentopname gedeeltelijk - voor voorbeeld moet herstellen, slechts het herstellen van de cataloguslijsten terwijl het verlaten van de ordetabellen intact-u moet met uw ontwikkelaar of DBA raadplegen.
Betrokken producten en versies
- Adobe Commerce op wolkeninfrastructuur, alle gesteunde versies
Kies de meest geschikte optie voor uw kwestie:
Methode 1: Breng de database dump over naar de lokale computer en importeer deze. meth2
Alvorens de momentopname in te voeren, moet u extra stappen nemen om het aangewezen gegevensbestand te halen alvorens met de stortplaatsinvoer te werk te gaan.
De stappen zijn:
-
Navigeer met SFTP naar de locatie waar de database snapshot is geplaatst, meestal op de eerste server/het eerste knooppunt van de cluster (bijvoorbeeld:
/mnt/recovery-<recovery_id>
).op Azure-Gebaseerde projecten:
Als uw project Azure-gebaseerd is (uw project-URL ziet er zo uit alshttps://us-a1.magento.cloud/projects/<cluster_id>
), wordt de momentopname geplaatst in:/mnt/shared/<cluster ID>/all-databases.sql.gz
/mnt/shared/<cluster ID_stg>/all-databases.sql.gz
Azure-Specifieke extractiestappen
voor productie:
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;"
voor het Opvoeren:
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;"
-
Kopieer de database dump file (bijvoorbeeld
<cluster ID>.sql.gz
for Production of<cluster ID_stg>.sql.gz
for Staging ) naar uw lokale computer. -
Zorg ervoor u opstelling SSH tunnel om met het gegevensbestand ver hebt te verbinden: SSH en sFTP: SSH tunnelingin onze ontwikkelaarsdocumentatie.
-
Maak verbinding met de database.
code language-bash mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name>
-
Drop de database; voer bij de MariaDB -prompt het volgende in:
(Voor Production)
code language-bash drop database <cluster ID>;
(Voor Staging)
code language-bash drop database <cluster ID_stg>;
-
Voer de volgende opdracht in om de snapshot te importeren:
(Voor 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>
(Voor 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>
Methode 2: Importeer de database dump rechtstreeks vanaf de server meth3
De stappen zijn:
-
Navigeer naar de locatie waar de database snapshot is geplaatst, meestal op de eerste server/node van de cluster (bijvoorbeeld:
/mnt/recovery-<recovery_id>
). -
Maak eerst verbinding met de database als u de clouddatabase wilt drop en opnieuw wilt maken:
code language-bash mysql -h 127.0.0.1 -P <db-port> -p -u <db-user> <db-name>
-
Drop de database; voer bij de MariaDB -prompt het volgende in:
(Voor Production)
code language-bash drop database <cluster ID>;
(Voor Staging)
code language-bash drop database <cluster ID_stg>;
-
Nadat u de database hebt neergezet, maakt u de database opnieuw:
code language-bash create database [database_name];
-
Voer de volgende opdracht in om de snapshot te importeren:
(Voor het importeren van de back-up van de database vanuit 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>
(Voor het importeren van de back-up van de database vanuit 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>
(Voor het importeren van een databaseback-up vanuit een andere omgeving)
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>
(Voor het importeren van een databaseback-up vanuit een andere omgeving)
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>
Gerelateerde lezing
In onze documentatie voor ontwikkelaars: