真实环境里系统突然死机重启,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;
原创作品!不喜勿喷!如有错误及时指出,共同学习进步,谢谢大家~