Delen via


Bekende problemen met migraties naar Azure Database for MySQL

Bekende problemen met betrekking tot migraties naar Azure Database for MySQL worden beschreven in de volgende secties.

Probleem met schemamigratie voor v8.0 MySQL Flexibele Server-doel

  • Fout: een migratie naar een MySQL Flexibele server met engineversie 8.0.30 of hoger kan mislukken wanneer de functie voor het genereren van onzichtbare primaire sleutels voor InnoDB-tabellen is ingeschakeld (zie MySQL :: MySQL 8.0 Reference Manual :: 13.1.20.11 Gegenereerde onzichtbare primaire sleutels). De fout kan optreden bij het migreren van een tabelschema van de bron naar het doel, bij het toepassen van wijzigingen tijdens de replicatiefase van onlinemigraties, bij het opnieuw proberen van een migratie of bij het migreren naar een doel waarvan het schema handmatig is gemigreerd.

    Mogelijk foutbericht:

    • 'Onbekende fout'.
    • 'Kan geen onzichtbare primaire sleutel genereren. De kolom voor automatisch verhogen bestaat al."
    • 'De kolom 'my_row_id' in de doeltabel 'tabelnaam' in database 'database' bestaat niet in de brontabel.'

    Beperking: migratie naar mySQL Flexible Server-exemplaar waarbij sql_generate_invisible_primary_key is ingeschakeld, wordt niet ondersteund door DMS.

    Tijdelijke oplossing: stel de serverparameter sql_generate_invisible_primary_key in op MySQL Flexible Server op UIT. De serverparameter vindt u op de blade Serverparameters onder het tabblad Alles voor de doel-MySQL Flexibele server. Verwijder bovendien de doeldatabase en begin met de DMS-migratie om geen niet-overeenkomende schema's te hebben.

Incompatibele SQL-modus

Een of meer incompatibele SQL-modi kunnen veel verschillende fouten veroorzaken. Hieronder ziet u een voorbeeldfout, samen met servermodi die moeten worden bekeken als deze fout optreedt.

  • Fout: er is een fout opgetreden tijdens het voorbereiden van de tabel {table} in database {database} op server {server} voor migratie tijdens de activiteit {activity}. Hierdoor wordt deze tabel niet gemigreerd.

    Beperking: deze fout treedt op wanneer een van de onderstaande SQL-modi is ingesteld op de ene server, maar niet op de andere server.

    Tijdelijke oplossing:

    NO_ZERO_DATE NO_AUTO_CREATE_USER
    Wanneer de standaardwaarde voor een datum in een tabel of de gegevens 0000-00-00 op de bron is en de doelserver de NO_ZERO_DATE SQL-modus heeft ingesteld, mislukt het schema en/of de gegevensmigratie. Er zijn twee mogelijke tijdelijke oplossingen: de eerste is het wijzigen van de standaardwaarden van de kolommen naar NULL of een geldige datum. De tweede optie is het verwijderen van de NO_ZERO_DATE SQL-modus uit de globale SQL-modusvariabele. Bij het uitvoeren van migraties van MySQL-bronserver 5.7 naar MySQL-doelserver 8.0 die schemamigratie van routines uitvoeren, treden er fouten op als no_auto_create_user SQL-modus is ingesteld op MySQL-bronserver 5.7.

Binlog-retentieproblemen

  • Fout: Onherstelbare fout bij het lezen van binlog. Deze fout kan erop wijzen dat de naam van het binlog-bestand en/of de oorspronkelijke positie onjuist zijn ingevoerd.

    Beperking: deze fout treedt op als de bewaarperiode voor binlog te kort is.

    Tijdelijke oplossing: Er zijn meerdere variabelen die in dit geval kunnen worden geconfigureerd: binlog_expire_logs_seconds bepaalt de bewaarperiode en het verwijderen van binlogs kunnen helemaal worden voorkomen door binlog_expire_logs_auto_purge uit te stellen. MySQL 5.7 heeft systeemvariabele expire_logs_days afgeschaft.

Time-out voor het verkrijgen van tabelvergrendelingen

  • Fout: er is een uitzondering opgetreden bij het verkrijgen van een leesvergrendeling op de server {server} voor het consistent maken van de weergave.

    Beperking: deze fout treedt op wanneer er een time-out optreedt tijdens het verkrijgen van vergrendelingen voor alle tabellen wanneer transactionele consistentie is ingeschakeld.

    Tijdelijke oplossing: zorg ervoor dat de geselecteerde tabellen niet zijn vergrendeld of dat er geen langlopende transacties worden uitgevoerd.

Meer dan 4 MB aan gegevens schrijven naar Azure Storage

  • Fout: de aanvraagbody is te groot en overschrijdt de maximaal toegestane limiet.

    Beperking: deze fout treedt waarschijnlijk op wanneer er te veel tabellen zijn om te migreren (>10k). Er geldt een limiet van 4 MB voor elke aanroep naar de Azure Storage-service.

    Tijdelijke oplossing: Neem contact op met de ondersteuning door een ondersteuningsaanvraag te maken en we kunnen aangepaste scripts bieden om rechtstreeks toegang te krijgen tot onze REST API's.

Probleem met sleutelvermeldingsduplicaat

  • Fout: De fout is vaak een symptoom van time-outs, netwerkproblemen of doelschalen.

    Mogelijk foutbericht: een batch kan niet naar de tabel {table} worden geschreven vanwege een SQL-fout die door de doelserver is gegenereerd. Voor context, de batch bevat een subset rijen die worden geretourneerd door de volgende bronquery.

    Beperking: deze fout kan worden veroorzaakt door een time-out of verbroken verbinding met het doel, wat resulteert in dubbele primaire sleutels. Het kan ook betrekking hebben op meerdere migraties naar het doel die tegelijkertijd worden uitgevoerd, of de gebruiker die testworkloads op het doel uitvoert terwijl de migratie wordt uitgevoerd. Daarnaast kan het doel vereisen dat primaire sleutels uniek zijn, ook al geldt dit niet voor de bron.

    Tijdelijke oplossing: Om dit probleem op te lossen, moet u ervoor zorgen dat er geen dubbele migraties worden uitgevoerd en dat de primaire bronsleutels uniek zijn. Als de fout zich blijft voordoen, neemt u contact op met de ondersteuning door een ondersteuningsaanvraag te maken en kunnen we aangepaste scripts opgeven om rechtstreeks toegang te krijgen tot onze REST API's.

De gerepliceerde operatie had een fout met niet-overeenkomende rijen

  • Fout: onlinemigratie kan het verwachte aantal wijzigingen niet repliceren.

    Mogelijk foutbericht: er is een fout opgetreden bij het toepassen van records op de doelserver die zijn gelezen uit het binaire logboek van de bronserver. De wijzigingen zijn gestart in het binaire logboek '{mysql-bin.log}' en functie '{position}' en eindigen bij binair logboek '{mysql-bin.log}' en functie '{position}'. Alle records op de bronserver vóór de functie '{position}' in het binaire logboek '{mysql-bin.log}' zijn vastgelegd in het doel.

    Beperking: op de bron waren er invoeg- en verwijderinstructies in een tabel en de verwijderingen waren door een duidelijke unieke index.

    Tijdelijke oplossing: u wordt aangeraden de tabel handmatig te migreren.

Fout met afgekapte tabelgegevens

  • Fout: De enum-kolom heeft een null-waarde in een of meer rijen en de doel-SQL-modus is ingesteld op strikt.

    Mogelijk foutbericht: een batch kan niet naar de tabel {table} worden geschreven vanwege een fout bij het afkappen van gegevens. Zorg ervoor dat de gegevens niet te groot zijn voor het gegevenstype van de mySQL-tabelkolom. Als het kolomtype een opsomming is, moet u ervoor zorgen dat de SQL-modus niet is ingesteld als TRADITIONAL, STRICT_TRANS_TABLES of STRICT_ALL_TABLES en hetzelfde is voor de bron en het doel.

    Beperking: de fout treedt op wanneer historische gegevens naar de bronserver zijn geschreven toen ze een bepaalde instelling hadden, maar wanneer deze zijn gewijzigd, gegevens niet kunnen worden verplaatst.

    Tijdelijke oplossing: Om het probleem op te lossen, raden we u aan de doel-SQL-modus te wijzigen in niet-strikt of alle null-waarden te wijzigen in geldige waarden.

Fout object maken

  • Fout: er is een fout opgetreden nadat de validatie van de weergave is mislukt.

    Beperking: de fout treedt op bij het migreren van een weergave en de tabel waarnaar wordt verwezen, kan niet worden gevonden.

    Tijdelijke oplossing: het is raadzaam om weergaven handmatig te migreren.

Kan tabel niet vinden

  • Fout: er is een fout opgetreden als verwijzende tabel kan niet worden gevonden.

    Mogelijk foutbericht: de pijplijn kan het schema van het object {object} niet maken voor activiteit {activity} met behulp van strategie MySqlSchemaMigrationViewUsingTableStrategy vanwege een query-uitvoering.

    Beperking: de fout kan optreden wanneer de weergave verwijst naar een tabel die is verwijderd of hernoemd, of wanneer de weergave is gemaakt met onjuiste of onvolledige informatie. Deze fout kan optreden als een subset van tabellen wordt gemigreerd, maar de tabellen waarvan ze afhankelijk zijn niet.

    Tijdelijke oplossing: het is raadzaam om weergaven handmatig te migreren. Controleer of alle tabellen waarnaar wordt verwezen in refererende sleutels en CREATE VIEW-instructies zijn geselecteerd voor migratie.

Alle gegroepeerde verbindingen zijn verbroken

  • Fout: alle verbindingen op de bronserver zijn verbroken.

    Beperking: de fout treedt op wanneer alle verbindingen die aan het begin van de eerste belasting zijn verkregen, verloren gaan als gevolg van het opnieuw opstarten van de server, netwerkproblemen, intensief verkeer op de bronserver of andere tijdelijke problemen. Deze fout kan niet worden hersteld. Daarnaast treedt deze fout op als er een poging wordt gedaan om een server te migreren tijdens het onderhoudsvenster.

    Tijdelijke oplossing: de migratie moet opnieuw worden gestart en we raden u aan de prestaties van de bronserver te verhogen. Een ander probleem is scripts die langlopende verbindingen beëindigen, voorkomt dat deze scripts werken.

Consistente momentopname verbroken

Beperking: de fout treedt op wanneer de klant DDL uitvoert tijdens de eerste belasting van het migratie-exemplaar.

Tijdelijke oplossing: Als u dit probleem wilt oplossen, wordt u aangeraden geen DDL-wijzigingen aan te brengen tijdens de eerste belasting.

Beperking van refererende sleutel

  • Fout: De fout treedt op wanneer er een wijziging is in het type refererende sleutel waarnaar wordt verwezen uit de tabel.

    Mogelijk foutbericht: verwijzen naar kolom {pk kolom 1} en waarnaar wordt verwezen kolom {fk column 1} in refererende sleutelbeperking {key} zijn niet compatibel.

    Beperking: de fout kan ertoe leiden dat de schemamigratie van een tabel mislukt, omdat de PK-kolom in tabel 1 mogelijk niet compatibel is met de FK-kolom in tabel 2.

    Tijdelijke oplossing: U kunt dit probleem oplossen door de refererende sleutel te verwijderen en opnieuw te maken nadat het migratieproces is voltooid.

Volgende stappen