分类: Mysql/postgreSQL
2009-02-21 10:31:57
备份策略三、使用mysqldump备份数据库
mysqldump
对于中等级别业务量的系统来说,备份策略可以这么定:第一次完全备份,每天一次增量备份,每周再做一次完全备份,如此一直重复。而对于重要的且繁忙的系统来说,则可能需要每天一次全量备份,每小时一次增量备份,甚至更频繁。为了不影响线上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制(replication),在
备份策略布置:
(1)、创建备份目录
Shell>
Shell>
(2)、启用二进制日志
采用
启用
[mysqld]
log-bin
然后启动
(3)、配置SSH密钥登录,用于将MySQL备份传送到备份服务器(如果备份服务器为Windows,请跳过此部)。
1)、在MySQL所在服务器(192.168.0.20)生成SSH密钥
[root@lab
Generating
Enter
Enter
Enter
Your
Your
The
c2:96:9f:2d:5a:8e:08:42:43:35:2f:85:5e:72:f8:1c
2)、在备份服务器(192.168.0.200)上创建目录,修改权限,并传送公钥。
[root@lab
The
RSA
Are
Warning:
root@192.168.0.200's
[root@lab
root@192.168.0.200's
id_rsa.pub
3)、测试SSH登录
[root@lab
Last
[root@lib
(4)、设置crontab任务,每天执行备份脚本
shell>
#每个星期日凌晨3:00执行完全备份脚本
0
#周一到周六凌晨3:00做增量备份
0
mysqlFullBackup.sh注释:
#!/bin/sh
# Name:mysqlFullBackup.sh
# PS:MySQL DataBase Full Backup.
# Write by:i.Stone
# Last Modify:2007-11-17
#
# Use mysqldump --help get more detail.
#
# 定义变量,请根据具体情况修改
# 定义脚本目录
scriptsDir=`pwd`
# 定义数据库目录
mysqlDir=/usr/local/mysql
# 定义用于备份数据库的用户名和密码
user=root
userPWD=111111
# 定义备份目录
dataBackupDir=/tmp/mysqlbackup
# 定义邮件正文文件
eMailFile=$dataBackupDir/email.txt
# 定义邮件地址
eMail=alter@somode.com
# 定义备份日志文件
logFile=$dataBackupDir/mysqlbackup.log
DATE=`date -I`
echo "" > $eMailFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $eMailFile
cd $dataBackupDir
# 定义备份文件名
dumpFile=mysql_$DATE.sql
GZDumpFile=mysql_$DATE.sql.tar.gz
# 使用mysqldump备份数据库,请根据具体情况设置参数
$mysqlDir/bin/mysqldump -u$user -p$userPWD \
--opt --default-character-set=utf8 --extended-insert=false \
--triggers -R --hex-blob --all-databases \
--flush-logs --delete-master-logs \
--delete-master-logs \
-x > $dumpFile
# 压缩备份文件
if [[ $? == 0 ]]; then
# Delete daily backup files.
# Delete old backup files(mtime>2).
# 如果不需要将备份传送到备份服务器或备份服务器为Windows,请将标绿的行注释掉
# Move Backup Files To Backup Server.
#适合Linux(MySQL服务器)到Linux(备份服务器)
else
fi
# 写日志文件
echo "--------------------------------------------------------" >> $logFile
cat $eMailFile >> $logFile
# 发送邮件通知
cat $eMailFile | mail -s "MySQL Backup" $eMail