20220331搬瓦工电源故障数据恢复记录
3月31日搬瓦工机房部分节点遭受电源故障, 服务器直接等于异常关机了。我很不巧也是本次事故的受害者…
几个小时候机房恢复,但是 mysql、redis、mongodb 均出现故障,无法启动…
本文记录以上这些服务的修复过程。
mysql无法启动
启动 mysql 后,虽然启动失败,但是可以在 log 里找到如下内容1
2
3[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
修复步骤:
- 在配置文件
[mysqld]
下增加一行innodb_force_recovery=6
, 此时服务可以启动, 可以执行数据查询动作但是不能执行数据插入和更新动作。 此时log中有一些这样的日志, 表示数据库损坏
1
2[ERROR] InnoDB: Failed to find tablespace for table '"database"."table"' in the cache.
Attempting to load the tablespace with space id 1290.利用数据库管理工具如
Navicat
或phpmyadmin
将数据库当前数据导出关闭 mysql 服务, 备份数据目录
1
2
3service mysqld stop
mv /mysql/data /mysql/data_backup_20220331
mkdir /mysql/data重新初始化 Mysql
1
/mysql/bin/mysqld --initialize
使用数据库管理工具重新登录上去, 把数据重新导入进去, 修复完成。
Redis无法启动
Redis无法正常启动, log中出现如下日志1
Fatal error loading the DB: Invalid argument. Exiting.
修复步骤:
删除
dump.rdb
文件1
rm /redis/dump.rdb
重启 Redis 即可
MongoDB无法启动
修复步骤:
数据目录删除
.lock
后缀文件, 备份storage.bson
1
2
3rm /mongodb/data/mongod.lock
rm /mongodb/data/WiredTiger.lock
mv /mongodb/data/storage.bson /mongodb/data/storage.bson.bak修复数据库
1
/mongodb/bin/mongod --dbpath=/mongodb/data --repair
还原
storage.bson
1
mv /mongodb/data/storage.bson.bak /mongodb/data/storage.bson
重新启动服务