MySQL-Instanz exportieren
Exportieren Sie eine MySQL-Instanz mit den Dumputilitys von MySQL Shell in einen Objektspeicher-Bucket. Mit dem Datenimportfeature können Sie dann Daten aus dem Objektspeicher-Bucket in ein DB-System importieren, das in derselben Region vorhanden ist.
Verwenden Sie eines der folgenden Dumputilitys:
util.dumpInstance(outputUrl[, options])
: MySQL-Instanzexportutility, das alle kompatiblen Schemas in einen Objektspeicher-Bucket oder in lokale Dateien exportiert. Standardmäßig exportiert dieses Utility Benutzer, Ereignisse, Routinen und Trigger. Siehe Dump-Utilitys.util.dumpSchemas(schemas, outputUrl[, options])
: MySQL-Schemaexportutility, das ausgewählte Schemas in einen Objektspeicher-Bucket oder in lokale Dateien exportiert.util.dumpTables(schema, tables, outputUrl[, options])
: Exportutility der Tabelle MySQL, das ausgewählte Tabellen eines Schemas in einen Objektspeicher-Bucket oder in lokale Dateien exportiert.
Führen Sie beim Exportieren von Daten Kompatibilitätsprüfungen für die Schemas aus. Bei Problemen bricht das Dumputility den Export ab und erstellt eine detaillierte Liste der Probleme und schlägt Schritte zur Behebung vor. Wenn beim Exportieren von Daten eine Verbindungsunterbrechung auftritt, müssen Sie das Dumputility erneut ausführen. Sie können den Export von Daten nicht anhalten und fortsetzen.
MySQL-Shell verwenden
Mit dem Utility MySQL der Shell dumpInstance
können Sie eine MySQL-Instanz in einen Objektspeicher-Bucket exportieren.
- MySQL Shell 8.0.27 oder höher. Mit MySQL Shell 8.0.27 oder höher erstellte Exporte können nicht mit früheren Versionen von MySQL Shell importiert werden. Die neueste Version von MySQL Shell wird empfohlen.
- Zugriff auf Object Storage und einen vorhandenen Bucket.
- Eine gültige Konfigurationsdatei. Wenn Sie die Befehlszeilenschnittstelle (CLI) im Standardverzeichnis installiert und konfiguriert haben, ist eine gültige Konfigurationsdatei vorhanden. Wenn Sie die CLI nicht installiert und konfiguriert haben, müssen Sie sie entweder installieren oder manuell eine Konfigurationsdatei erstellen. Weitere Informationen finden Sie unter SDK- und CLI-Konfigurationsdatei.
Kompatibilitätsprüfungen
Der HeatWave-Service verfügt über verschiedene sicherheitsbezogene Einschränkungen, die in einer MySQL-Instanz nicht vorhanden sind. Verwenden Sie die Option ocimds
des Dumputilitys, um Kompatibilitätsprüfungen für die ausgegebenen Daten durchzuführen. Bei Problemen bricht das Utility den Dump ab, erstellt eine detaillierte Liste der Probleme und schlägt Schritte zur Behebung vor.
Der folgende Befehl zeigt, wie Sie Kompatibilitätsprüfungen mit der Option ocimds
im Modus dryrun
durchführen. Bei einigen Problemen, die mit der Option ocimds
gefunden werden, müssen Sie möglicherweise das Schema manuell bearbeiten, damit es in den HeatWave-Service geladen werden kann.
util.dumpInstance("", {mode: "dryrun", ocimds: true})
Nachdem Sie die Kompatibilitätsprobleme und Kompatibilitätsoptionen identifiziert haben, können Sie die Optionen im Befehl angeben, der die Daten exportiert.
util.dumpInstance("<BucketPrefix>", {osBucketName: "<MDSBucket>", ocimds: true,
compatibility: ["force_innodb", "strip_definers", "strip_restricted_grants",
"skip_invalid_accounts", "strip_tablespaces", "ignore_missing_pks"] } )
Mit den folgenden kommagetrennten Kompatibilitätsoptionen können Sie die exportierten Daten automatisch ändern. Dadurch werden einige dieser Kompatibilitätsprobleme behoben:
force_innodb
: Der HeatWave-Service unterstützt nur die Speicher-Engine InnoDB. Diese Option ändert dieENGINE
-Klausel vonCREATE TABLE
-Anweisungen, die inkompatible Speicher-Engines verwenden, und ersetzt sie durch InnoDB.strip_definers
: Entfernt die Klausel"DEFINER=account"
aus Ansichten, Routinen, Ereignissen und Triggern. Der HeatWave-Service erfordert spezielle Berechtigungen, um diese Objekte mit einem anderen Definer als dem Benutzer zu erstellen, der das Schema lädt. Durch Entfernen derDEFINER
-Klausel werden diese Objekte mit diesem Standard-Definer erstellt. Für Ansichten und Routinen wurde dieSQL SECURITY
-Klausel vonDEFINER
inINVOKER
geändert. Dadurch wird sichergestellt, dass die Zugriffsberechtigungen des Accounts verwendet werden, der diese abfragt oder aufruft, und nicht die des Benutzers, der sie erstellt hat. Wenn für Ihr Datenbanksicherheitsmodell Ansichten und Routinen mit mehr Berechtigungen als für den jeweiligen Invoker erforderlich sind, müssen Sie das Schema manuell ändern, bevor Sie es laden. Siehe DEFINER und SQL-Sicherheit.strip_restricted_grants
: Einige Berechtigungen sind im HeatWave-Service eingeschränkt. Berechtigungen wieRELOAD
,FILE
,SUPER
,BINLOG_ADMIN
undSET_USER_ID
. Sie können keine Benutzer erstellen, denen diese Berechtigungen erteilt werden. Mit dieser Option werden diese Berechtigungen aus Dumps vonGRANT
-Anweisungen entfernt.skip_invalid_accounts
: Sie können keinen Benutzer exportieren, für den kein Kennwort definiert ist. Mit dieser Option werden solche Benutzer übersprungen.strip_tablespaces
: Der HeatWave-Service weist einige Einschränkungen für Tablespaces auf. Mit dieser Option wird die OptionTABLESPACE
ausCREATE TABLE
-Anweisungen geleert, sodass alle Tabellen in ihren Default Tablespaces erstellt werden.- Primärschlüssel-Flags:
create_invisible_pks
: Primärschlüssel sind für High Availability-DB-Systeme erforderlich. Wenn Sie Daten zur Verwendung in einem hochverfügbaren DB-System exportieren möchten, fügen Sie Primärschlüssel hinzu, wenn sie nicht für die Tabellen definiert sind. Mit diesem Kompatibilitäts-Flag werden unsichtbare Primärschlüssel zu jeder Tabelle hinzugefügt, für die sie erforderlich sind. Siehe Voraussetzungen.ignore_missing_pks
: Wenn Sie nicht in ein High-Availability-DB-System importieren möchten, ignoriert dieses Kompatibilitäts-Flag fehlende Primärschlüssel in Ihrem Dump.
Außerdem werden die Optionen DATA DIRECTORY
, INDEX DIRECTORY
und ENCRYPTION
in CREATE TABLE
-Anweisungen in DDL-Skripten immer auskommentiert, wenn die Option ocimds
aktiviert ist.
Wenn Sie eine ältere Version von MySQL exportieren möchten, z.B. 5.7.9, und wenn Sie eine MySQL-Shellversion verwenden, die älter als 8.0.30 ist, wird empfohlen, das Upgradeprüfutility MySQL Shell auszuführen, um einen Bericht über alle potenziellen Probleme bei Ihrer Migration zu generieren. Siehe Upgrade-Checker-Utility.
Verwandte Themen