A PostgreSQL-ből Azure Database for PostgreSQL-be történő online migrálás ismert problémái/korlátozásai
A PostgreSQL-ről Azure Database for PostgreSQL történő online migrálással kapcsolatos ismert problémákat és korlátozásokat az alábbi szakaszok ismertetik.
Online migrálás konfigurálása
A forrás PostgreSQL-kiszolgálónak a 9.4-es, 9.5-ös, 9.6-os, 10-es vagy 11-es verziót kell futtatnia. További információ: Támogatott PostgreSQL-adatbázisverziók.
Csak az ugyanahhoz vagy egy magasabb verzióhoz való migrálás támogatott. A PostgreSQL 9.5-ös verziójának áttelepítése például a 9.6-os vagy 10-Azure Database for PostgreSQL támogatott. A PostgreSQL 11-ről a PostgreSQL 9.6-ra való migrálás nem támogatott.
Ha engedélyezni szeretné a logikai replikációt a postgreSQL postgresql.conf forrásfájlban , állítsa be a következő paramétereket:
- wal_level: Logikai beállítás.
- max_replication_slots: Állítsa be legalább a migráláshoz szükséges adatbázisok maximális számát. Ha négy adatbázist szeretne migrálni, állítsa az értéket legalább 4 értékre.
- max_wal_senders: Állítsa be az egyidejűleg futó adatbázisok számát. Az ajánlott érték 10.
Adja hozzá a DMS-ügynök IP-címét a PostgreSQL pg_hba.conf forráshoz.
Jegyezze fel a DMS IP-címét, miután befejezte a Azure Database Migration Service példányának kiépítését.
Adja hozzá az IP-címet a pg_hba.conf fájlhoz :
host all 172.16.136.18/10 md5 host replication postgres 172.16.136.18/10 md5
A felhasználónak replikációs szerepkörrel kell rendelkeznie a forrásadatbázist üzemeltető kiszolgálón.
A forrás- és céladatbázis-sémáknak egyeznie kell.
Méretkorlátozások
- Egyetlen DMS-szolgáltatással akár 1 TB-ot is áttelepíthet a PostgreSQL-ből Azure Database for PostgreSQL.
- A DMS lehetővé teszi, hogy a felhasználók táblákat válasszanak ki egy olyan adatbázisban, amelyet migrálni szeretnének.
A színfalak mögött található egy pg_dump parancs, amely a kijelölt táblák memóriaképének készítésére szolgál az alábbi lehetőségek egyikével:
- -T a felhasználói felületen kiválasztott táblanevek belefoglalásához
- -t a felhasználó által nem választott táblanevek kizárásához
Legfeljebb 7500 karakter hosszúságú lehet, amely a - t vagy - T kapcsolót követő pg_dump parancs részeként vehető fel. A pg_dump parancs a kijelölt vagy nem kijelölt táblák karaktereinek számát használja, amelyik alacsonyabb. Ha a kijelölt és a nem kijelölt táblák karaktereinek száma meghaladja a 7500-t, a pg_dump parancs hibaüzenettel meghiúsul.
Az előző példában a pg_dump parancs a következő:
pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""
Az előző parancsban a karakterek száma 55 (dupla idézőjeleket, szóközöket, -T és perjeleket tartalmaz)
Adattípusra vonatkozó korlátozások
Korlátozás: Ha nincs elsődleges kulcs a táblákban, előfordulhat, hogy a módosítások nem szinkronizálódnak a céladatbázissal.
Megkerülő megoldás: Ideiglenesen állítsa be a tábla elsődleges kulcsát a migrálás folytatásához. Az adatmigrálás befejezése után távolítsa el az elsődleges kulcsot.
Az AWS RDS PostgreSQL-ből való online migrálás korlátozásai
Amikor online migrálást kísérel meg végrehajtani az Amazon Web Service (AWS) relációs adatbázisból (RDS) PostgreSQL-ből Azure Database for PostgreSQL, a következő hibákat tapasztalhatja:
Hiba: A(z) {database} adatbázis {table} táblájának "{column}" oszlopának alapértelmezett értéke eltérő a forrás- és célkiszolgálókon. Az érték „{value on source}” a forráson és „{value on target}” a célon.
Korlátozás: Ez a hiba akkor fordul elő, ha az oszlopséma alapértelmezett értéke eltér a forrás- és a céladatbázisok között.
Megkerülő megoldás: Győződjön meg arról, hogy a cél sémája megegyezik a forrás sémával. A séma migrálásával kapcsolatos további információkért tekintse meg az Azure Database for PostgreSQL online migrálási dokumentációját.
Hiba: A(z) "{database}" céladatbázis {number of tables}" táblával rendelkezik, míg a(z) "{database}" forrásadatbázisban "{táblák száma}" táblák találhatók. A forrás- és a céladatbázisok táblái számának azonosnak kell lennie.
Korlátozás: Ez a hiba akkor fordul elő, ha a táblák száma eltér a forrás- és a céladatbázisok között.
Megkerülő megoldás: Győződjön meg arról, hogy a cél sémája megegyezik a forrás sémával. A séma migrálásával kapcsolatos további információkért tekintse meg az Azure Database for PostgreSQL online migrálási dokumentációját.
Hiba: A(z) {database} forrásadatbázis üres.
Korlátozás: Ez a hiba akkor fordul elő, ha a forrásadatbázis üres. Valószínűleg nem a megfelelő adatbázist választotta ki forrásként.
Megkerülő megoldás: Ellenőrizze duplán a migráláshoz kiválasztott forrásadatbázist, majd próbálkozzon újra.
Hiba: A(z) {database} céladatbázis üres. A séma migrálása.
Korlátozás: Ez a hiba akkor fordul elő, ha nincs séma a céladatbázison. Győződjön meg arról, hogy a cél sémája megegyezik a forrás sémával.
Megkerülő megoldás: Győződjön meg arról, hogy a cél sémája megegyezik a forrás sémával. A séma migrálásával kapcsolatos további információkért tekintse meg az Azure Database for PostgreSQL online migrálási dokumentációját.
Egyéb korlátozások
- Az adatbázis neve nem tartalmazhat pontosvesszőt (;).
- A rögzített tábláknak elsődleges kulccsal kell rendelkezniük. Ha egy tábla nem rendelkezik elsődleges kulccsal, a DELETE és AZ UPDATE rekordműveletek eredménye kiszámíthatatlan lesz.
- Az elsődleges kulcs szegmensének frissítése figyelmen kívül lesz hagyva. Az ilyen frissítés alkalmazását a cél egy olyan frissítésként azonosítja, amely nem frissített sorokat. Az eredmény a kivételek táblába írt rekord.
- Ha a tábla JSON-oszlopot tartalmaz, a táblán található DELETE vagy UPDATE műveletek sikertelen migráláshoz vezethetnek.
- Több, azonos nevű, de eltérő esettel rendelkező tábla migrálása kiszámíthatatlan viselkedést okozhat, és nem támogatott. Ilyen például a table1, a TABLE1 és a Table1 használata.
- A(z) [CREATE | ALTER | DROP | A TRUNCATE] tábla DLL-jei nem támogatottak.
- A Database Migration Service egyetlen migrálási tevékenység legfeljebb négy adatbázist képes kezelni.
- A pg_largeobject tábla áttelepítése nem támogatott.