您的位置:首页 > 博客中心 > 数据库 >

mysqlbinlog 恢复数据的四种方法

时间:2022-03-14 15:05

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


本文出自 “” 博客,请务必保留此出处

本类排行

今日推荐

热门手游