Backup
Utrulling av løsning for sikkerhetskopi av data på Dapla rulles ut til alle Dapla-team ila oktober 2025. Funksjonaliteten beskrevet i artikkelen vil gjelde fra løsningen er rullet ut for et team. Bevaringspolicy i bøttene kan benyttes nå.
SSBs evne til å gjenopprette data ved katastrofer, samt ved tilsiktet eller utilsiktet tap eller korrupsjon av data, ivaretas gjennom 2 ulike løsninger på Dapla:
Ekstern sikkerhetskopi (Backup)
Data i kilde-, produkt- og delt-bøtter sikkerhetskopieres til en ekstern lokasjon hver dag. Brukere som ønsker å gjenopprette filer herfra må kontakte Kundeservice i et eget skjema. Dette er anbefalt for brukere som ikke kan gjenopprette filer selv gjennom bevaringspolicy i bøttene (se under).Bevaringspolicy i GCS (Retention policy)
Alle GCS-bøtter i kilde- og standardprosjektet til Dapla-team har aktivert en bevaringspolicy som innebærer at tidligere versjoner av filer som blir overskrevet eller slettet bevares. Hver nye versjon lagres som en egen kopi, og eldre (noncurrent) versjoner bevares i 180 dager, inntil det finnes 2 eller 3 nyere versjoner av samme fil i bøtta. Brukere kan gjenopprette disse selv (se kodeseksempel her).
Disse løsningene gjelder for de standardiserte bøttene som tilbys av plattformen gjennom features som dapla-buckets og shared-buckets. Det er disse ressursene som typisk benyttes av statistikkproduserende managed Dapla-team.
Dapla-team som oppretter sine egne ressurser, eller har spesielle behov knyttet til sikkerhetskopier, må selv sørge for at disse bli ivaretatt.
Ekstern sikkerhetskopi
Et Dapla-team som har featuren dapla-buckets og shared-buckets aktivert vil automatisk ha sikkerhetskopi på følgende bøtter:
Kildebøtte
ssb-<team>-data-kilde-prodProduktbøtte
ssb-<team>-data-produkt-prodDelt-bøtter
ssb-<teamnavn>-data-delt-<kortnavn>-prod
ssb-<teamnavn>-data-delt-delomat-<kortnavn>-prod
Mapper som heter temp/ eller tmp/, og som ligger på toppnivå i mappestrukturen, vil ikke inkluderes i sikkerhetskopien. F.eks. hvis du lagrer data i ssb-<team>-data-produkt-prod/temp/ så vil dataene i denne mappen IKKE sikkerhetskopieres, mens data lagres i ssb-<team>-data-produkt-prod/inndata/temp/ vil sikkerhetskopieres. Bakgrunnen for unntaket er å gi brukere muligheten å jobbe med midlertidige filer som ikke krever sikkerhetskopi.
Sikkerhetskopier tas automatisk hver dag kl. 21, og gjenopprettingspunkter lagres i inntil 500 dager.
Dette betyr at du kan gjenopprette filer fra en hvilken som helst dag de siste 500 dagene.
Gjenoppretting av filer
Gjenoppretting av filer fra en sikkerhetskopi gjøres på følgende måte:
- Gå til https://ssb.pureservice.com/
- Velg “Skjema for gjenoppretting av data”
- Fyll ut følgende felter i skjemaet:
- Plattform: velg Dapla
- Filsti: angi full sti til filen eller mappen som skal gjenopprettes
- Gjenopprettingsdato: datoen du ønsker å hente filen fra
- Skal filen overskrives?: velg Ja eller Nei avhengig av behov
- Plattform: velg Dapla
- Send inn skjemaet
Kundeservice vil behandle forespørselen og gjenopprette filene i henhold til informasjonen du har gitt.
Det er mulig å gjenopprette filer, mapper og bøtter.
Bevaringspolicy i GCS
Alle bøttene som opprettes i featuren dapla-buckets eller shared-buckets har en bevaringspolicy som gjør at slettede eller overskrevne objekter kan gjenskapes i en viss periode.
Filer som overskrives eller slettes blir satt til noncurrent. En non-current versjon blir slettet hvis den er mer enn 180 dager gammel og det er minst 2+ eller 3+ nyere versjoner i bøtta, avhengig av type bøtte:
Kildebøtta
I kildebøtta blir non-current versjoner slettet hvis det er mer enn 3 nyere versjoner.
Produktbøtta
I produktbøtta blir non-current versjoner slettet hvis det er mer enn 2 nyere versjoner.
Delt-bøtter
I delt-bøtter blir non-current versjoner slettet hvis det er mer enn 2 nyere versjoner.
Gjenoppretting av filer manuelt
Det er mulig å gjenopprette tidligere versjoner og nylig slettede filer manuelt uten å kontakte kundeservice. Fremgangsmåten er:
- Finn riktig generasjons-ID (versjon) for filen som skal gjenopprettes.
notebook
from google.cloud import storage
# Navn på databøtten og stien til filen som skal gjennopprettes
bucket_name = "ssb-dapla-felles-data-produkt-prod"
file_path = "restore/data2.parquet"
client = storage.Client()
bucket = client.get_bucket(bucket_name)
source_file = bucket.blob(file_path)
files = []
if bucket.versioning_enabled:
files.extend(bucket.list_blobs(prefix=file_path, versions=True))
files.extend(bucket.list_blobs(prefix=file_path, soft_deleted=True))
for file in files:
print("Name : ", file.name)
print("Generation Id : ", file.generation)
print("Updated on : ", file.updated)
print("Deleted on : ", file.time_deleted)
print("------------------------------------------")- Referer til generasjons-ID og gjenopprett filen.
Hvis filen er slettet bruker vi restore_blob funksjonen:
notebook
# Generasjons-ID på filen/versjonen som skal gjenopprettes
generation_id = 1717762673242818
bucket.restore_blob(object_name=file_path, generation=generation_id)Hvis vi ønsker å gjenopprette en tidligere versjon av en fil som ikke er slettet, bruker vi copy_blob funksjonen. Her kan vi også spesifisere nytt navn på filen med parameteret new_name:
notebook
# Nytt navn på filen
new_name = "restore/data2_restored.parquet"
# Generasjons-ID på filen/versjonen som skal gjenopprettes
generation_id = 1717762673242818
bucket.copy_blob(blob=source_file, destination_bucket=bucket, source_generation=generation_id, new_name=new_name)Man kan liste ut Live, non-current og soft-deleted versjoner fra GCC, som vist i Figur 1. Men man har ikke tilgang til Object details i GCC og kan derfor ikke hente ut ID-en til versjonen. Til dette må man bruke kode kjørt fra Dapla Lab.
