Freigeben über


Bekannte Probleme mit Migrationen zu Azure Database for MySQL

In den folgenden Abschnitten werden bekannte Probleme in Bezug auf Onlinemigrationen zu Azure Database for MySQL beschrieben.

Schema-Migrationsproblem für v8.0 MySQL Flexible Server-Ziel

  • Fehler: Eine Migration zu einer MySQL Flexible Server-Instanz mit Modulversion 8.0.30 oder höher kann fehlschlagen, wenn das Feature zum Generieren von unsichtbaren Primärschlüsseln für InnoDB-Tabellen aktiviert wird (siehe MySQL :: MySQL 8.0 Referenzhandbuch :: 13.1.20.11 Generierte unsichtbare Primärschlüssel). Fehler beim Migrieren des Tabellenschemas von der Quelle zum Ziel, beim Anwenden von Änderungen während der Replikationsphase von Onlinemigrationen, beim Wiederholen einer Migration oder beim Migrieren zu einem Ziel, in dem das Schema manuell migriert wurde.

    Mögliche Fehlermeldung:

    • „Unbekannter Fehler.“
    • „Fehler beim Generieren des unsichtbaren Primärschlüssels.“ Spalte mit automatischer Inkrementierung ist bereits vorhanden.“
    • „Die Spalte ‚my_row_id‘ in der Zieltabelle ‚Tabellenname‘ in der Datenbank ‚Datenbank‘ existiert nicht in der Quelltabelle.“

    Einschränkung: Die Migration zur MySQL Flexible Server-Instanz, in der sql_generate_invisible_primary_key aktiviert ist, wird von DMS nicht unterstützt.

    Problemumgehung: Legen Sie den Serverparameter sql_generate_invisible_primary_key für die MySQL Flexible Server-Zielinstanz auf AUS fest. Der Serverparameter befindet sich im Blatt „Serverparameter“ im Bereich „Alle“ für die MySQL Flexible Server-Zielinstanz. Legen Sie außerdem die Zieldatenbank ab und beginnen Sie mit der DMS-Migration, damit keine nicht übereinstimmenden Schemas vorhanden sind.

Inkompatibler SQL-Modus

Einer oder mehrere inkompatible SQL-Modi können viele verschiedene Fehler verursachen. Nachfolgend finden Sie einen Beispielfehler zusammen mit Servermodi, die bei Auftreten dieses Fehlers untersucht werden sollten.

  • Fehler: Beim Vorbereiten der Tabelle „{table}“ in der Datenbank „{database}“ auf dem Server „{server}“ für die Migration während der Aktivität „{activity}“ ist ein Fehler aufgetreten. Daher wird diese Tabelle nicht migriert.

    Einschränkung: Dieser Fehler tritt auf, wenn einer der unten aufgeführten SQL-Modi auf einem Server, aber nicht auf dem anderen Server festgelegt ist.

    Problemumgehung:

    • NO_ZERO_DATE

      Wenn der Standardwert für ein Datum in einer Tabelle oder den Daten auf der Quelle 0000-00-00 lautet und auf dem Zielserver der SQL-Modus NO_ZERO_DATE festgelegt ist, schlägt die Schema- und/oder Datenmigration fehl. Es gibt zwei mögliche Problemumgehungen. Die erste besteht darin, die Standardwerte der Spalten als NULL oder ein gültiges Datum zu ändern. Die zweite Option besteht darin, den SQL-Modus NO_ZERO_DATE aus der globalen SQL-Modusvariable zu entfernen.

    • NO_AUTO_CREATE_USER

      Beim Ausführen von Migrationen vom MySQL-Quellserver 5.7 zu MySQL-Zielserver 8.0, die die Schemamigration von Routinen durchführen, treten Fehler auf, wenn no_auto_create_user SQL-Modus auf Dem MySQL-Quellserver 5.7 festgelegt ist.

Binlog-Aufbewahrungsprobleme

  • Fehler: Schwerwiegender Fehler beim Lesen des Binlogs. Dieser Fehler kann darauf hinweisen, dass der Binlog-Dateiname und/oder die Anfangsposition falsch angegeben wurden.

    Einschränkung: Dieser Fehler tritt auf, wenn der Binlog-Aufbewahrungszeitraum zu kurz ist.

    Problemumgehung: Es gibt mehrere Variablen, die in diesem Fall konfiguriert werden können: binlog_expire_logs_seconds bestimmt den Aufbewahrungszeitraum, und das Löschen von Binlogs kann vollständig verhindert werden, indem binlog_expire_logs_auto_purge deaktiviert wird. MySQL 5.7 hat veraltete Systemvariablen expire_logs_days.

Timeout beim Abrufen von Tabellensperren

  • Fehler: Beim Abrufen einer Lesesperre auf dem Server „{server}“ zur Erstellung einer konsistenten Ansicht ist eine Ausnahme aufgetreten.

    Einschränkung: Dieser Fehler tritt auf, wenn beim Abrufen von Sperren für alle Tabellen bei aktivierter Transaktionskonsistenz eine Zeitüberschreitung auftritt.

    Problemumgehung: Stellen Sie sicher, dass die ausgewählten Tabellen nicht gesperrt sind oder dass keine zeitintensiven Transaktionen darin ausgeführt werden.

Schreiben von mehr als 4 MB Daten in Azure Storage

  • Fehler: Der Anforderungstext ist zu lang und überschreitet den maximal zulässigen Grenzwert.

    Einschränkung: Dieser Fehler tritt wahrscheinlich auf, wenn zu viele Tabellen migriert werden müssen (>10.000). Für jeden Aufruf des Azure Storage-Diensts gibt es einen Grenzwert von 4 MB.

    Problemumgehung: Wenden Sie sich an den Support, indem Sie eine Supportanfrage erstellen. Ihnen können benutzerdefinierte Skripts bereitgestellt werden, mit denen Sie direkt auf die REST-APIs zugreifen können.

Problem mit doppelter Schlüsseleingabe

  • Fehler: Der Fehler ist häufig ein Symptom für Zeitüberschreitungen, Netzwerkprobleme oder Zielskalierung.

    Potenzielle Fehlermeldung: Ein Batch konnte aufgrund eines vom Zielserver ausgelösten SQL-Fehlers nicht in die Tabelle „{table}“ geschrieben werden. Im Kontext enthielt der Batch eine Teilmenge von Zeilen, die von der folgenden Quellabfrage zurückgegeben werden.

    Einschränkung: Dieser Fehler kann durch eine Zeitüberschreitung oder eine unterbrochene Verbindung zum Ziel verursacht werden, was zu doppelten Primärschlüsseln führt. Es kann auch mit mehreren gleichzeitig ausgeführten Migrationen zum Ziel zusammenhängen, oder dem Benutzer, der Test-Workloads auf dem Ziel ausgeführt hat, während die Migration ausgeführt wird. Darüber hinaus benötigt das Ziel möglicherweise eindeutige Primärschlüssel, auch wenn sie nicht für die Quelle erforderlich sind.

    Problemumgehung: Zur Behebung dieses Problems müssen Sie sicherstellen, dass keine doppelten Migrationen ausgeführt werden und dass die Quellprimärschlüssel eindeutig sind. Wenn dieser Fehler weiterhin auftritt, wenden Sie sich an den Support, indem Sie eine Supportanfrage erstellen. Ihnen können benutzerdefinierte Skripts bereitgestellt werden, mit denen Sie direkt auf die REST-APIs zugreifen können.

Fehler replizierter Vorgang hat falsch zugeordnete Zeilen

  • Fehler: Bei der Onlinemigration wird die erwartete Anzahl der Änderungen nicht repliziert.

    Potenzielle Fehlermeldung: Beim Anwenden von Datensätzen auf den Zielserver, die aus dem binären Protokoll des Quellservers gelesen wurden, ist ein Fehler aufgetreten. Die Änderungen wurden im Binärprotokoll "{mysql-bin.log}" und der Position "{position}" gestartet und am Binärprotokoll "{mysql-bin.log}" und der Position "{position}" beendet. Alle Datensätze auf dem Quellserver vor der Position "{position}" im Binärprotokoll "{mysql-bin.log}" wurden an das Ziel gebunden.

    Einschränkung: Auf der Quelle gab es Einfüge- und Löschanweisungen in einer Tabelle, und die Löschungen erfolgten durch einen offensichtlichen eindeutigen Index.

    Problemumgehung: Es wird empfohlen, die Tabelle manuell zu migrieren.

Fehler beim Abschneiden von Tabellendaten

  • Fehler: Die Enumerationsspalte hat einen NULL-Wert in einer oder mehreren Zeilen, und der SQL-Zielmodus ist auf „streng“ festgelegt.

    Potenzielle Fehlermeldung: Ein Batch konnte aufgrund eines Datenabschneidefehlers nicht in die Tabelle „{table}“ geschrieben werden. Stellen Sie sicher, dass die Daten für den Datentyp der MySQL-Tabellenspalte nicht zu groß sind. Wenn es sich bei dem Spaltentyp um eine Enumeration handelt, stellen Sie sicher, dass der SQL-Modus nicht als TRADITIONAL, STRICT_TRANS_TABLES oder STRICT_ALL_TABLES festgelegt ist und für Quelle und Ziel identisch ist.

    Einschränkung: Dieser Fehler tritt auf, wenn historische Daten mit einer bestimmten Einstellung auf den Quellserver geschrieben wurden. Sobald diese Einstellung jedoch geändert wird, können die Daten nicht mehr verschoben werden.

    Problemumgehung: Zur Behebung des Problems wird empfohlen, den SQL-Zielmodus auf „nicht streng“ zu ändern oder alle NULL-Werte in gültige Werte umzuwandeln.

Erstellen eines Objektfehlers

  • Fehler: Es ist ein Fehler aufgetreten, nachdem die Ansichtsüberprüfung fehlgeschlagen ist.

    Einschränkung: Dieser Fehler tritt auf, wenn versucht wird, eine Ansicht zu migrieren, und die Tabelle, auf die die Ansicht verweisen soll, nicht gefunden werden kann.

    Problemumgehung: Es wird empfohlen, Ansichten manuell zu migrieren.

Tabelle kann nicht gefunden werden

  • Fehler: Es ist ein Fehler aufgetreten, da die referenzierte Tabelle nicht gefunden werden kann.

    Potenzielle Fehlermeldung: Die Pipeline konnte das Schema des Objekts „{object}“ für die Aktivität „{activity}“ aufgrund einer Abfrageausführung nicht mithilfe der Strategie MySqlSchemaMigrationViewUsingTableStrategy erstellen.

    Einschränkung: Dieser Fehler kann auftreten, wenn die Ansicht auf eine Tabelle verweist, die gelöscht oder umbenannt wurde, oder wenn die Ansicht mit falschen oder unvollständigen Informationen erstellt wurde. Dieser Fehler kann auftreten, wenn eine Teilmenge von Tabellen migriert wird, aber die Tabellen, von denen sie abhängen, sind nicht.

    Problemumgehung: Es wird empfohlen, Ansichten manuell zu migrieren. Überprüfen Sie, ob alle Tabellen, auf die in Fremdschlüsseln verwiesen wird, und CREATE VIEW-Anweisungen für die Migration ausgewählt sind.

Alle poolierten Verbindungen sind unterbrochen

  • Fehler: Alle Verbindungen auf dem Quellserver wurden unterbrochen.

    Einschränkung: Dieser Fehler tritt auf, wenn alle Verbindungen, die zu Beginn der anfänglichen Last aufgebaut wurden, aufgrund eines Serverneustarts, von Netzwerkproblemen, starkem Datenverkehr auf dem Quellserver oder anderen vorübergehenden Problemen verloren gehen. Dieser Fehler kann nicht wiederhergestellt werden. Darüber hinaus tritt dieser Fehler auf, wenn versucht wird, einen Server während des Wartungsfensters zu migrieren.

    Problemumgehung: Die Migration muss neu gestartet werden, und es wird empfohlen, die Leistung des Quellservers zu erhöhen. Ein weiteres Problem sind Skripts, die zeitintensive Verbindungen beenden, wodurch die jeweiligen Skripts nicht mehr funktionieren.

Konsistente Momentaufnahme unterbrochen

Einschränkung: Dieser Fehler tritt auf, wenn der Kunde während der anfänglichen Last der Migrationsinstanz DDL ausführt.

Problemumgehung: Zur Behebung dieses Problems wird empfohlen, während der anfänglichen Last keine DDL-Änderungen vorzunehmen.

Fremdschlüssel-Einschränkung

  • Fehler: Dieser Fehler tritt auf, wenn eine Änderung des referenzierten Fremdschlüsseltyps aus der Tabelle vorliegt.

    Potenzielle Fehlermeldung: Die verweisende Spalte „{pk column 1}“ und die referenzierte Spalte „{fk column 1}“ in der Fremdschlüsseleinschränkung „{key}“ sind inkompatibel.

    Einschränkung: Der Fehler kann dazu führen, dass die Schemamigration einer Tabelle fehlschlägt, da die PK-Spalte in Tabelle 1 möglicherweise nicht mit der FK-Spalte in Tabelle 2 kompatibel ist.

    Problemumgehung: Zur Behebung dieses Problems wird empfohlen, den Fremdschlüssel zu verwerfen und nach Abschluss des Migrationsprozesses neu zu erstellen.