Share via


Bekannte Probleme bei Migrationen zu Azure Database for MySQL

Bekannte Probleme im Zusammenhang mit Migrationen zu Azure Database for MySQL werden in den folgenden Abschnitten beschrieben.

Schemamigrationsproblem für das MySQL Flexible Server-Ziel v8.0

  • Fehler: Eine Migration zu einem MySQL Flexible Server mit Engine-Version 8.0.30 oder höher kann fehlschlagen, wenn das Feature zum Generieren unsichtbarer Primärschlüssel für InnoDB-Tabellen aktiviert ist (siehe MySQL :: MySQL 8.0 Reference Manual :: 13.1.20.11 Generated Invisible Primary Keys). Der Fehler kann beim Migrieren des Tabellenschemas von der Quelle zum Ziel, beim Anwenden von Änderungen während der Replikationsphase von Onlinemigrationen, beim erneuten Versuch einer Migration oder bei der Migration zu einem Ziel auftreten, bei dem das Schema manuell migriert wurde.

    Mögliche Fehlermeldung:

    • "Unbekannter Fehler."
    • "Fehler beim Generieren des unsichtbaren Primärschlüssels. Die Automatische Inkrementspalte ist bereits vorhanden."
    • "Die Spalte 'my_row_id' in der Zieltabelle 'Tabellenname' in der Datenbank 'Datenbank' ist in der Quelltabelle nicht vorhanden."

    Einschränkung: Die Migration zu MySQL Flexible Server instance, bei 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 das MySQL Flexible Server-Ziel auf OFF fest. Der Serverparameter befindet sich auf dem Blatt Serverparameter auf der Registerkarte Alle für den MySQL Flexible Server-Ziel. Löschen Sie außerdem die Zieldatenbank, und beginnen Sie mit der DMS-Migration, um keine nicht übereinstimmenden Schemas zu haben.

Inkompatibler SQL-Modus

Ein oder mehrere inkompatible SQL-Modi können viele verschiedene Fehler verursachen. Im Folgenden finden Sie einen Beispielfehler zusammen mit den Servermodi, die überprüft werden sollten, wenn dieser Fehler auftritt.

  • Fehler: Fehler beim Vorbereiten der Tabelle '{table}' in der Datenbank '{database}' auf server '{server}' für die Migration während der Aktivität '{activity}'. Daher wird diese Tabelle nicht migriert.

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

    Problemumgehung:

    NO_ZERO_DATE NO_AUTO_CREATE_USER
    Wenn der Standardwert für ein Datum in einer Tabelle oder die Daten in der Quelle 0000-00-00 ist und der Zielserver den NO_ZERO_DATE SQL-Modus festgelegt hat, schlägt die Schema- und/oder Datenmigration fehl. Es gibt zwei mögliche Problemumgehungen: Die erste besteht darin, die Standardwerte der Spalten in NULL oder ein gültiges Datum zu ändern. Die zweite Option besteht darin, den NO_ZERO_DATE SQL-Modus aus der globalen SQL-Modusvariablen zu entfernen. Beim Ausführen von Migrationen von 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 MySQL-Quellserver 5.7 festgelegt ist.

Probleme mit der Binlog-Aufbewahrung

  • Fehler: Schwerwiegender Fehler beim Lesen von Binlog. Dieser Fehler kann darauf hindeuten, dass der Name der Binlog-Datei und/oder die Anfangsposition falsch angegeben wurden.

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

    Problemumgehung: In diesem Fall können mehrere Variablen konfiguriert werden: binlog_expire_logs_seconds bestimmt den Aufbewahrungszeitraum, und das Löschen von Binlog kann vollständig verhindert werden, indem binlog_expire_logs_auto_purge deaktiviert wird. MySQL 5.7 verfügt über veraltete Systemvariablen expire_logs_days.

Timeout beim Abrufen von Tabellensperren

  • Fehler: Beim Versuch, eine Lesesperre auf dem Server '{server}' für eine konsistente Ansichtserstellung zu erhalten, ist eine Ausnahme aufgetreten.

    Einschränkung: Dieser Fehler tritt auf, wenn beim Abrufen von Sperren für alle Tabellen ein Timeout auftritt, wenn transaktionskonsistenz aktiviert ist.

    Problemumgehung: Stellen Sie sicher, dass die ausgewählten Tabellen nicht gesperrt sind oder dass keine transaktionen mit langer Ausführungszeit für sie ausgeführt werden.

Schreiben von mehr als 4 MB Daten in Azure Storage

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

    Einschränkung: Dieser Fehler tritt wahrscheinlich auf, wenn zu viele Tabellen migriert werden können (>10.000). Für jeden Aufruf des Azure Storage-Diensts gilt ein Grenzwert von 4 MB.

    Problemumgehung: Wenden Sie sich an den Support, indem Sie eine Supportanfrage erstellen , und wir können benutzerdefinierte Skripts bereitstellen, um direkt auf unsere REST-APIs zuzugreifen.

Problem mit doppelten Schlüsseleingaben

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

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

    Einschränkung: Dieser Fehler kann durch ein Timeout oder eine unterbrochene Verbindung mit dem Ziel verursacht werden, was zu doppelten Primärschlüsseln führt. Dies kann auch auf mehrere Gleichzeitige Migrationen zum Ziel oder auf den Benutzer, der Testworkloads auf dem Ziel ausgeführt wird, während die Migration ausgeführt wird, zusammenhängen. Darüber hinaus kann es für das Ziel erforderlich sein, dass Primärschlüssel eindeutig sind, obwohl dies in der Quelle nicht erforderlich ist.

    Problemumgehung: Um dieses Problem zu beheben, stellen Sie sicher, dass keine doppelten Migrationen ausgeführt werden und dass die Quellquellschlüssel eindeutig sind. Wenn der Fehler weiterhin auftritt, wenden Sie sich an den Support, indem Sie eine Supportanfrage erstellen , und wir können benutzerdefinierte Skripts bereitstellen, um direkt auf unsere REST-APIs zuzugreifen.

Fehler beim replizierten Vorgang: Fehlerhafte Zeilen

  • Fehler: Bei der Onlinemigration kann die erwartete Anzahl von Änderungen nicht repliziert werden.

    Potenzielle Fehlermeldung: Fehler beim Anwenden von Datensätzen auf den Zielserver, die aus dem binären Protokoll des Quellservers gelesen wurden. Die Änderungen begannen im binären Protokoll "{mysql-bin.log}" und der Position "{position}" und endeten mit dem binären Protokoll "{mysql-bin.log}" und der Position "{position}". Alle Datensätze auf dem Quellserver vor der Position "{position}" im binären Protokoll "{mysql-bin.log}" wurden an das Ziel committet.

    Einschränkung: In der Quelle gab es insert- und delete-Anweisungen 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 strict festgelegt.

    Potenzielle Fehlermeldung: Ein Batch konnte aufgrund eines Datenkürzungsfehlers 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 der Spaltentyp eine Enumeration ist, stellen Sie sicher, dass der SQL-Modus nicht auf TRADITIONELL, STRICT_TRANS_TABLES oder STRICT_ALL_TABLES festgelegt ist und für Quelle und Ziel identisch ist.

    Einschränkung: Der Fehler tritt auf, wenn Verlaufsdaten auf den Quellserver geschrieben wurden, wenn sie eine bestimmte Einstellung hatten, aber wenn sie geändert werden, können Daten nicht verschoben werden.

    Problemumgehung: Um das Problem zu beheben, wird empfohlen, den SQL-Zielmodus in nicht strikt zu ändern oder alle NULL-Werte in gültige Werte zu ändern.

Erstellen eines Objektfehlers

  • Fehler: Nach dem Fehler bei der Überprüfung der Ansicht ist ein Fehler aufgetreten.

    Einschränkung: Der 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 nicht gefunden

  • Fehler: Ein Fehler ist aufgetreten, da die verweisende Tabelle nicht gefunden wurde.

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

    Einschränkung: Der 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, die Tabellen, von denen sie abhängen, jedoch nicht.

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

Alle gepoolten Verbindungen sind unterbrochen.

  • Fehler: Alle Verbindungen auf dem Quellserver wurden unterbrochen.

    Einschränkung: Der Fehler tritt auf, wenn alle Verbindungen, die zu Beginn der anfänglichen Last hergestellt werden, aufgrund von Serverneustarts, Netzwerkproblemen, hohem 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 während des Wartungsfensters versucht wird, einen Server 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 lange ausgeführte Verbindungen beenden und verhindern, dass diese Skripts funktionieren.

Konsistente Momentaufnahme beschädigt

Einschränkung: Der Fehler tritt auf, wenn der Kunde während des anfänglichen Ladens der Migration instance DDL ausführt.

Problemumgehung: Um dieses Problem zu beheben, wird empfohlen, während des anfänglichen Ladens keine DDL-Änderungen vorzunehmen.

Fremdschlüsseleinschränkung

  • Fehler: Der Fehler tritt auf, wenn der Fremdschlüsseltyp, auf den verwiesen wird, aus der Tabelle geändert wird.

    Potenzielle Fehlermeldung: Verweise auf die Spalte '{pk column 1}' und die referenzierte Spalte '{fk column 1}' in der Fremdschlüsseleinschränkung '{key}' sind nicht kompatibel.

    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: Um dieses Problem zu beheben, wird empfohlen, den Fremdschlüssel zu löschen und nach Abschluss des Migrationsprozesses neu zu erstellen.

Nächste Schritte