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 PostgreSQL
postgresql.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ň 4
na 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
.Po dokončení zřízení instance služby Azure Database Migration Service si poznamenejte IP adresu DMS.
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.
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, -T
a 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.