[Nur PaaS]{class="badge informative" title="Gilt nur für Adobe Commerce in Cloud-Projekten (von Adobe verwaltete PaaS-Infrastruktur) und lokale Projekte."}

Wiederherstellen eines DB-Snapshots aus Staging oder Production

Dieser Artikel zeigt, wie Sie eine DB-snapshot aus Staging oder Production in Adobe Commerce in der Cloud Pro-Infrastruktur wiederherstellen.

NOTE
Mit diesen Methoden wird der vollständige Snapshot“.
​>Wenn Sie den Snapshot () wiederherstellen müssen z. B. nur die Katalogtabellen wiederherstellen und dabei die Bestelltabellen intakt lassen, müssen Sie sich an Ihren Entwickler oder DBA wenden.

Betroffene Produkte und Versionen

Wählen Sie das für Ihren Fall am besten geeignete aus:

Methode 1: Übertragen Sie die dump auf Ihren lokalen Computer und importieren Sie sie meth2

NOTE
Das Format des Schnappschusses bei Azure-Projekten ist unterschiedlich und enthält andere Datenbanken, die nicht importiert können.
Bevor Sie den Snapshot importieren, müssen Sie zusätzliche Schritte ausführen, um die entsprechende Datenbank zu extrahieren bevor Sie mit dem Dump-Import fortfahren.

Die Schritte sind:

  1. Navigieren Sie mithilfe von SFTP zu dem Speicherort, an dem die snapshot platziert wurde, normalerweise auf dem ersten Server/Knoten Ihrer cluster (zum Beispiel: /mnt/recovery-<recovery_id>).

    Azure-basierte Projekte:
    Wenn Ihr Projekt auf Azure basiert (d. h. Ihre Projekt-URL sieht wie https://us-a1.magento.cloud/projects/<cluster_id> aus), wird der Schnappschuss in folgendem Verzeichnis platziert:

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

    Azure-spezifische Extraktionsschritte

    Für die 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 das 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. Kopieren Sie die dump file (z. B.: <cluster ID>.sql.gz für Production oder <cluster ID_stg>.sql.gz für Staging) auf Ihren lokalen Computer.

  3. Stellen Sie sicher, dass Sie in unserer Entwicklerdokumentation die SSH tunnel eingerichtet haben, um eine Remote-Verbindung zur Datenbank herzustellenSSH „and sFTP: SSH tunneling".

  4. Stellen Sie eine Verbindung zur Datenbank her.

    code language-bash
    mysql -h <db-host> -P <db-port> -p -u <db-user> <db-name>
    
  5. Drop der Datenbank; geben Sie bei der MariaDB ein:

    (für Production)

    code language-bash
    drop database <cluster ID>;
    

    (für Staging)

    code language-bash
    drop database <cluster ID_stg>;
    
  6. Geben Sie den folgenden Befehl ein, um die snapshot zu importieren:

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

Methode 2: Importieren des Datenbank-dump direkt vom Server meth3

Die Schritte sind:

  1. Navigieren Sie zu dem Speicherort, an dem die snapshot platziert wurde, normalerweise auf dem ersten Server/Knoten Ihrer cluster (zum Beispiel: /mnt/recovery-<recovery_id>).

  2. Um die Cloud-Datenbank zu drop und neu zu erstellen, stellen Sie zunächst eine Verbindung zur -Datenbank her:

    code language-bash
    mysql -h 127.0.0.1 -P <db-port> -p -u <db-user> <db-name>
    
  3. Drop der Datenbank; geben Sie bei der MariaDB ein:

    (für Production)

    code language-bash
    drop database <cluster ID>;
    

    (für Staging)

    code language-bash
    drop database <cluster ID_stg>;
    
  4. Erstellen Sie die Datenbank nach dem Ablegen neu:

    code language-bash
    create database [database_name];
    
  5. Geben Sie den folgenden Befehl ein, um die snapshot zu importieren:

    (Zum Importieren der Datenbanksicherung aus 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>
    

    (Zum Importieren der Datenbanksicherung aus 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>
    

    (Zum Importieren einer Datenbanksicherung aus einer beliebigen anderen Umgebung)

    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>
    

    (Zum Importieren einer Datenbanksicherung aus einer beliebigen anderen Umgebung)

    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>
    

Verwandtes Lesen

In unserer Entwicklerdokumentation:

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