数据库删除事故

事故描述

今天早上发现PTPUR的数据库主从同步存在问题,主从数据库的数据已经不一致了,因此晚上准备删除从库的数据,重新创建主从。
晚上删除从库后,随即发现主库也被删除了。

事故原因

两个数据库之前做了互为主从的处理,因此删除从库,主库也同步了删除语句。
后来发现真正的原因是早上修改了服务器上数据库对应的hosts映射,而我是通过Navicat来操作数据库的,导致我实际上Navicat中的主从库,连接的都是主库。所以删除从库,其实删掉的是主库。

解决方案

幸好在处理之前,我将数据库做了一个本地备份,通过该备份对数据进行恢复。
恢复期间,产品先放出维护页面,避免前端报错。

影响范围##

  • 晚上20:30至22:30,PTPUR无法提供服务。
  • 基本面、消息面选股受到影响(今后大的改动,需要联系陈朝辉确认,另外尽量在9点之后进行)

总结

  • 数据操作一定要先做好备份!
  • 给应用使用的数据库账号,权限必须控制好,不能有删除数据库、删除数据表(看情况,一般不允许)的权限
  • 本地Navicat登录数据库,不能采用root账号登录,必须只能用分配给具体应用的账号登录,避免误操作
  • Navicate导出数据库时,有可能会丢失CREATE语句,因此导出建议使用mysqldump的方式
  • 大文件过滤,用grep效果比较好
  • 命令行导入时,需要注意中文字符编码问题
  • 紧急导入的情况,先清理掉不重要的大表,保证导入数据尽量小,然后再执行导入操作,以加快修复时间(导入是非常慢的)