Migrowanie bazy danych PostgreSQL przy użyciu zrzutu i przywracania

dotyczy: Azure Database for PostgreSQL — pojedynczy serwer Azure Database for PostgreSQL — elastyczny serwer

Możesz użyć pg_dump do wyodrębnienia bazy danych PostgreSQL do pliku zrzutu. Następnie użyj pg_restore, aby przywrócić bazę danych PostgreSQL z pliku archiwum utworzonego przez program pg_dump .

Wymagania wstępne

Aby przejść przez ten przewodnik, potrzebne są:

Tworzenie pliku zrzutu zawierającego dane do załadowania

Aby wrócić do kopii zapasowej istniejącej bazy danych PostgreSQL lokalnie lub na maszynie wirtualnej, uruchom następujące polecenie:

pg_dump -Fc -v --host=<host> --username=<name> --dbname=<database name> -f <database>.dump

Jeśli na przykład masz serwer lokalny i bazę danych o nazwie testdb, uruchom:

pg_dump -Fc -v --host=localhost --username=masterlogin --dbname=testdb -f testdb.dump

Przywracanie danych do docelowej bazy danych

Po utworzeniu docelowej bazy danych możesz użyć polecenia i parametru , aby przywrócić dane z pliku zrzutu do docelowej pg_restore --dbname bazy danych.

pg_restore -v --no-owner --host=<server name> --port=<port> --username=<user-name> --dbname=<target database name> <database>.dump

W tym parametr powoduje, że wszystkie obiekty utworzone --no-owner podczas przywracania są własnością użytkownika określonego za pomocą --username . Aby uzyskać więcej informacji, zobacz dokumentację programu PostgreSQL.

Uwaga

Na Azure Database for PostgreSQL połączenia TLS/SSL są domyślnie włączone. Jeśli serwer PostgreSQL wymaga połączeń TLS/SSL, ale nie ma ich, ustaw zmienną środowiskową, aby narzędzie pg_restore łączyło się z PGSSLMODE=require protokołem TLS. Bez protokołu TLS może zostać odczytany komunikat o błędzie: "KRYTYCZNY: wymagane jest połączenie SSL. Określ opcje protokołu SSL i ponów próbę". W wierszu polecenia systemu Windows uruchom polecenie SET PGSSLMODE=require przed uruchomieniem pg_restore polecenia . W systemie Linux lub Bash uruchom polecenie export PGSSLMODE=require przed uruchomieniem pg_restore polecenia.

W tym przykładzie przywróć dane z pliku zrzutu testdb.dump do bazy danych mypgsqldb na serwerze docelowym mydemoserver.postgres.database.azure.com.

Oto przykład użycia tej funkcji dla pg_restore pojedynczego serwera:

pg_restore -v --no-owner --host=mydemoserver.postgres.database.azure.com --port=5432 --username=mylogin@mydemoserver --dbname=mypgsqldb testdb.dump

Oto przykład użycia tego rozwiązania dla pg_restore serwera elastycznego:

pg_restore -v --no-owner --host=mydemoserver.postgres.database.azure.com --port=5432 --username=mylogin --dbname=mypgsqldb testdb.dump

Optymalizowanie procesu migracji

Jednym ze sposobów migracji istniejącej bazy danych PostgreSQL do bazy Azure Database for PostgreSQL jest kopii zapasowej bazy danych w źródle i przywrócenie jej na platformie Azure. Aby zminimalizować czas wymagany do ukończenia migracji, rozważ użycie następujących parametrów z poleceniami tworzenia kopii zapasowej i przywracania.

Uwaga

Aby uzyskać szczegółowe informacje o składni, zobacz pg_dump i pg_restore.

Dla kopii zapasowej

Wykonaj kopię zapasową za pomocą przełącznika , aby można było wykonać przywracanie -Fc równolegle, aby przyspieszyć jego wykonywanie. Na przykład:

pg_dump -h my-source-server-name -U source-server-username -Fc -d source-databasename -f Z:\Data\Backups\my-database-backup.dump

W przypadku przywracania

  • Przenieś plik kopii zapasowej na maszynę wirtualną platformy Azure w tym samym regionie co Azure Database for PostgreSQL, do których jest migrowanie. Wykonaj czynności pg_restore z tej maszyny wirtualnej, aby zmniejszyć opóźnienie sieci. Utwórz maszynę wirtualną z włączoną przyspieszoną siecią.

  • Otwórz plik zrzutu, aby sprawdzić, czy instrukcje tworzenia indeksu znajdują się po wstawieniu danych. Jeśli tak nie jest, przenieś instrukcje tworzenia indeksu po wstawieniu danych. Ta opcja powinna być już domyślnie wykonana, ale warto to potwierdzić.

  • Przywróć przy użyciu -Fc -j przełączników i (z liczbą), aby zrównoleglić przywracanie. Określana liczba rdzeni jest liczbą rdzeni na serwerze docelowym. Można również ustawić wartość dwa razy więcej rdzeni serwera docelowego, aby zobaczyć wpływ.

    Oto przykład użycia tej funkcji dla pg_restore pojedynczego serwera:

     pg_restore -h my-target-server.postgres.database.azure.com -U azure-postgres-username@my-target-server -Fc -j 4 -d my-target-databasename Z:\Data\Backups\my-database-backup.dump
    

    Oto przykład użycia tej funkcji dla serwera pg_restore elastycznego:

     pg_restore -h my-target-server.postgres.database.azure.com -U azure-postgres-username@my-target-server -Fc -j 4 -d my-target-databasename Z:\Data\Backups\my-database-backup.dump
    
  • Można również edytować plik zrzutu, dodając polecenie na początku set synchronous_commit = off; i polecenie set synchronous_commit = on; na końcu. Niewkręcenie jej na końcu, zanim aplikacje zmienią dane, może spowodować utratę danych.

  • Na docelowym Azure Database for PostgreSQL przed przywróceniem należy rozważyć wykonanie następujących czynności:

    • Wyłącz śledzenie wydajności zapytań. Te statystyki nie są potrzebne podczas migracji. Można to zrobić, ustawiając pg_stat_statements.track wartości , i na pg_qs.query_capture_mode pgms_wait_sampling.query_capture_mode NONE .

    • Użyj jednostki SKU o dużej mocy obliczeniowej i dużej ilości pamięci, na przykład Zoptymalizowane pod kątem pamięci z 32 rdzeniami wirtualnych, aby przyspieszyć migrację. Po zakończeniu przywracania możesz łatwo skalować w dół do preferowanej sku. Im wyższa jest wartość SKU, tym bardziej równoległość można osiągnąć przez zwiększenie odpowiedniego -j parametru w pg_restore poleceniu.

    • Większa wartość IOPS na serwerze docelowym może poprawić wydajność przywracania. Możesz aprowizowanie większej liczby IOPS przez zwiększenie rozmiaru magazynu serwera. To ustawienie nie jest odwracalne, ale zastanów się, czy większa liczba IOPS będzie korzystne dla rzeczywistego obciążenia w przyszłości.

Pamiętaj, aby przetestować i zweryfikować te polecenia w środowisku testowym przed ich użyciem w środowisku produkcyjnym.

Następne kroki