今天有个网友问我一个MySQL的恢复问题。提供的截图如下。
对于这个问题,在一些断电的场景下还是可能出现的。我首先是要确认是否为线上业务还是测试环境,线上业务来说这个影响还是很大的。如果数据库无法启动,首要任务还是把数据库启动,然后在这个基础上查看丢失的数据程度,安排数据修复的事宜。
当然从我的角度来说,怎么去快速复现这个问题呢。我用自己写的快速搭建测试主从环境的脚本(https://github.com/jeanron100/mysql_slaves,后期有一位大牛建议用Python来做,最近在考虑),分分钟即可搞定。
我们创建一个表test,指定id,name两个字段。然后开启显式事务。
create table test(id int primary key,name varchar(30) not null);
显式开启一个事务:
begin;
insert into test values(1,'a');
insert into test values(2,'b');
insert into test values(3,'c');
不提交,我们直接查看mysql的服务进程,直接Kill掉。默认情况下双1指标是开启的,我们直接模拟断电重启,看看后台的处理情况:
2017-09-13 15:05:11 35556 [Note] Inn