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.
#!/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
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.
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.