Znane problemy/ograniczenia dotyczące migracji online z bazy danych PostgreSQL do Azure Database for PostgreSQL
W poniższych sekcjach opisano znane problemy i ograniczenia związane z migracjami online z bazy danych PostgreSQL do Azure Database for PostgreSQL.
Konfiguracja migracji online
Źródłowy serwer PostgreSQL musi mieć wersję 9.4, 9.5, 9.6, 10 lub 11. Aby uzyskać więcej informacji, zobacz Obsługiwane wersje bazy danych PostgreSQL.
Obsługiwane są tylko migracje do tej samej lub nowszej wersji. Na przykład migracja bazy danych PostgreSQL 9.5 do Azure Database for PostgreSQL 9.6 lub 10 jest obsługiwana. Migracja z bazy danych PostgreSQL 11 do bazy danych PostgreSQL 9.6 nie jest obsługiwana.
Aby włączyć replikację logiczną w źródłowym pliku PostgreSQL postgresql.conf , ustaw następujące parametry:
- wal_level: ustaw jako logiczne.
- max_replication_slots: ustaw co najmniej maksymalną liczbę baz danych na potrzeby migracji. Jeśli chcesz przeprowadzić migrację czterech baz danych, ustaw wartość co najmniej 4.
- max_wal_senders: ustaw liczbę baz danych uruchomionych współbieżnie. Zalecana wartość to 10.
Dodaj adres IP agenta DMS do źródłowej bazy danych PostgreSQL pg_hba.conf.
Zanotuj adres IP usługi DMS po zakończeniu aprowizacji wystąpienia Azure Database Migration Service.
Dodaj adres IP do pliku pg_hba.conf :
host all 172.16.136.18/10 md5 host replication postgres 172.16.136.18/10 md5
Użytkownik musi mieć rolę REPLIKACJI na serwerze hostowania źródłowej bazy danych.
Schematy źródłowej i docelowej bazy danych muszą być zgodne.
Ograniczenia rozmiaru
- Możesz migrować do 1 TB danych z bazy danych PostgreSQL do Azure Database for PostgreSQL przy użyciu jednej usługi DMS.
- Usługa DMS umożliwia użytkownikom wybieranie tabel w bazie danych, którą chcą migrować.
W tle istnieje polecenie pg_dump , które służy do zrzutu wybranych tabel przy użyciu jednej z następujących opcji:
- -T do uwzględnienia nazw tabel wybranych w interfejsie użytkownika
- -t , aby wykluczyć nazwy tabel, które nie zostały wybrane przez użytkownika
Istnieje maksymalny limit 7500 znaków, który można uwzględnić w ramach polecenia pg_dump po opcji -t lub -T . Polecenie pg_dump używa liczby znaków dla wybranych lub niezaznaczonych tabel , w zależności od tego, która z nich jest niższa. Jeśli liczba znaków dla wybranych i nie zaznaczonych tabel przekracza 7500, polecenie pg_dump kończy się niepowodzeniem z powodu błędu.
W poprzednim przykładzie polecenie pg_dump to:
pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""
W poprzednim poleceniu liczba znaków to 55 (łącznie z podwójnymi cudzysłowami, spacjami, -T i ukośnikiem)
Ograniczenia typu danych
Ograniczenie: jeśli nie ma klucza podstawowego w tabelach, zmiany mogą nie zostać zsynchronizowane z docelową bazą danych.
Obejście: Tymczasowo ustaw klucz podstawowy dla tabeli na potrzeby migracji, aby kontynuować. Usuń klucz podstawowy po zakończeniu migracji danych.
Ograniczenia dotyczące migracji online z usługi AWS RDS PostgreSQL
Podczas próby przeprowadzenia migracji online z usługi Amazon Web Service (AWS) Relational Database (RDS) PostgreSQL do Azure Database for PostgreSQL mogą wystąpić następujące błędy:
Błąd: Wartość domyślna kolumny "{column}" w tabeli "{table}" w bazie danych "{database}" różni się na serwerach źródłowych i docelowych. Na serwerze źródłowym jest to „{value on source}”, a na serwerze docelowym — „{value on target}”.
Ograniczenie: ten błąd występuje, gdy wartość domyślna schematu kolumny różni się między źródłowymi i docelowymi bazami danych.
Obejście: Upewnij się, że schemat na obiekcie docelowym jest zgodny ze schematem w źródle. Aby uzyskać więcej informacji na temat migrowania schematu, zobacz dokumentację migracji online Azure Database for PostgreSQL.
Błąd: Docelowa baza danych "{database}" ma tabele "{liczba tabel}", natomiast źródłowa baza danych "{database}" ma tabele "{liczba tabel}". Liczba tabel w źródłowej i docelowej bazie danych powinna być taka sama.
Ograniczenie: ten błąd występuje, gdy liczba tabel różni się między źródłowymi i docelowymi bazami danych.
Obejście: Upewnij się, że schemat na obiekcie docelowym jest zgodny ze schematem w źródle. Aby uzyskać więcej informacji na temat migrowania schematu, zobacz dokumentację migracji online Azure Database for PostgreSQL.
Błąd: Źródłowa baza danych {database} jest pusta.
Ograniczenie: ten błąd występuje, gdy źródłowa baza danych jest pusta. Prawdopodobnie wybrano niewłaściwą bazę danych jako źródło.
Obejście: Sprawdź dwukrotnie źródłową bazę danych wybraną do migracji, a następnie spróbuj ponownie.
Błąd: Docelowa baza danych {database} jest pusta. Migrowanie schematu.
Ograniczenie: ten błąd występuje, gdy nie ma schematu w docelowej bazie danych. Upewnij się, że schemat na obiekcie docelowym jest zgodny ze schematem w źródle.
Obejście: Upewnij się, że schemat na obiekcie docelowym jest zgodny ze schematem w źródle. Aby uzyskać więcej informacji na temat migrowania schematu, zobacz dokumentację migracji online Azure Database for PostgreSQL.
Inne ograniczenia
- Nazwa bazy danych nie może zawierać średnika (;).
- Przechwycona tabela musi mieć klucz podstawowy. Jeśli tabela nie ma klucza podstawowego, wynik operacji rekordu DELETE i UPDATE będzie nieprzewidywalny.
- Aktualizowanie segmentu klucza podstawowego jest ignorowane. Zastosowanie takiej aktualizacji zostanie zidentyfikowane przez element docelowy jako aktualizację, która nie zaktualizowała żadnych wierszy. Wynik jest rekordem zapisanym w tabeli wyjątków.
- Jeśli tabela ma kolumnę JSON , wszystkie operacje DELETE lub UPDATE w tej tabeli mogą prowadzić do nieudanej migracji.
- Migracja wielu tabel o tej samej nazwie, ale inny przypadek może spowodować nieprzewidywalne zachowanie i nie jest obsługiwana. Przykładem jest użycie tabeli Table1, TABLE1 i Table1.
- Zmienianie przetwarzania [CREATE | ALTER | DROP | Lista DD Tabeli TRUNCATE] nie jest obsługiwana.
- W Database Migration Service pojedyncze działanie migracji może pomieścić tylko cztery bazy danych.
- Migracja tabeli pg_largeobject nie jest obsługiwana.