MySQL实现增量备份小结
当我们误删了MySQL数据库某张表中的数据或者整张表,我们可以使用MySQL的增量备份机制来实现误删数据的恢复,接下来就来总结下MySQL的增量备份技术是如何实现的,以及其中需要我们注意的事项!
首先,对于ddl和dml语句的二进制备份,我们要清楚的是MySQL在5.0还不支持增量备份,5.1开始支持。
增量备份的定义
MySQL数据库会以二进制的形式,自动把用户对MySQL数据库的操作,记录到文件夹,当用户希望恢复的时候可以使用备份文件进行恢复。
下面,我们开始详细说明如何配置增量备份机制。
首先,要实现增量备份,需要在my.ini文件中配置备份路径,我们可以在[mysqld]下配置:
#这里指定把备份文件放在哪个目录下
|
|
然后重启MySQL服务器即可,增量备份就启动了:
|
|
此时会在在d:\binlog\下生成两个文件
|
|
此时,我们可以使用mysqlbinlog工具来查看生成的二进制文件,在cmd中进入mysql目录下的bin中 使用msyqlbinlog后面加上mylog.000001,可以看到所有ddl和dml操作(不包括查询操作语句),且每一个操作都有具体的位置和时间点的记录。
接下来,创建数据表进行测试:
|
|
插入数据:
|
|
切换到mysql下的bin目录,使用mysqlbinlog查看二进制文件:
|
|
结果如下图:
pic
图中已经显示,mysql已经帮我们把每一个操作(再次提醒:不记录select查询操作)的时间记录下来了,同时分配了一个位置position,我们就可以根据时间和位置来恢复数据。
下面,我们使用drop来删除表;
|
|
此时,数据库中已经不存在test这个数据表了,现在我们可以使用mysqlbinlog来进行恢复了。
在进行恢复数据之前,先总结下mysql进行恢复数据的两种方式:
通过时间来恢复
一种是:
|
|
另一种是:
|
|
值得注意的是,时间格式,使用双引号包裹起来。
通过位置来恢复
一种是:
|
|
另一种是:
|
|
下面,我们来进行数据的恢复:
|
|
然后使用sql查看数据是否已经恢复;
|
|
经测试,发现数据的确恢复成功,同理,我们也可以使用时间来恢复数据。
如何关闭增量备份
把my.ini文件中mysqld下面的log-bin=路径前面添加#号,然后重启mysql服务器即可。
注意:
当随着时间的推移,二进制文件里面的数据会越来越大,所以要定期的做一些清理。
- 使用mysql命令reset master来把二进制日志索引文件重新设置为空。
- 设置my.ini中的参数[mysqld]下的-EXPIRE_LOGS_DAYS,此参数是设置日志过期的天数,过期的日志将被自动删除。
建议:
每周做一个全备份mysqldump,然后同时启用增量备份,把过期时间设为大于等于7。此时,如果出现数据库崩溃,就可以先完全恢复,然后再增量恢复。如果担心误操作,可先查看增量日志,然后再进行增量备份。
- 原文作者:maratrix
- 原文链接:https://maratrix.cn/post/2014/10/21/mysql_mysqlbinlog_dump_note/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。