Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie opisano, jak utworzyć kopię zapasową bazy danych Lakebase przy użyciu narzędzia Postgres pg_dump i jak przywrócić kopię zapasową przy użyciu polecenia pg_restore.
Kiedy należy używać pg_dump i pg_restore
Należy używać pg_dump i pg_restore do wymagań dotyczących odzyskiwania po awarii oraz ciągłości działania, lub gdy konieczne jest przechowywanie pełnych kopii zapasowych poza usługą Lakebase. Ta metoda zapewnia pełne eksporty bazy danych, które mogą być przechowywane niezależnie i przywracane do dowolnego systemu zgodnego z bazą danych Postgres.
Dla migracji, która utrzymuje środowisko docelowe na bieżąco do momentu przełączenia, użyj zamiast tego replikacji logicznej. Aby porównać sposoby przenoszenia danych do i z Lakebase, zobacz Przenoszenie danych do i z Lakebase.
Warunki wstępne
Przed rozpoczęciem upewnij się, że:
-
pg_dumpipg_restoresą zainstalowane. Możesz sprawdzić, uruchamiając poleceniepg_dump -V. - Używasz najnowszych wersji
pg_dumpipg_restore. - Wersja klienta jest zgodna z wersją bazy danych Postgres projektu Lakebase.
- Projekt usługi Lakebase ze skonfigurowaną rolą Postgres
Uwaga / Notatka
Zalecamy używanie natywnego uwierzytelniania hasłem Postgres podczas korzystania z pg_dumppg_restore. Natywne hasła Postgres nie wygasają co godzinę, tak jak tokeny OAuth, dzięki czemu są lepiej dostosowane do operacji tworzenia kopii zapasowych i przywracania. Zobacz Omówienie uwierzytelniania , aby uzyskać szczegółowe informacje o metodach uwierzytelniania.
Instalowanie pg_dump i pg_restore
Jeśli nie masz zainstalowanych lokalnie narzędzi pg_dump i pg_restore, zainstaluj je na preferowanej platformie.
Windows: Zainstaluj program PostgreSQL przy użyciu oficjalnego instalatora z postgresql.org. Narzędzia pg_dump i pg_restore są instalowane domyślnie i można je znaleźć w katalogu bin postgreSQL.
Macos: Zainstaluj program PostgreSQL przy użyciu oprogramowania Homebrew:
brew install postgresql
Linux (Ubuntu/Debian):
sudo apt-get install postgresql-client
Docker: Uruchom pg_dump używając kontenera Docker PostgreSQL:
docker run --rm postgres:17 pg_dump --version
Tworzenie kopii zapasowej przy użyciu pg_dump
Aby utworzyć lokalnie kopię zapasową bazy danych:
Przejdź do aplikacji Lakebase, klikając przełącznik aplikacji w prawym górnym rogu przestrzeni roboczej.
Wybierz projekt.
Kliknij przycisk Połącz, aby otworzyć modalne połączenie z bazą danych.
Wybierz rolę Postgres z listy rozwijanej (zalecamy użycie natywnej roli Postgres z uwierzytelnianiem haseł).
Skopiuj parametry połączenia.
Parametry połączenia wyglądają mniej więcej tak:
postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=requireUtwórz kopię zapasową bazy danych Lakebase, uruchamiając następujące
pg_dumppolecenie:pg_dump -Fc -v -d "<lakebase_database_connection_string>" -f <dump_file_name>Po dodaniu parametrów połączenia bazy danych Lakebase i nazwie pliku zrzutu polecenie wygląda następująco:
pg_dump -Fc -v -d "postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require" -f mydatabase.bak
argumenty poleceń pg_dump
Polecenie pg_dump zawiera następujące argumenty:
-
-Fc: wysyła dane wyjściowe do archiwum w niestandardowym formacie, które jest odpowiednie dla danych wejściowych dopg_restore. -
-v: działapg_dumpw trybie szczegółowym, pozwalając na monitorowanie przebiegu operacji. -
-d: określa parametry połączenia dla bazy danych Lakebase. -
-f <dump_file_name>: nazwa pliku zrzutu. Może to być dowolna wybrana nazwa (na przykładmydumpfile.bak).
Przywracanie kopii zapasowej przy użyciu pg_restore
Aby przywrócić bazę danych z pliku kopii zapasowej utworzonego przy użyciu pg_restore, użyj narzędzia pg_dump.
Utwórz nowy projekt Lakebase.
Utwórz bazę danych o tej samej nazwie co utworzona kopia zapasowa.
Przejdź do aplikacji Lakebase, klikając przełącznik aplikacji w prawym górnym rogu przestrzeni roboczej.
Wybierz projekt i kliknij przycisk Połącz , aby otworzyć modalne połączenie z bazą danych.
Wybierz rolę Postgres z listy rozwijanej (zalecamy użycie natywnej roli Postgres z uwierzytelnianiem haseł).
Skopiuj parametry połączenia.
Parametry połączenia wyglądają mniej więcej tak:
postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=requirePrzywróć dane do docelowej bazy danych w usłudze Lakebase za pomocą polecenia
pg_restore:pg_restore -v -d "<lakebase_database_connection_string>" <dump_file_name>Po dodaniu parametrów połączenia bazy danych Lakebase i nazwy pliku zrzutu polecenie wygląda następująco:
pg_restore -v -d "postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require" mydatabase.bak
argumenty polecenia pg_restore
Polecenie pg_restore zawiera następujące argumenty:
-
-v: działapg_restorew trybie szczegółowym, co pozwala monitorować, co się dzieje podczas operacji przywracania. -
-d: Określa bazę danych Lakebase do nawiązania połączenia. Wartość jest ciągiem połączenia do bazy danych Lakebase. -
<dump_file_name>: nazwa pliku zrzutu, który utworzyłeś za pomocąpg_dumppolecenia.
Kompletny przykład
W poniższym przykładzie pokazano, jak dane są zrzucane ze źródłowej bazy danych o nazwie databricks_postgres w jednym projekcie Lakebase i przywracane do bazy danych databricks_postgres w innym projekcie Lakebase.
Przed wykonaniem tej procedury:
- Utworzono nowy projekt usługi Lakebase dla docelowej bazy danych (która zawiera domyślną
databricks_postgresbazę danych) - Zebrano parametry połączenia dla źródłowych i docelowych baz danych:
-
Źródła:
postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require -
Docelowy:
postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require
-
Źródła:
Procedura tworzenia kopii zapasowej i przywracania:
# Create a directory for the dump
mkdir mydump && cd mydump
# Create the backup
pg_dump -Fc -v -d "postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require" -f mydatabase.bak
# Verify the backup file was created
ls
mydatabase.bak
# Restore the backup to the destination database
pg_restore -v -d "postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require" mydatabase.bak
Zrzuć tylko schemat
Zrzut samego schematu kopiuje definicje tabel, indeksy i ograniczenia bez żadnych danych wierszowych. Używaj go, gdy potrzebujesz struktury bazy danych w nowym obiekcie docelowym, ale nie jej zawartości.
Najczęstszym powodem jest przygotowanie docelowej bazy danych do replikacji logicznej. Replikacja logiczna kopiuje dane, a nie schemat: tabele w publikacji muszą już istnieć na subskrybentze o tych samych nazwach i kolumnach przed rozpoczęciem replikacji, a każda docelowa tabela musi być pusta, aby początkowa kopia nie zawiodła na zduplikowanych kluczach. Zrzut i ponowne wczytanie samego schematu jest zazwyczaj szybsze i mniej podatne na błędy niż ręczne odtwarzanie tabel.
Zrzuć tylko schemat ze źródłowej bazy danych. Opcja
--schema-onlywyklucza dane wierszy,--no-ownerpomija polecenia właściciela dla ról, które mogą nie istnieć w systemie docelowym,--no-privilegespomija nadania uprawnień, które mogą nie mieć zastosowania w systemie docelowym, a--no-publicationsi--no-subscriptionsutrzymują konfigurację replikacji źródła poza celem:pg_dump --schema-only --no-owner --no-privileges --no-publications --no-subscriptions "<source_connection_string>" > schema_dump.sqlPrzejrzyj plik zrzutu i skomentuj wszystkie instrukcje, których system docelowy nie obsługuje, takie jak parametry lub rozszerzenia specyficzne dla dostawcy. Skomentuj wiersz, dodając
--na początku.Jeśli replikujesz duży zbiór danych, rozważ także usunięcie instrukcji
CREATE INDEXprzed załadowaniem schematu. Budowanie indeksów podczas początkowej kopii replikacyjnej spowalnia ją. Zapisz usunięte polecenia i dodaj indeksy z powrotem po zakończeniu początkowej kopii.Załaduj schemat do docelowej bazy danych
psql:psql "<target_connection_string>" < schema_dump.sqlPotwierdź, że tabele zostały stworzone:
psql "<target_connection_string>" -c "\dt"