[关闭]
@ronaldoooo 2016-04-21T03:42:33.000000Z 字数 789 阅读 1095

志愿者公众号数据库问题记录

空课报名 数据库故障


问题描述

3月19日数据库意外清空后,在3月23日发现问题,3月24日将数据库恢复。恢复后数据库有少量数据一直处于对应不上的状态。

今天(4月21日)通过查询数据库看出,hospital表在id7314以前的记录确实存在错位问题。原因是hospital表中id1/2/3的记录与4/5/6的三条记录重复,导致在3月19日之前注册的医生关联的医院错位了3个。问题影响到的如下:

  1. 线上数据库记录显示,3月19日之前注册的医生一共有299条记录。这些医生所关联的医院都是存在问题的。
  2. 在这299个医生中,包含42个医生记录,找不到正确对应的hospital记录。推测是由于老邓在修复时是重新导入了原始的hospital,而这些用户是在3月19日之前自行添加的医院,导致这些医院记录在修复后丢失。详细推测过程在后面会描述。

推测操作过程

Created with Raphaël 2.1.2开始(3.19)执行refresh操作误删数据库(3.23,推测)依照原始数据来恢复hospital表。但恢复的过程中执行了3条insert语句后中断,又重新run了一遍。导致前3条记录重复,后面所有记录错位3个。(3.24)依照binlog恢复数据库至3.19之前状态。(应该是只使用了恢复后的doctor表,未依照binlog来恢复hospital表。此时上面的问题1和2已经出现了。)结束

解决方案

Created with Raphaël 2.1.2开始对于那299条记录,先将对应hospital_id全部+3有42条记录在+3后hospital_id会超出7317。这42条记录需要手工操作解决。(手工插入hospital数据,然后把doctor的hospital_id指过去)做数据比对验证处理结果。结束
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注