Siden det ikke fungerer å ta "live" filbackup av databaser, må vi ha egne backuprutiner for disse. I tillegg ønsker vi to typer backup fra en databaseserver:
- En backup av alle databasene på serveren, i et format som lar oss raskt komme i drift igjen ved system-/databasekræsj
- Backup på database-/tabellnivå, tilgjengelig for brukerne/eierne av dataene, i et format som lar dem selv legge inn igjen det nødvendige dersom de skulle ha behov for det.
Full backup
Foreløpig er tanken å stoppe databasen, ta et filsystem-snapshot, starte databasen, og ta backup av det nødvendige fra snapshottet.
Backup på database-/tabellnivå
Gitt at vi har full backup som vi kan kjøre opp på en alternativ, temporær databaseserver for å dumpe ut data på forespørsel, vil backup på db-/tabellnivå være et ekstratilbud for å kunne spare tid og arbeid.
Dette kan gjøres f.eks. ved at en bruker kan opprette ~bruker/.db-backup/ og legge en fil CONFIG der som inneholder linjer på formen databasenavn.tabellnavn. Så kan vi kjøre en nattlig cron-jobb som tar backup til ~bruker/.db-backup/database/tabell for de brukerne som har en slik CONFIG-fil. Denne vil selvsagt måtte sjekke brukernavn mot tilgang til databasene i CONFIG, etc.
[JG 10-mar-05]
I cron.daily kjøres nå script /local/drift/mysqlbackup dersom /etc/mysqlbackup.conf finnes. Dette kjører /opt/mysql/bin/mysqldump -u $user --password=$pw --all-databases og piper dette til gzip og lagere det i ${date}.sql.gz i en katalog angitt i /etc/mysqlbackup.conf. Men det bør endres til å kunne ta en ta en dump per database og så legges alle dumpfilene i en <tidspunkt>.tar.gz fil i backupkatalogen (som bør være en annen fysisk disk enn der databasen ligger). Datamengden vi har nå i våre databaser er ikke større enn av vi kan gjøre dette på alle serverer der vi kjører mysql (er det snakk om mange gigabyte og mer blir det noe annet). Backupfilene fjernes etter en angitt tid (bør kunne settes i konfigfilen).
[ Referanse for Postgresql http://www.postgresql.org/docs/current/static/app-pgdump.html Mulig en bør replikere db elns for å få snapshot. Noe tilsvarende for MySQL? -- AslakRaanes ]