MySQL-Datenbank mit mysqldump exportieren

Sie können das Dienstprogramm mysqldump direkt für Ihre MySQL-Datenbank ausführen und dabei alle erforderlichen Optionen verwenden. Wenn Sie die Daten jedoch exportieren, um sie in eine Cloud SQL-Datenbank zu importieren, verwenden Sie das Dienstprogramm mysqldump mit den folgenden Flags:

  • --databases Geben Sie eine explizite Liste der zu exportierenden Datenbanken an. Diese Liste darf die Systemdatenbanken (sys, mysql, performance_schema und information_schema) nicht enthalten.
  • --hex-blob Wenn Ihre Datenbank Binärfelder enthält, müssen Sie dieses Flag verwenden, damit die Binärfelder korrekt importiert werden.
  • --single-transaction Startet eine Transaktion vor der Ausführung. Anstatt die gesamte Datenbank zu sperren, kann mysqldump die Datenbank so im aktuellen Zustand lesen, was zu einem konsistenten Daten-Dump führt.
  • --routines Zum Einbeziehen gespeicherter Verfahren und Funktionen.
  • Wenn Sie mysqldump Version 8 oder höher verwenden, um MySQL-Datenbanken mit Versionen vor 8 zu exportieren:
    --column-statistics=0

    Mit diesem Flag wird die Tabelle COLUMN_STATISTICS aus dem Datenbankexport entfernt, um den Fehler Unknown table 'COLUMN_STATISTICS' in information_schema (1109) zu vermeiden. Weitere Informationen finden Sie unter Probleme diagnostizieren.

Außerdem wird empfohlen, die folgenden Flags zu verwenden:

  • --no-autocommit
  • --default-character-set=utf8mb4
  • --master-data

Führen Sie den folgenden Befehl auf einem Rechner aus, der über eine Netzwerkverbindung zu Ihrem MySQL-Server verfügt:

    mysqldump \
        -h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
        --databases [DBS]  \
        --hex-blob \
        --no-autocommit \
        --default-character-set=utf8mb4 \
        --master-data=1  \
        --single-transaction \
        --routines \
        | gzip \
        | gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz

Wenn die Quelle der Migration ein Relational Database Service (RDS) für MySQL ist:

  • Das Attribut master-data wird nicht unterstützt.
  • Wenn Ihr Quelldatenbankserver GTID unterstützt, verwenden Sie das Attribut --set-gtid-purged=on. Andernfalls verwenden Sie dieses Attribut nicht.
  • Wenn Sie einen manuellen Dump verwenden, um Ihre Daten zu migrieren, führen Sie die Migration mit aktivierter GTID aus.

Der Befehl kann wie im folgenden Beispiel aussehen:

    mysqldump \
        -h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
        --databases [DBS]  \
        --hex-blob  \
        --no-autocommit \
        --default-character-set=utf8mb4 \
        --set-gtid-purged=on \
        --single-transaction \
        --routines \ 
        | gzip \
        | gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz

Außerdem sollten Sie RDS-Instanzen so konfigurieren, dass binäre Logs länger aufbewahrt werden. Der Befehl kann wie im folgenden Beispiel aussehen:

    # Sets the retention period to one week.
    call mysql.rds_set_configuration('binlog retention hours', 168);

Ersetzen Sie [PROPERTIES_IN_BRACKETS] durch die folgenden Werte:

Attribut Wert
[SOURCE_ADDR] Die IPv4-Adresse oder der Hostname für den Quelldatenbankserver.
[SOURCE_PORT] Der Port für den Quelldatenbankserver.
[USERNAME] Das MySQL-Nutzerkonto.
[DBS] Eine durch Leerzeichen getrennte Liste der Datenbanken auf dem Quelldatenbankserver, die in den Dump aufgenommen werden sollen. Verwenden Sie den MySQL-Befehl SHOW DATABASES, um Ihre Datenbanken aufzulisten.
[BUCKET_NAME] Der vom Nutzer erstellte Bucket in Cloud Storage, der zum Speichern der Dumpdatei verwendet wird (z. B. replica-bucket).
[DUMP_FILENAME] Der Dateiname des Dumps, der mit der Dateierweiterung .gz endet (z. B. source-database.sql.gz).

Nächste Schritte

Eine vollständige Schritt-für-Schritt-Anleitung zur Migration finden Sie unter Erste Schritte mit Cloud SQL for MySQL-Migrationen.