Backup och återställning av MySQL

Inledning

Om du använder MySQL och är rädd om din data rekommenderar vi alltid att ta backup med mysqldump. För att få med alla backuper kan du använda följande skript.

MySQL-backupskript

#!/bin/sh
if [ -z $3 ]; then
    echo "Wrong syntax..."
    echo "use: $0 <mysql_root> <mysql_password> <dump_dir>"
    exit
fi
echo Dumping MySQL database to $3.
umask 077
rm $3/*
mkdir $3 &>/dev/null
cd $3
for i in `echo "SHOW DATABASES" |/usr/bin/mysql -s -u $1 -p$2`; do
     /usr/bin/mysqldump --single-transaction -f -u $1 -p$2 $i >$i.sql
    if [ $? -ne 0 ] ; then
            echo ERROR: Fail when dumping $i
    fi
done
du -sh $3
echo Databasedump done

Efter att du har skapat denna fil behöver du modifiera den med följande kommando:

chmod +x /usr/local/bin/mysqlbackup.sh

Detta skript hade kunnat köras i crontab med följande instruktion, för att spara databasen till fil varje dag klockan 22:00:

0 22 * * * /usr/local/bin/mysqlbackup.sh root YOUR_DATABASE_PASSWORD /root/mysqldumps

Återställning av MySQL

Om vi förutsätter att man som sysadmin har en korrekt backup tagen med mysqldump kan det ändå vara svårt att återläsa delar av en databas. För att backuper och återställningar ska gå så snabbt som möjligt optimerar mysqldump frågorna som blir av backupen.

För att återläsa hela databasen kör du följande kommando mysql -u <user> -p < databas.sql

Om du vill bryta ut enskilda tabeller att återläsa så kan du göra på följande sätt.

# mysqldump --skip-extended-insert databas

INSERT INTO `data1` VALUES (1,'abcdefghijklmn..');
INSERT INTO `data1` VALUES (2,'abcdefghijklmn..');
INSERT INTO `data1` VALUES (3,'abcdefghijklmn..');
INSERT INTO `data1` VALUES (4,'abcdefghijklmn..');
INSERT INTO `data1` VALUES (5,'abcdefghijklmn..');
INSERT INTO `data1` VALUES (6,'abcdefghijklmn..');
INSERT INTO `data1` VALUES (7,'abcdefghijklmn..');
INSERT INTO `data1` VALUES (8,'abcdefghijklmn..');

Detta gör vi då det vanliga kommandot # mysqldump databas lätt kan uppfattas som svårläst.

Ganska enkelt att lösa och om du vill återställa vissa speciella rader är det också enklare då du kan välja ut de ur filen och köra de separat, istället för att återläsa hela databasen.

Hittar du inte det du söker?

Kontakta oss gärna för mer information. Vi hjälper dig att komma fram till den bästa lösningen för dina behov.

Skicka e-post Ring 0200-23 88 00