定时备份Mysql数据库 不指定

zzh , 2010/08/10 16:14 , 数据库服务器 » MySQL管理 , 评论(0) , 阅读(2324) , Via 本站原创 | |
数据库可是网站的核心啊,是维护中的重中之重,为了避免意外,你需要定期备份mysql数据库,这里介绍如何将数据库定期备份到邮箱.

1.下面是Sino Unix 目前备份mysql数据库用的脚本

#!/bin/bash
date=`date +%Y%m%d`
mysqldump --user=root --password=sinounix --lock-all-tables --all-databases > /bak/$date.sql
tar zcPf /bak/$date.sql.gz /bak/$date.sql
echo "`date +%Y%m%d` DB" | mutt -a /bak/$date.sql.gz -s "$date DB" admin@sinounix.com
rm -f /bak/$(date +%Y%m%d -d "7 days ago").sql*

将以上代码保存为/bak/bakdb.sh

这里解释下参数

1>. --lock-all-tables 保证备份的数据库是同步的

2>. tar zcPf 由于是绝对路径需要用到选项 P

3>. rm -f /bak/$($date -d "7 days ago").sql* 删除七天前的sql和sql.gz文件

2.另外你还需要做的设置是发件人信息.

编辑~/.muttrc

set envelope_from=yes
set from=bak@sinounix.com
set realname="SinoUnix DBA"
set use_from=yes

3.利用crontab 实现任务计划

目前Sino Unix 每天凌晨 03:00 备份数据库.

00 03 * * * sh /bak/bakdb.sh

4.注意将sinounix.com这个域设置为白名单,如果收不到邮件

具体可在相关邮箱中设置

5.另外还有两种备份方式你能需要用到

mysqldump --user=root --password=sinounix --lock-all-tables 数据库名 > /bak/$date.sql

mysqldump --user=root --password=sinounix --lock-all-tables --databases 数据库1 数据库2 > /bak/$date.sql