binlog恢复数据

mysql之binlog

查看是否开启binlog日志:

show variables like 'log_%';

查找最新的binlog:

show master status;

查询偏移量:

show binlog events in 'mysql-bin.000043';

数据恢复(执行报错):

mysqlbinlog binlog日志文件 --start-position 初始偏移量的位置 --stop-position 结束偏移量的位置 | mysql -u root -p 数据库名称;

mysqlbinlog d:\software\mysql8.0.18\Database\binlog.000012 --start-position 40503 --stop-position 40556 | mysql -u root -p pingtouge;


mysqlbinlog --start-position=40503 --stop-position=40556 d:\software\mysql8.0.18\Database\binlog.000012 | mysql -uroot -p pingtouge;

查看官方文档:

https://dev.mysql.com/doc/refman/8.0/en/

https://gitee.com/hoctor/mysql8zh/attach_files

binlog生成sql:

mysqlbinlog --start-position=4 --stop-position=610 d:\software\mysql8.0.18\Database\binlog.000012 | mysql -uroot -p > master-log.sql
mysqlbinlog /var/lib/mysql/master-log.000001 -d hse_whj > ./backup_whj/hse_whj_log.sql

grep搜索sql语句:

grep -B3 -w whj_a hse_whj_log.sql |grep -v  '^--$' > whj_a.sql

binlog解析

  1. binlog格式是二进制日志,mysql使用mysqlbinlog工具解析。
  2. 语法格式:mysqlbinlog mysql-bin.000001 | mysql -uroot -p 数据库名
mysqlbinlog 常用参数:
  1. -d 指定特定数据库的binlog
  2. -r 相当于重定向到指定文件,与>、<作用相同
  3. –start-position–stop-position 按照指定位置解析binlog日志(精确),如不接–stop-positiion则一直到binlog日志结尾
  4. –start-datetime–stop-datetime 按照指定时间解析binlog日志(模糊,不准确),如不接–stop-datetime则一直到binlog日志结尾

开启 binlog 日志

如果未开启 binlog 日志的话,就需要开启 binlog 日志,在 MySQL 的配置文件中设置,如果你的是windowns 电
脑则找到 my.ini 文件,unix 系统找到 my.cnf文件。在文件中修改或者配置如下参数,之后重启 MySQL 服务器再次确认 binlog 日志开启成功。

my.ini配置:
#日志文件的名字及存储路径
log-bin=D:\Mysql-binlog\mysql-bin
#设置日志格式
binlog-format=mixed
其中 binlog-format 有三种选项:
  1. STATMENT:每一条会修改数据的 SQL 语句会记录在 binlog 中。

  2. ROW:不记录每一条 SQL语句的上下文信息,仅记录哪条记录被修改。

  3. MIXED:以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的 SQL 语句选择日志保存方式。

其他:

恢复单条记录:
mysqlbinlog d:\Mysql-binlog\mysql-bin.000043 --start-position 710 --stop-position 996 | mysql -u root -p pingtouge;
恢复单表记录:
mysqlbinlog d:\Mysql-binlog\mysql-bin.000043 --start-position 393 --stop-position 1997 | mysql -u root -p pingtouge
恢复数据库记录:
mysqlbinlog d:\Mysql-binlog\mysql-bin.000043 --start-position 219 --stop-position 3861 | mysql -u root -p

sql语法在线检查:

http://cn.piliapp.com/mysql-syntax-check/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值