本篇文章主要讲如何使用壳实现mysql全量,增量备份。增量备份在周一——周六凌晨3点,会复制mysql-bin.00000 *到指定目录;而全量备份则使用,mysqldump将所有的数据库导出,每周日凌晨3点执,并会删除上周留下的mysq-bin.00000 *。然后对mysql的备份操作会保留在贝克。日志文件中。如下图:
开始:2013年05月02日15:10:57结束:2013年05月02日15:12:16 20130502. sql。tgz succ是由DBFullyBak.sh产生的,每周备份一次;mysql-bin。000001复制;mysql-bin。000002跳过!;2013年05月02日16:53:15 Bakup succ !则是由DBDailyBak.sh产生的,每天一次。
实现:
1。编写全量备份脚本
# vim/root/DBFullyBak。sh//添加以下内容
# !/bin/bash
# #项目,,每周使用mysqldump完全备份mysql数据!
# #历史,郭,2013-04-27,,第一个
# #路径,,....
BakDir=/home/mysql/备份日志文件
=/home/mysql/备份/bak。日志
日期=叭掌? % Y % m % d”
开始='日期+“% Y年% m月% d日% H: % m: % S”的
DumpFile=$ Date.sql
GZDumpFile=$ Date.sql。tgz
如果[!- d“BakDir美元”);然后
,,,,mkdir - p $ BakDir
fi
cd $ BakDir
/usr/地方/mysql/bin/, mysqldump -uroot -p123456——快——所有数据库——flush-logs,——delete-master-logs单一事务比;美元DumpFile
/bin/焦油czvf GZDumpFile DumpFile美元
/bin/rm DumpFile美元去年=
“日期+“% Y年% m月% d日% H: % m: % S”的
回声开始:美元开始结束:去年GZDumpFile美元成功! ! !在比;美元的日志文件
cd $ BakDir/每日rm - f *
2。编写增量备份脚本
#猫/root/DBDailyBak。sh//内容为下
# !/bin/bash
# #项目,,每天使用cp备份mysql数据!
# #历史,郭,2013-05-02,,第一个
# #路径,,....
BakDir=/home/mysql/备份/每日
BinDir=/数据/mysql
日志文件=/home/mysql/备份/bak.log
BinFile=/数据/mysql/mysql-bin。指数
如果[!- d“BakDir美元”);然后
,,,,mkdir - p $ BakDir
fi
/usr/地方/mysql/bin/mysqladmin -uroot -p123456 flush-logs
#这个是用于产生新的mysql-bin。00000 *文件
Counter=皐c - l $ BinFile | awk的{打印1美元}'
NextNum=0
#这个为循环用于比柜台,美元对美元NextNum这两个值来确定文件是不是存在或最新的。
文件,“猫BinFile美元”
,做,,,基?' basename美元文件'
,,,,#:用于截取mysql-bin.00000 *文件名,去掉。/mysql-bin.000005前面的。/
,,,,NextNum=expr NextNum + 1美元的
,,,,如果[$ NextNum eq $计数器]
,,,,然后
,,,,,,,,echo $基地跳过!,在在美元的日志文件
,,,,其他
,,,,,,,,dest=$ BakDir/$基地
,,,,,,,,如果(测试- e dest美元)
,,,,,,,,#测试- e用于检测目标文件是否存在,存在就写存在!到日志文件美元去。
,,,,,,,,然后
,,,,,,,,,,,,回声,美元基础存在!在比;美元的日志文件
,,,,,,,,其他
,,,,,,,,,,,,cp BinDir美元/基地BakDir美元
,,,,,,,,,,,,,回波基地复制比美元的在美元的日志文件
,,,,,,,,fi
,,,,fi
完成回声“日期+“% Y年% m月% d日% H: % m: % S”的美元未来Bakup成功!在比;美元的日志文件
3。设置crontab任务,每天执行备份脚本
复制代码代码如下:
# crontab - l//内容为下
#每个星期日凌晨三点执行完全备份脚本
0 3 0/root/DBFullyBak * *。sh在/dev/null 2祝辞,1
#周一到周六凌晨三点做增量备份
0 3 * * 1 - 6/root/DBDailyBak。sh在/dev/null 2祝辞,1