Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här avsnittet beskriver hur du skapar en säkerhetskopia av din Lakebase-databas med postgres-verktyget och hur du återställer pg_dump en säkerhetskopia med hjälp av pg_restore.
När du ska använda pg_dump & pg_restore
Använd pg_dump och pg_restore för krav på haveriberedskap och affärskontinuitet, eller när du behöver lagra fullständiga säkerhetskopior utanför Lakebase. Den här metoden tillhandahåller fullständiga databasexporter som kan lagras oberoende av varandra och återställas till alla Postgres-kompatibla system.
För en migration som håller målet aktuellt tills du växlar över, använd logisk replikering istället. För att jämföra sätten att flytta data in och ut ur Lakebase, se Flytta data in och ut ur Lakebase.
Förutsättningar
Innan du börjar kontrollerar du att:
-
pg_dumpochpg_restoreär installerade. Du kan verifiera genom att körapg_dump -V. - Du använder de senaste versionerna av
pg_dumpochpg_restore. - Klientversionen matchar Lakebase-projektets Postgres-version.
- Ett Lakebase-projekt med en Postgres-roll konfigurerad
Anmärkning
Vi rekommenderar att du använder inbyggd Postgres-lösenordsautentisering när du använder pg_dump och pg_restore. Interna Postgres-lösenord upphör inte att gälla varje timme som OAuth-token, vilket gör dem bättre lämpade för säkerhetskopierings- och återställningsåtgärder. Mer information om autentiseringsmetoder finns i Översikt över autentisering .
Installera pg_dump och pg_restore
Om du inte har verktygen pg_dump och pg_restore installerade lokalt installerar du dem på önskad plattform.
Windows: Installera PostgreSQL med hjälp av det officiella installationsprogrammet från postgresql.org. Verktygen pg_dump och pg_restore installeras som standard och finns i postgreSQL-bin-katalogen.
Macos: Installera PostgreSQL med Homebrew:
brew install postgresql
Linux (Ubuntu/Debian):
sudo apt-get install postgresql-client
Docker: Kör pg_dump med en Postgres Docker-container:
docker run --rm postgres:17 pg_dump --version
Skapa en säkerhetskopia med pg_dump
Så här skapar du en databassäkerhetskopia lokalt:
Navigera till Lakebase-appen genom att klicka på appväxlaren uppe i högra hörnet av din arbetsplats.
Välj ditt projekt.
Klicka på Anslut för att öppna databasens anslutningsmodal.
Välj en Postgres-roll i listrutan (vi rekommenderar att du använder en intern Postgres-roll med lösenordsautentisering).
Kopiera anslutningssträng.
Anslutningssträngen ser ut ungefär så här:
postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=requireSkapa en säkerhetskopia av lakebase-databasen genom att köra följande
pg_dumpkommando:pg_dump -Fc -v -d "<lakebase_database_connection_string>" -f <dump_file_name>När du har lagt till anslutningssträngen för Lakebase-databasen och ett dumpfilnamn ser kommandot ut så här:
pg_dump -Fc -v -d "postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require" -f mydatabase.bak
pg_dump kommandorargument
Kommandot pg_dump innehåller följande argument:
-
-Fc: Skickar utdata till ett arkiv i anpassat format som är lämpligt för indata tillpg_restore. -
-v: Körpg_dumpi utförligt läge, så att du kan övervaka vad som händer under dumpåtgärden. -
-d: Anger anslutningssträngen för din Lakebase-databas. -
-f <dump_file_name>: Namnet på dumpfilen. Det kan vara valfritt namn du väljer (till exempelmydumpfile.bak).
Återställa en säkerhetskopia med pg_restore
Så här återställer du en databas med hjälp av pg_restore verktyget från en säkerhetskopia som skapats med hjälp av pg_dump:
Skapa ett nytt Lakebase-projekt.
Skapa en databas med samma namn som den som du säkerhetskopierade.
Navigera till Lakebase-appen genom att klicka på appväxlaren uppe i högra hörnet av din arbetsplats.
Välj projektet och klicka på Anslut för att öppna databasens anslutningsmodal.
Välj en Postgres-roll i listrutan (vi rekommenderar att du använder en intern Postgres-roll med lösenordsautentisering).
Kopiera anslutningssträng.
Anslutningssträngen ser ut ungefär så här:
postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=requireÅterställ dina data till måldatabasen i Lakebase med
pg_restore:pg_restore -v -d "<lakebase_database_connection_string>" <dump_file_name>När du har lagt till lakebase-databasanslutningssträngen och dumpfilnamnet ser kommandot ut så här:
pg_restore -v -d "postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require" mydatabase.bak
pg_restore kommandoargument
Kommandot pg_restore innehåller följande argument:
-
-v: Körspg_restorei utförligt läge så att du kan övervaka vad som händer under återställningsåtgärden. -
-d: Anger den Lakebase-databas som ska anslutas till. Värdet är en Lakebase-databasanslutningssträng. -
<dump_file_name>: Namnet på dumpfilen som du skapade medpg_dump.
Fullständigt exempel
I följande exempel visas hur data dumpas från en källdatabas med namnet databricks_postgres i ett Lakebase-projekt och återställs till en databas i ett databricks_postgres annat Lakebase-projekt.
Innan du utför den här proceduren:
- Ett nytt Lakebase-projekt skapades för måldatabasen (som innehåller standarddatabasen
databricks_postgres) - Anslutningssträngar för käll- och måldatabaserna samlades in:
-
Källkod:
postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require -
Destination:
postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require
-
Källkod:
Säkerhetskopierings- och återställningsprocedur:
# 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
Exportera bara schemat
En schema-endast dump kopierar tabelldefinitioner, index och begränsningar utan någon raddata. Använd det när du behöver strukturen för en databas i en ny målmiljö men inte dess innehåll.
Den vanligaste anledningen är att förbereda en måldatabas för logisk replikering. Logisk replikering kopierar data, inte schema: tabellerna i en publikation måste redan finnas hos prenumeranten med samma namn och kolumner innan replikeringen startar, och varje måltabell måste vara tom så att den initiala kopian inte misslyckas på dubblettnycklar. En schema-enbart dump och omladdning är vanligtvis snabbare och mindre felbenägen än att återskapa tabellerna för hand.
Dumpa bara schemat från källdatabasen. Alternativet
--schema-onlyexkluderar raddata,--no-ownerhoppar över ägarskapsuttalanden för roller som kanske inte finns på målet,--no-privilegeshoppar över beviljanden som kanske inte gäller för målet, och--no-publicationsoch--no-subscriptionshåller källans replikeringskonfiguration utanför målet:pg_dump --schema-only --no-owner --no-privileges --no-publications --no-subscriptions "<source_connection_string>" > schema_dump.sqlGranska dumpfilen och kommentera bort eventuella satser som målet inte stödjer, såsom leverantörsspecifika parametrar eller tillägg. Kommentera bort en rad genom att lägga till
--i början.Om du replikerar en stor datamängd bör du också överväga att ta bort
CREATE INDEX-satserna innan du laddar schemat. Att bygga index under den initiala replikeringskopian saktar ner det. Spara de instruktioner du tar bort och lägg till indexen igen efter att den inledande kopieringen är klar.Ladda schemat till måldatabasen med
psql:psql "<target_connection_string>" < schema_dump.sqlBekräfta att tabellerna skapades:
psql "<target_connection_string>" -c "\dt"