Hvis du selv har mod på at lave en automatisk MySQL backup, kan du f.eks tage et kig på rsync. Grunden til jeg taler om backup er at det jo også er en del af at gøre sin VPS sikker. Årsagen til det er, at jeg ikke er blind for, det før eller siden, lykkes nogen at slette poster hvis man blogger, eller worst case nogen der sletter det meste. Derfor er det godt at have en eller anden form for backup, for hurtig reetablering af tabte. MySQL er for de fleste så bare 1 service ud af mange, men man kunne starte her og udbygge.

Når du skal lave en MySQL backup, bør du overveje og gøre følgende;

  1. Hvad er det du skal have lavet en backup af, og hvornår vil du gøre det
  2. Hvor mange kopier af en backup skal gemmes før den slettes igen
  3. Lav et script der kan lave en backup
  4. Test at du rent faktisk kan lave en tilfredsstillende restore 
  5. Sørg evt. for at du f.eks hjemmefra har et script der kan hente seneste backup så du har en kopi på anden lokalisation. 

I mit tilfælde har jeg besluttet mig for at lave en MySQL backup, 2 gange om dagen. Da backuppen køres af min unix bruger vpsrun, skal backupen kunne ændre fil rettigheder, således at min ftp bruger vpsbackup kan se og hente sidste backup hjemmefra. Du behøves slet ikke 2 brugere til det her, det er bare hvordan jeg har sat det op.

Jeg har sat følgende, tænkt, filstruktur op;

  1. /home/vpsrun/script indeholder scripts som afvikles af vpsrun 
  2. /home/vpsbackup/backup tidligere backups
  3. /home/vpsrun/mysql en boblende fresh backup 

Jeg har valgt rsync som værktøj bare for at vise brugen af dette. Det bivirker dog, at MySQL skal stoppes, backup tages, og MySQL skal startes for at sikre en konsitent backup.

rsync er et program der i lighed minder om rcp, men har flere tilgængelige options og benytter rsync remote-update protekolen der virkelig sætter hastigheden op når destinations filerne opdateres.

rsync remote-update protekolen tillader rsync kun at overføre forskelle mellem 2 backup sets over en netværks forbindelse vha. en effektiv checksums algorime.

Lad os få lavet mysql_backup.sh. Hertil kan du benytte f.eks VI eller andet:

!#/bin/bash
/etc/init.d/mysqld stop

rsync -avpz /var/lib/mysql/ /home/vpsrun/mysql --delete
cd /home/vpsrun/mysql
tar -czvf databaser.tar.gz .
chown vpsbackup:vpsbackup databaser.tar.gz

mmddyy=`date +%m%d%y_%H%M`
cd /home/vpsrun/mysql
mv databaser.tar.gz /home/vpsbackup/backup/databaser.tar.gz.$mmddyy

/etc/init.d/mysqld start

Gem filen, og giv den execute rettigheder og test at scriptet virker, og er det tilfældet så tilføj følgende til din crontab, det gøres vha. crontab -e

00 09 * * * /home/vpsrun/script/mysql_backup.sh
00 18 * * * /home/vpsrun/script/mysql_backup.sh

-avzp betyder; archive, verbose og komprimer samt set destinations fil rettighederne til det samme som source rettighederne.

Det sidste er, i mit tilfælde, at jeg kun vil have disse backups liggende i 10 dage, derfor tilføjes følgende til crontab.

15 19 * * * find /home/vpsbackup/backup/* -name "databaser*" -mtime +10 -exec rm {} ;