Udostępnij za pośrednictwem


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 PostgreSQLpostgresql.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.

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

    2. 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ć.

Zrzut ekranu przedstawiający ekran usługi DMS przedstawiający opcję wybierania tabel.

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, -Ti 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.