Sdílet prostřednictvím


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

Důležité

Doporučujeme používat novou službu migrace ve službě Azure Database for PostgreSQL pro efektivnější a efektivnější migraci. Tato služba zjednodušuje proces tím, že podporuje celou řadu zdrojových prostředí a zajišťuje bezproblémový přechod na Azure Database for PostgreSQL.

Tento článek popisuje známé problémy a omezení související s online migracemi z PostgreSQL do služby Azure Database for PostgreSQL pomocí služby Azure Database Migration Service (DMS).

Konfigurace online migrace

  • Nejnižší podporované zdrojové verze PostgreSQL jsou 9.4 a nejvyšší podporovaná cílová verze je 14.9.

  • 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 verze PostgreSQL 11 na PostgreSQL 9.6 se nepodporuje.

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

    Parametr Popis
    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ň 4na hodnotu .
    max_wal_senders Nastavte počet spuštěných databází současně. Doporučená hodnota je 10.
  • Přidejte IP adresu agenta DMS do zdrojového PostgreSQL pg_hba.conf.

    1. Po dokončení zřízení instance služby Azure Database Migration Service si poznamenejte IP adresu DMS.

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

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

  • Schémata zdrojové a cílové databáze si musí odpovídat.

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 vybírat tabulky v databázi, kterou chtějí migrovat.

Snímek obrazovky DMS s možností výběru tabulek

Příkaz na pozadí pg_dump vezme výpis vybraných tabulek pomocí jedné z následujících možností:

  • -T zahrnutí názvů tabulek vybraných v uživatelském rozhraní
  • -t vyloučení názvů tabulek nevybírané uživatelem

Maximální limit je 7 500 znaků, který lze zahrnout jako součást pg_dump příkazu za následující -t možností.-T Příkaz pg_dump použije počet znaků pro vybrané nebo nevybrané tabulky podle toho, co je nižší. Pokud počet znaků pro vybrané a nevybrané tabulky překročí 7500, pg_dump příkaz 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 (včetně dvojitých uvozovek, mezer, -Ta lomítka)

Omezení datových typů

Omezení: Pokud v tabulkách není žádný primární klíč, nemusí se změny 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 tento primární klíč odeberte.

Omezení online migrace z AWS RDS PostgreSQL

Když se pokusíte provést online migraci z Amazon Web Service (AWS) Relational Database (RDS) PostgreSQL do služby 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ých a cílových serverech 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í, když se výchozí hodnota schématu sloupce liší mezi zdrojovými a cílovými databázemi.

    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 online dokumentaci k migraci služby Azure Database for PostgreSQL.

  • Chyba: Cílová databáze {database} obsahuje tabulky {number of tables}, zatímco zdrojová databáze {database} obsahuje {počet 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 liší mezi zdrojovými a cílovými databázemi.

    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 online dokumentaci k migraci služby 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á. Pravděpodobně jste jako zdroj vybrali nesprávnou databázi.

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

  • Chyba: Cílová databáze {database} je prázdná. Proveďte migraci schématu.

    Omezení: K této chybě dochází v případě, že v cílové databázi neexistuje žádné schéma. Zajistěte, aby schéma v cílové databázi odpovídalo schématu ve zdrojové databázi.

    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 online dokumentaci k migraci služby 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áznamů je nepředvídatelný.

  • Aktualizace segmentu primárního klíče se ignoruje. Použití takové aktualizace je identifikováno cílem jako aktualizace, která neaktualizuje žádné řádky. Výsledkem je záznam zapsaný do tabulky výjimek.

  • Pokud tabulka obsahuje JSON sloupec, může jakákoli operace DELETE nebo UPDATE v této tabulce vést k neúspěšné migraci.

  • Migrace více tabulek se stejným názvem, ale jinou velikostí písmen může způsobit nepředvídatelné chování a nepodporuje se. Příkladem je použití názvů tabulka1, TABULKA1 a Tabulka1.

  • Zpracování změn [ CREATE | ALTER | DROP | Seznamy DDL tabulky TRUNCATE ] nejsou podporované.

  • Ve službě Database Migration Service může jedna aktivita migrace pojmout pouze čtyři databáze.

  • Migrace tabulky pg_largeobject se nepodporuje.