Omdat ik al eens te kampen heb gehad met een corrupte database heb ik uitgezocht hoe o.a. ik de databases voor o.a. photostation geautomatiseerd kan backupen. Bij deze mijn WIKI voor een database backup.
Databases voor de multimedia services, photo station en surveillance draaien als postgre sql database op de synology (heb zelf een DS107+ met FW 2.0_722). De user 'admin' heeft de rechten op deze databases.
Deze database worden (voor zover ik weet) standaard niet gebackuped. Hieronder een methode om ze dagelijks te backup-en (op b.v. een externe USB-stick) met de mogelijkheid om een week terug te gaan.
Stap 1: Login on de nas via telnet of ssh (root)
Stap 2: Maak een map aan waar de backups worden opgeslagen, b.v.:
mkdir /volumeUSB1/usbshare/synologydb
Van belang is dat user admin schrijfrechten heeft op de map. Controleer dit. Rechten geven kan worden geregeld door admin eigenaar te maken (chown admin /volume...):
Stap 3: Backup script maken in de map /usr/local/bin:
Maak de map /usr/local/bin eerst aan indien deze nog niet bestaat (mkdir directory)
Maak een backupscript b.v. met de naam synodbbackup aan:
#! /bin/sh
WKDAY=`date +%a`
BACKUPFLDR="/volumeUSB1/usbshare/synologydb"
/usr/syno/pgsql/bin/pg_dump photo >$BACKUPFLDR/photo-$WKDAY.sql
/usr/syno/pgsql/bin/pg_dump mediaserver >$BACKUPFLDR/mediaserver-$WKDAY.sql
/usr/syno/pgsql/bin/pg_dumpall >$BACKUPFLDR/complete-$WKDAY.sql
Stap 4: Maak het uitvoerbaar:
chmod +x /usr/local/bin/synodbbackup
Stap 5: Test:
Inloggen als admin en script uitvoeren:
su admin
/usr/local/bin/synodbbackup
Indien het script geen output geeft is het goed gegaan. Check de backup map.
Stap 6: Gescheduled uitvoeren via cron.
Pas /etc/crontab (user root!) aan met vi, b.v.:
#minute hour mday month wday who command
0 0 * * * root /usr/sbin/ntpdate -b pool.ntp.org
5 0 * * * root su admin -c /usr/local/bin/synodbbackup
Enkele vi tips: regel copieren: yyp, insert (naar edit mode): i, delete: x, uit edit mode: [esc], opslaan: :wq!, afsluiten zonder opslaan: :q!
LET OP! Gebruik TABS tussen de velden!
De extra regel zorgt voor een dagelijkse backup om 0:05 uur.
Stap 7: Cron herstarten.
DIt kan door de diskstaten op nieuw te starten of door crond te stoppen en te starten:
killall crond
crond
Restoren van database gaat met /usr/syno/pgsql/bin/pg_restore < backupfile.sql
LET OP! User ADMIN gebruiken en uitkijken wat je restored. Mogelijk moet eerst de corrupte database voorafgaand worden verwijderd met het dropdb statement. Indien je een default database wilt kun je dit commando ook zonder een restore gebruiken. In dat geval wordt bij het opstarten van de diskstation een nieuwe database aangemaakt.