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.
Po dokončení zřizování instance Azure Database Migration Service si poznamenejte IP adresu DMS.
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.
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.