mysql binlog数据恢复

什么是binlog

binlog是一个server层日志,记录数据库表的所有DDL及DML(除查询以外)操作语句的一个二进制日志。(create、alter table ...)(insert、update、delete ...)

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

主要作用

  • 主从复制:MySQL Replication在Master端开启binlog,Master把它的二进制日志传递给slaves来达到master-slave数据一致的目的
  • 数据恢复:通过mysqlbinlog工具可以恢复数据

常用命令

 

# 是否开启binlog 
show variables like 'log_%';

# 查看所有binglog日志
show master logs;

# 当前使用的日志
show master status;

# 查看日志记录
show binlog events in 'binlog.000001';

# 格式化输出日志linux命令
mysqlbinlog -v --base64-output=DECODE-ROWS binlog.000001


# 刷新日志,重新生成日志文件
flush logs;

# 重置日志
reset master;

  未开启则创建或修改/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找到sql进行恢复,数据量过大时可以进行时间段恢复。

  • 指定SQL恢复 通过关键字进行日志搜索,找到想要的恢复数据的sql记录
  • 时间段恢复 指定起始时间和结束时间进行恢复
# 日志格式化输出到文件
mysqlbinlog -v --base64-output=DECODE-ROWS binlog.000001 > ~/binlog.sql

# 搜索关键字日志格式化输出到文件
mysqlbinlog --base64-output=decode-rows -v binlog.000001 | grep -A '四川' > ~/binlog.sql

# mysqlbinlog 命令节点恢复数据
mysqlbinlog  --start-position=419 --stop-position=667 --database=test binlog.000001 |mysql -u用户 -p密码 test

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

 

 

 

可选参数选项:

--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事务开启事务结束语

 

 

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQLbinlog是以事件形式记录了对数据库执行更改的所有操作。在数据恢复方面,可以使用mysqlbinlog工具来恢复数据。 首先,你可以使用mysqlbinlog工具来解析和转换二进制日志文件。使用命令"mysqlbinlog --start-datetime="开始时间" --stop-datetime="结束时间" --database=数据库名 binlog文件名 | mysql -u用户名 -p密码",其中开始时间和结束时间是你想要恢复的时间范围,数据库名是你要恢复的数据库,用户名和密码是连接数据库所需的凭据。这个命令会将binlog文件中指定时间范围内的操作转换为SQL语句并执行,从而恢复数据。 另外,在每次重启MySQL服务时,也会自动刷新binlog日志。此外,使用mysqldump备份数据时,如果加上-F选项,也会刷新binlog日志。所以,如果你想要恢复到最新的binlog状态,可以重启MySQL服务或者进行一次完整的备份。 需要注意的是,binlog只能记录数据库的更改操作,而不能记录表结构的变更。如果你的目标是恢复表结构的变更,可以考虑使用其他工具或备份文件来恢复。 总之,通过使用mysqlbinlog工具以及重启MySQL服务或进行完整的备份,你可以对MySQLbinlog进行数据恢复。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql binlog日志恢复【亲测有效,有例子实测】](https://download.csdn.net/download/Jay_Fred/87602788)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQL binlog 数据恢复](https://blog.csdn.net/qq_39550368/article/details/126901112)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值