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.

    1. Zanotuj adres IP usługi DMS po zakończeniu aprowizacji wystąpienia Azure Database Migration Service.

    2. 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ć. Zrzut ekranu przedstawiający ekran D M S przedstawiający opcję wybierania tabel.

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.