Známé problémy nebo omezení při online migracích z PostgreSQL do Azure Database for PostgreSQL

Známé problémy a omezení související s online migracemi z PostgreSQL do Azure Database for PostgreSQL jsou popsané v následujících částech.

Konfigurace online migrace

  • Na zdrojovém serveru PostgreSQL musí běžet verze 9.4, 9.5, 9.6, 10 nebo 11. Další informace najdete v tématu Podporované verze databáze PostgreSQL.

  • Podporují se jenom migrace na stejnou nebo vyšší verzi. Podporuje se například migrace PostgreSQL 9.5 na Azure Database for PostgreSQL 9.6 nebo 10. Migrace z PostgreSQL 11 na PostgreSQL 9.6 se nepodporuje.

  • Pokud chcete povolit logickou replikaci ve zdrojovém souboru PostgreSQL postgresql.conf , nastavte následující parametry:

    • wal_level: Nastavit jako logickou.
    • max_replication_slots: Nastavte alespoň maximální počet databází pro migraci. Pokud chcete migrovat čtyři databáze, nastavte hodnotu alespoň na 4.
    • max_wal_senders: Nastavte počet současně spuštěných databází. Doporučená hodnota je 10.
  • Přidejte IP adresu agenta DMS do zdrojového postgreSQL pg_hba.conf.

    1. Po dokončení zřizování instance Azure Database Migration Service si poznamenejte IP adresu DMS.

    2. Přidejte IP adresu do souboru pg_hba.conf :

          host    all    172.16.136.18/10    md5
          host    replication postgres    172.16.136.18/10     md5
      
  • Uživatel musí mít roli REPLIKACE na serveru, který je hostitelem zdrojové databáze.

  • Schémata zdrojové a cílové databáze se musí shodovat.

Omezení velikosti

  • Pomocí jedné služby DMS můžete migrovat až 1 TB dat z PostgreSQL do Azure Database for PostgreSQL.
  • DMS umožňuje uživatelům vybrat tabulky v databázi, kterou chtějí migrovat. Snímek obrazovky D M S s možností výběru tabulek

Na pozadí je příkaz pg_dump , který se používá k pořízení výpisu vybraných tabulek pomocí jedné z následujících možností:

  • -T pro zahrnutí názvů tabulek vybraných v uživatelském rozhraní
  • -t , pokud chcete vyloučit názvy tabulek, které uživatel nevybral

Maximální limit je 7500 znaků, které lze zahrnout jako součást příkazu pg_dump za parametrem -t nebo -T . Příkaz pg_dump používá počet znaků pro vybrané nebo nevybrané tabulky podle toho, která hodnota je nižší. Pokud počet znaků pro vybranou a nevybranou tabulku překročí 7500, příkaz pg_dump selže s chybou.

V předchozím příkladu by příkaz pg_dump byl:

pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""

V předchozím příkazu je počet znaků 55 (zahrnuje uvozovky, mezery, -T a lomítko).

Omezení datových typů

Omezení: Pokud tabulky neobsahují žádný primární klíč, změny se nemusí synchronizovat s cílovou databází.

Alternativní řešení: Dočasně nastavte primární klíč tabulky, aby migrace pokračovala. Po dokončení migrace dat odeberte primární klíč.

Omezení online migrace z AWS RDS PostgreSQL

Při pokusu o provedení online migrace z PostgreSQL (Amazon Web Service) Relační databáze (RDS) Do Azure Database for PostgreSQL může dojít k následujícím chybám:

  • Chyba: Výchozí hodnota sloupce {column} v tabulce {table} v databázi {database} se na zdrojovém a cílovém serveru liší. Hodnota na zdrojovém serveru: {value on source}. Hodnota na cílovém serveru: {value on target}.

    Omezení: K této chybě dochází v případě, že se výchozí hodnota ve schématu sloupce mezi zdrojovou a cílovou databází liší.

    Alternativní řešení: Ujistěte se, že schéma v cíli odpovídá schématu ve zdroji. Další informace o migraci schématu najdete v dokumentaci k online migraci Azure Database for PostgreSQL.

  • Chyba: Cílová databáze {database} obsahuje {number of tables} tabulek, zatímco zdrojová databáze {database} obsahuje {number of tables} tabulek. Počet tabulek ve zdrojové i cílové databázi musí být stejný.

    Omezení: K této chybě dochází v případě, že se počet tabulek ve zdrojové a cílové databázi liší.

    Alternativní řešení: Ujistěte se, že schéma v cíli odpovídá schématu ve zdroji. Další informace o migraci schématu najdete v dokumentaci k online migraci Azure Database for PostgreSQL.

  • Chyba: Zdrojová databáze {database} je prázdná.

    Omezení: K této chybě dochází, když je zdrojová databáze prázdná. Jako zdroj jste pravděpodobně vybrali nesprávnou databázi.

    Alternativní řešení: Pečlivě zkontrolujte zdrojovou databázi, kterou jste vybrali pro migraci, a zkuste to znovu.

  • Chyba: Cílová databáze {database} je prázdná. Migrujte schéma.

    Omezení: K této chybě dochází v případě, že v cílové databázi není žádné schéma. Ujistěte se, že schéma v cíli odpovídá schématu ve zdroji.

    Alternativní řešení: Ujistěte se, že schéma v cíli odpovídá schématu ve zdroji. Další informace o migraci schématu najdete v dokumentaci k online migraci Azure Database for PostgreSQL.

Další omezení

  • Název databáze nemůže obsahovat středník (;).
  • Zachycená tabulka musí mít primární klíč. Pokud tabulka nemá primární klíč, výsledek operací DELETE a UPDATE záznamu bude nepředvídatelný.
  • Aktualizace segmentu primárního klíče se ignoruje. Použití takové aktualizace bude cílem identifikováno jako aktualizace, která neaktualizuje žádné řádky. Výsledkem je záznam zapsaný do tabulky výjimek.
  • Pokud tabulka obsahuje sloupec JSON , jakékoli operace DELETE nebo UPDATE u této tabulky můžou vést k neúspěšné migraci.
  • Migrace několika tabulek se stejným názvem, ale jiným případem může způsobit nepředvídatelné chování a není podporovaná. Příkladem je použití tabulek table1, TABLE1 a Table1.
  • Zpracování změn pro [CREATE | ALTER | DROP | DDL tabulky TRUNCATE] se nepodporují.
  • V Database Migration Service může jedna aktivita migrace pojmout maximálně čtyři databáze.
  • Migrace tabulky pg_largeobject se nepodporuje.