[Mysql] 数据丢失通过二进制日志的GTID号还原数据

真实环境里系统突然死机重启,mysql数据没保存怎么办?当前mysql版本 5.6.38

不要慌,mysql配置文件里有一个二进制的日志文件目录

自己创建的目录一定要附权

mkdir -p /data/binlog

chown -R mysql.mysql /data/

里面是以mysql-bin.开头的文件

DDL(定义语言:create,drop,alter)和DCL(控制语言:grant,revork)会以语句的方式原模原样的记录,DML(操作语言:delect,update)记录已提交的事务

 二进制日志我们固然是看不懂的,里面都是一些二进制的内容

我们可以用 mysqlbinlog +你想要查看的二进制日志  就可以查看人性化的日志文件了。

mysqlbinlog mysql-bin.000024

我们可以看到有hehe库被删除了 ,人性化的显示出了二进制日志的内容。当然,看这这些日志文件没什么卵用,没有序列号,没有时间,没有gtid,实际想要通过二进制日志恢复数据库的资料还是要进入数据库查看二进制日志,把id号记录下来,在截取二进制日志里的id号到另一个文件里重新导入数据库来实现的。我们往下看

假如刚才我们创建了一个www_new_comer库,里面有了表,也有插入了内容,突然系统崩溃了,重启了,这时我们刚才写的数据还都在缓存池里,没有读入磁盘,这时我们可以通过二进制日志来恢复原来写的数据。

1、首先进入数据库查看当前我们使用的是哪个二进制日志。

show master status;

2、查看mysql-bin.000028日志里存放的刚才丢失的内容(因为mysql重启完后会自动分割日志)

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

3、我们看到GTID号是从10创建 到 12提交的,我们只需要在系统上进入存放二进制日志目录里截取相应的文件到指定目录即可,这里我把它指定放在tmp下

mysqlbinlog --skip-gtids --include-gtids='52e92c80-d7dd-11eb-9912-000c29678d4f:10-12' mysql-bin.000028 >/tmp/www.sql

 4、进入数据库,临时关闭二进制日志,防止在产生一遍重复数据

set sql_log_bin=0;

5、导入切割出来的文件,就完成了!

source /tmp/www.sql

6、最后在开启二进制日志

set sql_log_bin=1;

 原创作品!不喜勿喷!如有错误及时指出,共同学习进步,谢谢大家~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值