Article

Automatiserede Firestore sikkerhedskopier i 5 nemme trin

Efter at have fulgt denne vejledning har du planlagt automatiserede daglige Firestore-sikkerhedskopier, der opbevares i et år ved hjælp af forskellige lagerklasser for at reducere lageromkostningerne.

Opsætning af automatiserede Firestore sikkerhedskopier i 5 nemme trin

Den realtidsskemafri database Firestore fra Firebase leveres ikke med indbyggede automatiserede sikkerhedskopier. I dette blogindlæg guider vi dig gennem opsætning af automatiserede Firestore sikkerhedskopier inspireret af, hvordan vi gør det hos Kvalifik.

☝️ Vi antager, at du er ejer af Firebase-projektet, og at du har aktiveret fakturering. Læs mere her.

Firestore-sikkerhedskopierne initieres af en skyfunktion og gemmes i en dedikeret lagerspand på Google Cloud Platform.

1) Anvend passende servicekontorolle

Åbn Google Cloud-platformen og vælg det Google Cloud-projekt, der er knyttet til dit Firebase-projekt.

Gå til IAM & Admin → IAM.

Rediger medlemmet „[project-id] [@appspot .gserviceaccount.com]“.

Tilføj en anden rolle: „Cloud Datastore Import Export Admin“.

Klik på Gem.

2) Opret lagerspand til Firestore sikkerhedskopier

Gå til afsnittet Opbevaring i Google Cloud Platform.

Opret spand:

  1. Navngiv din spand, eks:
  2. Navn: [projekt-id] -backup
  3. Vælg, hvor du vil gemme dine data, vi foreslår:
  4. Placeringstype: Multi-region
  5. Beliggenhed: eu (flere regioner i Den Europæiske Union)
  6. Vælg en standardlagringsklasse for dine data, vi foreslår:
  7. Standard lagerklasse: Nearline
  8. Vælg, hvordan du styrer adgangen til objekter, vi foreslår:
  9. Adgangskontrol: Uniform
  10. Avancerede indstillinger, vi foreslår:
  11. Opbevaringspolitik: Opbevar objekter i 7 dage

Dette sikrer, at sikkerhedskopier fra de sidste syv dage ikke ved et uheld kan slettes.

Klik på Opret.

3) Konfigurer indstillinger for skovllivscyklus

Du er velkommen til at justere disse livscyklusindstillinger, så de passer til dine behov.

Gå til Livscyklusindstillinger, og tilføj følgende regler:

  1. Vælg en handling: Angiv lagringsklasse til Coldline
  2. Vælg objektforhold: Alder: 7 dage
  3. Vælg en handling: Angiv lagringsklasse til Arkiv
  4. Vælg objektforhold: Alder: 30 dage
  5. Vælg en handling: Slet objekt
  6. Vælg objektforhold: Alder: 365 dage

4) Opsæt cloud-funktion til at starte sikkerhedskopier

Vi anbefaler at bruge miljøvariabler for at kunne dele den samme skyfunktion på tværs af flere Firebase-projekter. For at gøre dette skal du køre følgende kommando på din lokale computer (med Firebase CLI installeret):

⚠️ Hvis du har flere miljøer, skal du sørge for at skifte til det rigtige projekt ved hjælp af kommandoen „firebase use [miljønavn]“.

$ firebase functions:config:set backup.bucket_name="*[project-id]*-backup"

Tilføj følgende Typescript cloud-funktion FirestoreBackupDaily. Bemærk, at denne skyfunktion er tilpasset fra den fundne Javascript-version her.

import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'

const client = new admin.firestore.v1.FirestoreAdminClient()
const env = functions.config()

export const firestoreBackupDaily = functions
.region('europe-west1') // Change to appropriate region.
.pubsub.schedule('0 0 * * *') // Every 24 hours (at midnight).
.onRun(async () => {
const projectId = process.env.GCP_PROJECT || process.env.GCLOUD_PROJECT
const databaseName = client.databasePath(projectId, '(default)')
const timestamp = new Date().toISOString()
const dest = `gs://${env.backup.bucket_name}/firestore/${timestamp}`

try {
const responses = await client.exportDocuments({
name: databaseName,
outputUriPrefix: dest,
collectionIds: [] // Leave empty to export all collections.
})
const response = responses[0]
console.log(`Operation Name: ${response['name']}`)
} catch (error) {
console.error(error)
throw new Error('Export operation failed.')
}
})

Til sidst skal du implementere din cloud-funktion ved hjælp af følgende kommando:

$ firebase deploy --only functions:firestoreBackupDaily

5) Test din skyfunktion

Gå til Cloud Scheduler side og klik på „Kør nu“ i rækken svarende til din nyoprettede skyfunktion. Kort efter skulle du se en Firestore-sikkerhedskopi i mappen „firestore“ i den lagerspand, der blev oprettet tidligere.

Næste trin

For at afslutte denne opsætning anbefaler vi, at du opretter overvågning og en plan for gendannelse efter nedbrud. Bemærk desuden, at løsningen præsenteret her kun udfører sikkerhedskopier af Firestore. Du kan også være interesseret i at sikkerhedskopiere Firebase Storage og Firebase Auth. Førstnævnte kan opnås ved at konfigurere et dagligt overførselsjob på Google Cloud Platform, mens sidstnævnte er mere vanskelig (husk også at gemme en kopi af adgangskodehashparametrene!). Du kan bruge funktionen ListUsers præsenteret her i en planlagt skyfunktion svarende til den, der blev præsenteret tidligere. Vi dækker muligvis nogle af disse emner i et fremtidigt blogindlæg.

Copied