mysql二进制日志回滚_mysql数据库二进制日志回滚浅析

概念&功能

二进制日志是指,当你进行数据流的操作时,数据库会记录除了select以的sql操作,例如update、delete、alter……,记录的类型包含了完整的sql语句、操作时间、执行时间、错误代码等。

有了二进制日志,就可以将数据回滚到任意时刻,比如数据库崩溃的前夕,或者其他灾难的前一时刻,几乎可以做到数据0丢失,能够体验到时光倒流,如同“穿越”的感觉。

使用方法

要想使用二进制日志,首先确定你的数据库版本支持,自mysql5.1开始二进制日志就取代了原来的“更新日志”。

打开配置文件my.cnf进行选项设置

代码如下

12 [mysqld] log-bin=

这样当你重启mysql服务器的时候,就会创建相应的目录和文件。文件名是以数字序号为扩展名的文件,如果在配置文件中设置了分割大小值,当单个二进制文件达到这个限制时就会自动生成一个新的文件,也可以使用在工具mysqladmin中运行flush-logs命令来手动刷新,以及再次运行mysqldump进行完整备份时加参数–flush-logs或–deletel-masger-logs 来刷新或删除日志。

这些mysql日志我们可以使用mysqlbinlog二进制日志文件工具处理

服务器生成的二进制日志文件写成二进制格式。要想检查这些文本格式的文件,应使用mysqlbinlog实用工具。

应这样调用mysqlbinlog:

代码如下

shell> mysqlbinlog [options] log-files...

例如,要想显示二进制日志binlog.000003的内容,使用下面的命令:

代码如下

shell> mysqlbinlog binlog.0000003

输出包括在binlog.000003中包含的所有语句,以及其它信息例如每个语句花费的时间、客户发出的线程ID、发出线程时的时间戳等等。

查看二进制日志:

代码如下

1 mysqlbinlog xxx-bin.000989

配合grep筛选:

代码如下

1 mysqlbinlog xxxx-bin.000989 |grep uid=9527

当然也可以通过正则而模糊查看:

代码如下

1 mysqlbinlog xxxx-bin.[0-9]*

运行回滚操作:

12 #如果不是进行回滚,不要执行这条 mysqlbinlog xxxx-bin.[0-9]* | mysql

注意事项:

•如果在my.cnf中指定了默认编码,将会导致二进制查看时报错unknown variable ‘default-character-set=utf8′,这是一个bug,个人理解是由于客户端和配置文件的这一方式二进制根据没有进行相应的更新支持。预计在以后的版本中就消除这个bug。临时的解决方法就是注释掉配置文件中这一句,不用重启mysql服务,带使用完这个工具,在将注释去掉即可。

•如果使用了二进制日志,则对性能有一定影响,据官方预计在1%左右。当然,对于它所起到的强大作用而言,1%性能损耗是完全值得的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值