一.思路:
mysql备份采用全量备份+增量备份的方式进行数据实时备份,
恢复的时候采用先执行全量备份文件,然后再进行抽取增量sql进行执行
二.全量备份:
1.新建一个back_up.bat,内容如下:
@echo off
set “Ymd=%date:,4%%date:5,2%%date:~8,2%”
G:/mysql/database/setup/bin/mysqldump --opt -u root --password=******* -R -E databaseName >
G:/mysql/database/backup/test_%Ymd%.sql
@echo on
G:/mysql/database/setup/bin/ 是数据库安装路径
G:/mysql/database/backup/ 是数据库备份文件路径
创建好之后通过windows的定时任务执行。
三.增量备份
增量备份首先要打开mysql的binlog
找到mysql安装路径下的my.ini文件并打开
找到[mysqlid]在下面添加
log-bin=“G:/mysql/database/binLog/binlog”(这个路径意思是将产生的binlog日志放到该路径下)
binlog_format=“MIXED”
保存并重启mysql服务,便可以在G:/mysql/database/binLog/路径下看到后缀为binlog.000001和binlog.index两个文件。
此处还有一个问题就是通过增量恢复怎么知道时间节点在哪里呢?
我在这里的解决思路是通过mysql的免密码登陆执行flush logs产生新的binlog文件,也是通过windows的定时任务去做,如果各位看官有什么更好的办法可以下方留言。
具体做法是在[mysqlid]下面添加skip-grant-tables,然后新建flushLog.bat,内容是mysql -uroot -p******** -e “flush logs”;然后通过定时任务去启动就可以在指定时间点生成新的binlog文件了。
四.数据恢复
1.首先执行最新的全量备份sql文件,全量备份时间应该和新建binlog时间节点一样
2.抽取最新的binlog日志的sql文件并执行。
查看指定的binlog文件:show binlog events in ‘binlog.000001’;(这里的文件名以自己的为准);结果如下(网上找的,反正都差不多):
通过mysqlbinlog --start-position=29231 --stop-position=29346 binlog.000002 > G:\mysql\database\binLog\dept.sql这个命令将增量抽取为sql文件,然后进入mysql命令控制台,通过
“source **.sql” 命令执行(最好不要用navicate类似软件,试过,好像有问题)
五.定时清除binlog日志文件
为了避免太多的日志占据磁盘空间,最后再将日志定时清除做一下,通过修改my.ini文件中的设置就可以了
//修改expire_logs_days,x是自动删除的天数,一般将x设置为短点,如10;
expire_logs_days = x
//二进制日志自动删除的天数。默认值为0,表示“没有自动删除”