Gå til indhold
Dansk - Danmark
  • Der er ingen forslag, da søgefeltet er tomt.

Backup

Der laves to typer af backup i Google Firestore:

Der laves to typer af backup i Google Firestore: 1. Point-In-Time Recovery (PITR) 2. Ugentlig fuld backup Point-In-Time Recovery (PITR) er en funktion i Google Firestore, der gør det muligt at gendanne databasen til et tidligere tidspunkt inden for en bestemt tidsramme. PITR er aktiveret for vores database, og vi kan gendanne databasen eller dele af databasen til et hvilket som helst tidspunkt inden for de sidste 7 dage. Ulempen ved PITR er, at recovery går tabt hvis databasen slettes fuldstændigt. Dette er årsagen til at vi også laver ugentlige fulde backups, der opbevares i Cloud Storage. ## Gendan en backup Du skal have installeret Google Cloud CLI på din computer for at kunne køre disse commands. Du kan også åbne Google Cloud CLI via Google Cloud Platform (altså online) ### Gendan med PITR Hvis du har brug for at gendanne databasen til et tidligere tidspunkt inden for de sidste 7 dage, kan du bruge PITR. For at lave en fuld gendannelse, skal du først eksportere databasen fra et bestemt tidspunkt til en bucket: ```bash gcloud firestore export gs://YOUR-BUCKET-NAME/backup-folder --database=DATABASE_ID --snapshot-time="2025-10-14T10:30:00Z" ``` Derefter skal destinationsdatabasen oprettes: ```bash gcloud firestore databases create --database=NEW_DATABASE_ID --location=LOCATION --type=firestore-native ``` Hvorefter databasen kan importeres: ```bash gcloud firestore import gs://YOUR-BUCKET-NAME/backup-folder/EXPORT_TIMESTAMP --database=NEW_DATABASE_ID ``` Du kan se hvor langt den er, ved at køre følgende command: ```bash gcloud firestore operations list --database=DATABASE_NAME ``` ### Delvis gendannelse med PITR Hvis du kun har brug for at gendanne en del af databasen, f.eks. et enkelt dokument eller en collection, kan PITR recovery også bruges til det. Ved at lave queries i en `readOnly` transaction med `readTime` sat til det tidspunkt du vil gendanne til, kan du hente de data du har brug for. Dette script kan anvendes i Firefoo: ```javascript async function run() { const documentRef = db.collection('/content/61teGqCSW9xeELXAwSYM/pages').doc('0HudGXc6GHLT5UBf5uZR'); // Just view the old data return await recoverDocument(documentRef, '2025-10-15T09:40:00Z'); // View AND restore // return await recoverDocument(documentRef, '2025-10-14T10:30:00Z', true); } async function recoverDocument(documentRef, recoveryTime, restoreToDb = false) { try { // Get version from the past const readTime = admin.firestore.Timestamp.fromDate(new Date(recoveryTime)); const oldSnapshot = await db.runTransaction( updateFunction => updateFunction.get(documentRef), { readOnly: true, readTime: readTime } ); if (!oldSnapshot.exists) { console.log('Document did not exist at recovery time'); return null; } const oldData = oldSnapshot.data(); // Just return the data if restoreToDb is false if (!restoreToDb) { console.log('Retrieved historical document data'); return oldData; } // Otherwise, restore it to the database await documentRef.set(oldData); console.log('Document restored successfully!'); return oldData; } catch (error) { console.error('Error during recovery:', error); throw error; } } ``` Se mere her: https://firebase.google.com/docs/firestore/enterprise/use-pitr?authuser=0#node ### Fuld disaster recovery Hvis hele databasen inkl PITR er blevet slettet, kan vores ugentlige fulde backups bruges til at gendanne databasen. For at gendanne en backup, skal du bruge ID'et på den backup du vil gendanne. Du finder alle backups du kan gendanne ved at køre følgende command: ```bash gcloud firestore backups list --format="table(name, database, state)" --project=attraction-prod ``` For derefter at gendanne den, skal du bruge følgende: ```bash gcloud firestore databases restore --source-backup=BACKUP_LOCATION --destination-database="DESTINATION_DATABASE" ``` Erstat BACKUP_LOCATION med "Name" fra listen over backups, og DESTINATION_DATABASE med navnet på databasen du vil gendanne til. Du kan ikke gendanne til en eksisterende database, så det skal være en ny database. > [!WARNING] Du kan ikke tilgå databasen før backuppen er gendannet helt. Du kan se hvor langt den er, ved at køre følgende command: ```bash gcloud firestore operations list --database=DATABASE_NAME ``` Erstat DATABASE_NAME med navnet på databasen du gendanner til, som hed DESTINATION_DATABASE i commanden over. Dokumentation fra Google: https://cloud.google.com/firestore/docs/backups