记一次删库后,我是如何恢复数据库和处理的

前言

  • 如果你的数据库被删了,我在这先表示同情,先冷静,深呼吸,放松,准备跑路!
  • 我是因为数据库权限没有设置好,设置成了DDL权限,同事误操作导致数据库被删除。
  • 我的数据库的环境是,阿里云的RDS mysql5.7 高可用版,如果你不是阿里云的RDS可能不大合适此文章。一定要开启RDS的SQL洞察功能可以查看sql记录。

事发

数据库被删了,平台登不上看错误日志,发现数据库不见了???赶紧提交工单让阿里云技术人员查看问题,得到回复:

[问题定义]

描述问题:数据丢失


[处理建议]
请您在DMS或者mysql命令行确认下。

如果数据丢失,请您考虑使用DMS数据追踪或者克隆实例方法恢复数据
1.请您使用DMS数据追踪功能恢复数据,请您详见:https://help.aliyun.com/document_detail/63780.html
2.请您使用克隆实例按时间点恢复方法恢复数据,请您详见:https://help.aliyun.com/document_detail/96147.html

请您考虑开启SQL洞察功能查看实例的操作记录,SQL审计日志:记录对数据库执行的所有操作。通过审计日志记录,您可以对数据库进行故障分析、行为分析、安全审计等操作。
SQL洞察开启后才可查看相关记录。
请您详见:https://help.aliyun.com/document_detail/96123.html

============================

阿里云售后提示您:
对于涉及到数据的增删改查等测试,建议您先通过控制台或其他方式备份,或者创建一个新的测试环境,以免误操作带来的生产环境数据丢失风险!
感谢您对阿里云的支持  

数据丢失分成2种情况

  1. 少部分数据被删除可以通过上面的DMS数据追踪功能恢复数据来恢复
  2. 数据库被删除只能用上面的第二种方法克隆实例按时间点恢复方法恢复数据来恢复

我是最惨的第二种情况。

处理

  • 已经确认数据被删除了,网站挂上维护公告,让项目处于维护模式不能有新数据写入,关闭队列、定时任务等
  • 使用RDS左边的SQL洞察功能查找数据库被删语句的时间
  • 按照教程使用克隆实例按时间点恢复方法恢复数据操作:
    1. 进入出事RDS的管理界面
    2. 在左侧导航栏中,选择备份恢复
    3. 在页面右上角,单击数据库恢复(原克隆实例)
    4. 在弹出的页面中,选择新实例的计费方式(建议选择按量付费)
    5. 选择上面找出来的执行删库的时间,提前一秒
    6. 单击立即购买。
    7. 勾选《关系型数据库 RDS服务条款》,单击去支付,完成支付即可。
    8. 然后在RDS列表就看到一个新的RDS启动中
    9. 最后要非常有耐心的等待启动完成(我在这等了2个小时左右,大概150GB数据,仅供参考)
  • 条件允许的情况下,把需要恢复的RDS数据库主库的CPU配置买高点,CPU直接影响恢复速度!!!
  • 启动完成后的RDS数据就是刚才选择时间的数据
  • 然后进行数据库迁移
    1. 进入数据传输(DTS)控制台。
    2. 在左侧导航栏中,选择数据迁移
    3. 单击创建迁移任务。
    4. 源数据库信息选择刚启动的RDS 数据库账号密码和出事的RDS一样,需要高权限账号 点击测试链接
    5. 目标数据库信息选择出事的RDS 密码同上 点击测试链接
    6. 单击授权白名单并进入下一步。
    7. 只选择结构迁移和全量数据迁移。 不要勾选增量迁移!
    8. 在左侧的迁移对象框中,选择要迁移的对象,单击>将这些对象移入已选择对象框框中。 选择你要恢复的数据库
    9. 开始迁移,弹出选择框,选择迁移最大的规格。(越大速度越快)
    10. 耐心等待进度条,我这边80GB的数据等了5小时
  • 数据迁移成功可以用数据追踪功能 查看删库最后几条sql是否被成功恢复。
  • 测试项目是否恢复正常

最后

发生这种事情可以提前制定跑路计划,提前购买人身意外险,如果数据库失败可以按计划执行。?

你可能感兴趣的:(mysql,运维)