欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql binlog数据恢复

程序员文章站 2024-01-26 15:04:52
...

binlog的作用及开启

binlog的作用是将数据库的所有操作进行记录

而恢复数据则是将丢失的数据找到最后状态再次执行一次

是否开启binlog

show variables like 'log_%';

mysql binlog数据恢复
 

未开启则创建或修改/etc/my.cnf

[mysqld]
bind-address = 127.0.0.1
log-bin = /usr/local/Cellar/mysql/5.7.15/binlog
server-id = 13445
character-set-server = utf8

查看所有binlog日志 

show master logs;

mysql binlog数据恢复

查看当前使用日志

show master status;

mysql binlog数据恢复

查看日志文件操作记录

show binlog events in 'binlog.000001';

mysql binlog数据恢复

进入日志目录为之前配置的my.cnf配置log-bin目录

查询详细记录及记录pos点

mysqlbinlog -v --base64-output=DECODE-ROWS binlog.000001

找到想要恢复的数据如插入的数据被删除了,找到这条数据的insert记录起始pos点和结束pos点,  事务的pos点也要包含在内

mysql binlog数据恢复

使用mysqlbinlog命令可以日志数据恢复

mysqlbinlog  --start-position=419 --stop-position=667 --database=test binlog.000001 |mysql -u用户 -p密码 test

可选参数选项:
--start-position=419 起始pos点
--stop-position=667 结束pos点
--start-datetime="2018-7-18 17:00:00" 起始时间点
--stop-datetime="2018-7-18 17:00:00" 结束时间点
--database=test 指定数据库

常见问题

ERROR 1790 (HY000) at line 18: @@SESSION.GTID_NEXT cannot be changed by a client that owns a GTID. The client owns ANONYMOUS. Ownership is released on COMMIT or ROLLBACK.

原因: 设置的起始pos和结束pos点并不是一条完整的mysql事务开启事务结束语句

 

清空所有binlog日志.重新开始记数

reset master;