简单的数据库备份脚本

如果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添加所有需备份的数据库名称即可,使用空格隔开。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>