比起悲伤来说,无法分享快乐这件事,要更加的寂寞吧。 收藏本站
登陆 / 注册 搜索

阅读:4.5K   回复: 6

古黑论3月6号故障复盘

原创 [复制链接]
小执念 古黑浩劫论坛大牛 2020-3-7 15:53 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
GMT+8 2020-3-6 , 12点左右,论坛数据库崩溃,导致了6个多小时无法访问。

一、为什么会崩溃?

先说说崩溃的原因吧。前天傍晚有人反应无法发送注册邮件 注册BUG,开始怀疑是前几天合并的代码出了问题,但是找了一晚上,也没发现问题在哪里,暂时作罢。

🙌🚈🍓♀🐒‎


第二天(3月6号)中午就重启了服务器(迫不得已使出重启大法),重新启动后,网站提示连接数据库失败,当时就慌得一批。

马上登录服务器,发现数据库启动失败了。

🧠🚗🥣❗🐕‍

古黑论3月6号故障复盘 TIM截图20200307132754.png

上网搜索看见一个坑爹的文章

古黑论3月6号故障复盘 TIM截图20200307133249.png

不加思索的我就删除了 ibdata1、ib_logfile0、ib_logfile1


🙏🗼🍚🆗🦄‌

删除后数据库确实能启动了,但是 !启动后程序就报 xxx表不存在,登录 mysql,show tables 发现表是有的,但是 select 就提示不存在。

接下来几个小时都在根据报错提示,上网搜索答案。

二、修复过程
在 stackoverflow上看到这个
👃🏦🍖©🦖‍
古黑论3月6号故障复盘 TIM截图20200307134929.png
按照上面说的做了之后,登陆数据库,发现能查询了,然后重新启动数据库,发现一连接数据库,数据库就自动关闭了....

mysql 官方文档 ,关于 innodb_force_recovery = 1 的意思 。

👮‍♂️‎🧢📟🙄✋


又继续找资料,说 my.cnf 加入 innodb_force_recovery = 1 后,要导出数据库,删掉 ibdata1、ib_logfile0、ib_logfile1 ,把导出的备份重新导入。

备份的时候又提示错误 :

引用

mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table...


🗺🥩✔🪰‎

开始也以为是连接超时,又增大超时时间....

也没用

👳‌💄✏😡👈
忽然想起来,不知道在哪里看见一个信息:“如果表损坏了,备份也会提示 这个错误”

三、怎么恢复的?

最后只能从备份机器上拿回3月6号凌晨的数据,恢复。
🦴🚤🍊🅱🪶‌
四、邮件注册发送不了

这个问题原因是,前几天根据这个 pr !344 删除 $_G['gp_xx']调用并默认关闭本功能 把 $_G['gp_xx'] 删除了。
🥷‌🧢🔋😄👊
论坛的邮件发送的是二次开发,不是使用 SMTP 发信(会暴露站源 ip),而是使用 API 发信,里面获取 email 的方式是 $_G['gp_xx'] ,修复之后就可以了。

感谢 https://www.guhei.net/post/jb2847 指出这个 bug.

五、本次故障的收获
👍🌡🫑☪🐻‏
删除文件前一定先考虑备份!

InnoDB 中有共享表空间和独立表空间的概念。

👏🚤🍓🚷🦊‏共享表空间就是 ibdata1,独立表空间放在每个表的 .ibd(数据和索引)和 .frm(表结构)为后缀的文件中。

单独的表空间只存储该表的数据,索引和插入缓冲的 BITMAP 等信息,其余还放在共享表空间中。

ibdata文件存的是数据库的表数据,如缓存,索引等。

🤛🛩🎂ℹ🐯‏



上一篇
下一篇
帖子热度 4556 ℃

空谷幽兰 踏破虚空 2020-3-13 19:16 来自手机 |显示全部楼层

从前车马很慢,书信很远,一生只够爱一个人,但是可以纳很多妾啊!

精华达人 主题破百 以坛为家 论坛元老 五周年纪念
通过这个事件,让你知道了不要轻易相信互联网上的教程【偷笑】
小执念 古黑浩劫论坛大牛 2020-3-7 16:04 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
论坛两年多没有出现故障了,这次真是打了我一巴掌。
testnull 「龙战于野」 2020-3-14 11:45 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

你胆子真大,上来就删啊,下次先不删而是把要删的先移动到别的文件夹吧#d41:这样比较稳妥
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表