记一次Mysql服务器断电后的故障(启动后不久,服务自动停止)

1.复盘经过

        客户的服务器是私有云,但是据说机房停电了。。 机房停电了。。 所有机器就断电关机了。重启机器后,能坏的就都坏了。MMP

2.现象

               mysql服务是能起来的,但是会自动停止服务,触发条件不知。

这个故障确实不好发现:

        首先,mysql服务是能起来的,但是会随机自动停止服务,条件也不知,才想起来去找找mysql的日志,一般log路径就在mysql的数据目录,笔者如下:

这个结尾为.err的文件就是:

打开日志,就会发现一个错误日志频繁出现:

表的 page 坏了

3.解决经过

网上找了一圈,用mysql自带的mysqlcheck貌似有机会修复,大家貌似都是这么写的,在mysqk8的环境下, 加上-repair 貌似不对。。

mysqlcheck -u root -p 你的数据库名称 -repair

反正我是这么写的

mysqlcheck -repair -u root -p 你的数据库名称 

后面mysql会帮你检查这个数据库,但是如果你的表是innodb,大概率没个卵用。。

命令会报这么个错误:

 The storage engine for the table doesn't support repair

意思是:“该表的存储引擎不支持修复”,通过表设计查看,可以看到该表的引擎是InnoDB。

InnoDB支持外键参照完整性,具备故障恢复能力,所以不需要修复!

我只想说:你看看你这是人话吗?你他娘的也没有自动修复啊!

折腾一圈后发现,把 -repair 去掉,让mysqlcheck只检查呢?

于是:

mysqlcheck -u root -p 你的数据库名称 

果然有用,mysqlcheck会扫描你制定库的每一张表(扫描顺序,好像是按字母排序的),哪个检查报错,那就这个报错的表有问题了,dump该表,重建,导入即可。

我的是这个t_neworgid表的下一个表,t_opxxx,我直接dump出来,然后drop, 重新创建表,导入备份的数据,解决!

处理一下出现的日志 Plugin 'FEDERATED' is disabled. 2017-11-15 19:23:46 16c0 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator. 2017-11-15 19:23:46 1404 [Note] InnoDB: Using atomics to ref count buffer pool pages 2017-11-15 19:23:46 1404 [Note] InnoDB: The InnoDB memory heap is disabled 2017-11-15 19:23:46 1404 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions 2017-11-15 19:23:46 1404 [Note] InnoDB: Memory barrier is not used 2017-11-15 19:23:46 1404 [Note] InnoDB: Compressed tables use zlib 1.2.3 2017-11-15 19:23:46 1404 [Note] InnoDB: Not using CPU crc32 instructions 2017-11-15 19:23:46 1404 [Note] InnoDB: Initializing buffer pool, size = 9.0G 2017-11-15 19:23:46 1404 [Note] InnoDB: Completed initialization of buffer pool 2017-11-15 19:23:46 1404 [Note] InnoDB: Highest supported file format is Barracuda. 2017-11-15 19:23:46 1404 [Note] InnoDB: Log scan progressed past the checkpoint lsn 9219742510 2017-11-15 19:23:46 1404 [Note] InnoDB: Database was not shutdown normally! 2017-11-15 19:23:46 1404 [Note] InnoDB: Starting crash recovery. 2017-11-15 19:23:46 1404 [Note] InnoDB: Reading tablespace information from the .ibd files... 2017-11-15 19:23:46 1404 [Note] InnoDB: Restoring possible half-written data pages 2017-11-15 19:23:46 1404 [Note] InnoDB: from the doublewrite buffer... InnoDB: Doing recovery: scanned up to log sequence number 9219763629 InnoDB: 1 transaction(s) which must be rolled back or cleaned up InnoDB: in total 0 row operations to undo InnoDB: Trx id counter is 275040768 2017-11-15 19:23:47 1404 [Note] InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percent: 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed 2017-11-15 19:23:48 1404 [Note] InnoDB: 128 rollback segment(s) are active. InnoDB: Starting in background the rollback of uncommitted transactions 2017-11-15 19:23:48 fc8 InnoDB: Rolling back trx with id 275035944, 0 rows to undo 2017-11-15 19:23:48 fc8 InnoDB: Assertion failure in thread 4040 in file fut0lst.ic line 83 InnoDB: Failing assertion: addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA InnoDB: We intentionally generate a memory trap. InnoDB: Submit a detailed bug report to http://bugs.mysql.com. InnoDB: If you get repeated assertion failures or crashes, even InnoDB: immediately after the mysqld startup, there may be InnoDB: corruption in the InnoDB tablespace. Please refer to InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html InnoDB: about forcing recovery. 2017-11-15 19:23:48 1404 [Note] InnoDB: Waiting for purge to start 2017-11-15 19:23:48 1404 [Note] InnoDB: 5.6.21 started; log sequence number 9219763629 2017-11-15 19:23:48 1404 [Note] Server hostname (bind-address): '*'; port: 3306 2017-11-15 19:23:48 1404 [Note] IPv6 is available. 2017-11-15 19:23:48 1404 [Note] - '::' resolves to '::'; 2017-11-15 19:23:48 1404 [Note] Server socket created on IP: '::'. 2017-11-15 19:23:48 1404 [Note] Event Scheduler: Loaded 0 events 2017-11-15 19:23:48 1404 [Note] D:\Documents\mysql\bin\mysqld.exe: ready for connections. Version: '5.6.21' socket: '' port: 3306 MySQL Community Server (GPL)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值