[LUGOS-PROG] MySQL Backup Baze

Jure Koren jure at aufbix.org
Tue Dec 18 08:48:19 CET 2001


Once upon a time, say on Mon, Dec 17, 2001 at 11:44:33PM +0100,
Andrej Vidmar sat down and thought...
> Pozdravljeni,
> Rad bi opravljal dnevno popoln backup mysql podatkovnih baz in 
> me zanima na kaksen nacin to realizira kdo drug. 
> Sam sem premisljeval, da bi preko crona vsak dan prekopiral 
> celotno vsebino direktorija DATA, ki se nahaja v direktoriju mysql, 
> kjer je ta tudi instaliran,  na neko drugo lokacijo. 
> Saj direktorij DATA vsebuje vse podatke o podatkovni bazi(ah) mar 
> ne?

Ja, a pred tem MORAS narediti flush tables in lock tables write
na SQL nivoju, ali pa ubiti server (ker sicer obstaja majhna,
a grozljiva moznost da pri tem izgubis podatke). Ce so podatki
se posebej pomembni ti skoraj zagotovo nikoli ne bo narobe hodil
kak update log. Tako obicajno lahko ohranis podatke do nekaj
sekund pred sesutjem serverja, ce se ta kdaj zgodi.

> Karsnikoli drugi predlogi so dobrodosli in zazeljeni, ce poznate 
> kakorkoli boljsi nacin.

Jaz delam ponoci z mysqldump, ki sam skrbi za to da zaklepa
tabele, potem dump fajle zapakiram (tar) in zbasem na kaseto in
jih skopiram na se en disk.

Restore je enostaven, samo razpakiras dump fajle in jih
nafilas MySQLu.

Tukaj je skripta ki dela backup vsako noc:

#!/bin/bash
DBROOT=/usr/local/mysql-data
BACKUPROOT=/var/spool/backups/dios
echo "`date`: backing up mysql databases from $DBROOT"
cd $DBROOT
mkdir -p $BACKUPROOT/mysql_backup
for f in `find -type d` ; do
  if [ $f != . ] ; then
    b=`basename $f`
    /usr/local/bin/mysqldump $b -uroot -p<something> --opt --flush-logs > $BACKUPROOT/mysql_backup/$b.dump
    echo `date`: backed up $b.
  fi
done
echo `date`: packing...
tar cf $BACKUPROOT/dumps-`date +"%Y-%m-%d-%H-%M"`.tar $BACKUPROOT/*dump
echo `date`: backups done.


-- 
Jure Koren                      |                       unix administrator
jure at kiss.uni-lj.si             |             gnu/Linux software developer



More information about the lugos-prog mailing list