如果MySQL的数据已经达到几个G或更多,可以使用xtrabackup之类的企业级开源软件,进行热备份;对于wordpress或discuz!,也分别有相应的数据库备份插件。其余的备份,可以参考下面的脚本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/bin/bash #localhost by default dbhost=DBHOST dbuser=DBUSER dbpass=DBPASSWD #dbnames, seperated by space dbs="DB1 DB2" dir=~/bkup mailer=~/bin/eml for db in $dbs do fname=$dir/${db}_`date +%Y-%m-%d`.sql fname1=$dir/${db}_`date +%Y-%m-%d -d "5 days ago"`.sql.bz2 mysqldump -h $dbhost -u $dbuser -p$dbpass --databases $db> $fname bzip2 $fname rm -rf $fname1 recepient=rex@zhasm.com day=`date +%A` #only send email on every Monday if [ $day == "Monday" ]; then echo $fname $mailer -a $fname.bz2 -t $recepient -s "[DB][$db][`date +%Y-%m-%d`] Database Backup" fi done |
- 上面程序中用到的mailer脚本,是一个用python实现的附件发送脚本,源码在这里 mailer 。
- 对于多个数据库,分别备份至单独的文件。如果每个库都不大,也可以偷懒放到一个文件中。只需在
mysqldump--databases添加所有需备份的数据库名称即可,使用空格隔开。
0 Comments.