您的位置:首页 > 数据库 > MySQL

mysqlbinlog 恢复数据的四种方法

2015-09-30 17:29 731 查看
mysqlbinlog 命令

作用:mysqlbinlog 是用来解析mysql的binlog日志的。
[root@MySQL data]# file mysql-bin.000001
mysql-bin.000001: MySQL replication log
[root@MySQL data]#
mysqlbinlog日志无法直接用cat 查看,需要用mysqlbinlog命令转换为普通文件才能查看

也只有用mysqlbinlog命令把binlog日志转化为普通文件之后,才能用这个普通文件进行数据恢复

参数解析:

–start-datetime=datetime
从二进制日志中第1个日期时间等于或晚于datetime参量的事件开始读取。datetime值相对于运行mysqlbinlog的机器上的本地时区。该值格式应符合DATETIME或TIMESTAMP数据类型。例如:
shell> mysqlbinlog –start-datetime=”2004-12-25 11:25:56″ binlog.000003该选项可以帮助点对点恢复。

–stop-datetime=datetime
从二进制日志中第1个日期时间等于或晚于datetime参量的事件起停止读。关于datetime值的描述参见–start-datetime选项。该选项可以帮助及时恢复。

–start-position=N
从二进制日志中第1个位置等于N参量时的事件开始读。

–stop-position=N
从二进制日志中第1个位置等于和大于N参量时的事件起停止读。

-d 指定恢复binlog日志中的某个库的日志

##########################################
1、例子:基于位置点恢复
其中drop tables test1这个误操作的end_log_pos为9917,几下这个id,得出它前后操作的id分别为9916,9918
我们将进行位置恢复操作
只给stop指定位置,那么从日志文件开始恢复数据,恢复到stop指定时间点
mysqlbinlog --stop-position='9916' /var/log/mysql-bin.000001 | mysql -uroot -p
只给定start指定位置,那么就从start指定位置开始恢复,恢复到文件的结束
mysqlbinlog --start-position='9918' /var/log/mysql-bin.000001 | mysql -uroot -p

如果即给了start开始位置点,也给定了stop停止时间点,那么就是从开始点开始到停止位置点结束
##########################################
2、基于时间点恢复
只给stop时间,不给start时间,就从文件的开头开始恢复,恢复到指定的stop时间停止恢复
mysqlbinlog -–stop-datetime=”20014-12-25 11:25:56“ /var/log/mysql-bin.000001 | mysql -uroot -p
只给start时间,就是从start指定的时间开始恢复,恢复到binlog文件的结束
mysqlbinlog -–start-datetime=”20014-12-25 11:29:56“ /var/log/mysql-bin.000001 | mysql -uroot -p
如果给了开始时间和结束数据,那就是恢复开始到结束stop时间点的数据

##########################################
3、恢复指定库的数据 -d
—database=db_name,-d db_name
只列出该数据库的条目(只用本地日志)。仅仅恢复指定数据库的数据,如下面的,仅仅恢复数据库lvnian的数据而已,其他库的数据不会恢复

mysqlbinlog -d lvnian /var/log/mysql-bin.000001 | mysql -uroot -p

本文出自 “奋斗吧” 博客,请务必保留此出处http://lvnian.blog.51cto.com/7155281/1699627
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: