Znane problemy i ograniczenia dotyczące migracji online z bazy danych PostgreSQL do usługi Azure Database for PostgreSQL
Ważne
Zalecamy użycie nowej usługi migracji w usłudze Azure Database for PostgreSQL w celu uzyskania bardziej usprawnionego i wydajnego środowiska migracji. Ta usługa upraszcza proces, obsługując różne środowiska źródłowe, zapewniając bezproblemowe przejście do usługi Azure Database for PostgreSQL.
W tym artykule opisano znane problemy i ograniczenia związane z migracjami online z bazy danych PostgreSQL do usługi Azure Database for PostgreSQL przy użyciu usługi Azure Database Migration Service (DMS).
Konfiguracja migracji online
Najniższa obsługiwana wersja źródłowa postgreSQL to 9.4, a najwyższa obsługiwana wersja docelowa to 14.9.
Obsługiwane są tylko migracje do tej samej lub nowszej wersji. Na przykład migracja bazy danych PostgreSQL 9.5 do usługi 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:Parametr Opis wal_level
Ustaw jako wartość logiczną. max_replication_slots
Ustaw co najmniej maksymalną liczbę baz danych na potrzeby migracji. Jeśli chcesz przeprowadzić migrację czterech baz danych, ustaw wartość na co najmniej 4
.max_wal_senders
Ustaw liczbę baz danych uruchomionych współbieżnie. Zalecaną wartością jest 10
.Dodaj adres IP agenta USŁUGI DMS do źródłowego serwera PostgreSQL
pg_hba.conf
.Zanotuj adres IP usługi DMS po zakończeniu aprowizacji wystąpienia usługi Azure Database Migration Service.
Dodaj adres IP do
pg_hba.conf
pliku:host all 172.16.136.18/10 md5 host replication postgres 172.16.136.18/10 md5
Użytkownik musi mieć rolę REPLIKACJA na serwerze hostującym źródłową bazę danych.
Schematy źródłowej i docelowej bazy danych muszą być zgodne.
Ograniczenia rozmiaru plików
- Przy użyciu pojedynczej usługi DMS możesz przeprowadzić migrację do 1 TB danych z bazy danych PostgreSQL do usługi Azure Database for PostgreSQL.
- Usługa DMS umożliwia użytkownikom wybieranie tabel wewnątrz bazy danych, którą chcą migrować.
W tle pg_dump
polecenie pobiera zrzut wybranych tabel przy użyciu jednej z następujących opcji:
-T
w celu 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 zgodnie z pg_dump
opcją -t
lub -T
. Polecenie pg_dump
używa liczby znaków dla wybranych lub niewybranych tabel, w zależności od tego, która liczba jest niższa. Jeśli liczba znaków dla wybranych i niezaznanych tabel przekracza 7500, pg_dump
polecenie kończy się niepowodzeniem z powodu błędu.
W poprzednim przykładzie pg_dump
polecenie to:
pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""
W poprzednim poleceniu liczba znaków wynosi 55 (zawiera podwójne cudzysłowy, spacje, -T
i ukośnik)
Ograniczenia typu danych
Ograniczenie: Jeśli w tabelach nie ma klucza podstawowego, zmiany mogą nie zostać zsynchronizowane z docelową bazą danych.
Obejście: Tymczasowo ustaw klucz podstawowy dla tabeli, aby kontynuować migrację. 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 usługi 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 w obiekcie docelowym jest zgodny ze schematem w źródle. Aby uzyskać więcej informacji na temat migracji schematu, zobacz dokumentację migracji online usługi Azure Database for PostgreSQL.
Błąd: Docelowa baza danych "{database}" ma tabele "{number of tables}", podczas gdy źródłowa baza danych "{database}" ma tabele "{number of tables}". 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 w obiekcie docelowym jest zgodny ze schematem w źródle. Aby uzyskać więcej informacji na temat migracji schematu, zobacz dokumentację migracji online usługi 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. Przeprowadź migrację schematu.
Ograniczenie: ten błąd występuje, gdy w docelowej bazie danych nie ma schematu. Upewnij się, że schemat w lokalizacji docelowej jest zgodny ze schematem w źródle.
Obejście: Upewnij się, że schemat w obiekcie docelowym jest zgodny ze schematem w źródle. Aby uzyskać więcej informacji na temat migracji schematu, zobacz dokumentację migracji online usługi Azure Database for PostgreSQL.
Inne ograniczenia
Nazwa bazy danych nie może zawierać średnika (
;
).Przechwycona tabela musi zawierać klucz podstawowy. Jeśli tabela nie ma klucza podstawowego, wynik operacji rekordu DELETE i UPDATE jest nieprzewidywalny.
Aktualizowanie segmentu klucza podstawowego jest ignorowane. Zastosowanie takiej aktualizacji jest identyfikowane przez element docelowy jako aktualizacja, która nie zaktualizowała żadnych wierszy. Wynikiem jest rekord zapisany w tabeli wyjątków.
Jeśli tabela zawiera 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 tabel table1, TABLE1 i Table1.
Przetwarzanie zmian [ CREATE | ALTER | DROP | Lista DDL tabeli TRUNCATE ] nie jest obsługiwana.
W usłudze Database Migration Service jedno działanie migracji może obejmować maksymalnie cztery bazy danych.
Migracja tabeli pg_largeobject nie jest obsługiwana.