MySQL找回用戶數據的實例詳解

事情經過

有天,我們公司外區的一個銷售C說他8月3號以前的工作流記錄找不到了。問清緣由,原來是更新了微信號(我們公司的工作流是基于企業微信開發的)。經過分析,微信號和流程數據并沒什么關系,所以初步得出結論:本來只需要更新微信號的,結果我們公司的流程系統管理員把用戶先刪除,再創建了新的用戶。

解決過程

1、首先想到的是直接從定時備份數據里面找回原來的用戶ID,結果發現系統只備份了十天的記錄,而工作流系統上顯示銷售C只有8月3號以后的流程記錄,距今已經40多天,從自動備份的數據里已經無法恢復。

2、所以,只能從數據庫的二進制記錄里分析了。進入mysql數據存放的目錄:

  MySQL找回用戶數據的實例詳解

?

3、通過分析文件修改時間,得知刪除操作的動作在mysql-bin.000014文件里面記錄。

4、因為日志文件是二進制的,所以導出日志為sql文件:

mysqlbinlog?--no-defaults?mysql-bin.000014?>?workflow_operator.sql

5、日志記錄比較大,導出后有132M,壓縮打包文件并下載到本地,只有15.2M

tar?-czvf?workflow_operator.tar.gz?workflow_operator.sql

6、在本地使用文本工具,查找所有的刪除用戶的操作:

  最后定位刪除銷售C的動作在127766行(雖然日志記錄行數比較多,但是刪除用戶的動作比較少,所以好排查)

  MySQL找回用戶數據的實例詳解

7、用戶ID找到了,所幸的是,因為只刪除了用戶,沒有刪除流程數據(因為流程數據是要存檔的),所以只要把銷售C的舊流程數據user_id換成新的user_id就可以了,流程表比較多,通過體力勞動,找出有舊ID的表,然后再使用update語句一起更新,終于找回了所有數據:

 ?。ㄗ詈笏奈挥捎谏婕半[私,使用XXX代替)

update?flow_fr_borrow?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_fr_cost?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_fr_fixedasset?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_fr_house_lease?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_fr_purchase?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_fr_travel?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_hr_positive?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_pr_equip_borrow_sale?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_pr_equip_return?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_sa_tepe?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_sa_safore?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_sa_authorize?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_sa_business?set?user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?user_id?=?'66adfd032ccf428d9e20e864f729xxxx';  update?flow_hr_trial?set?sel_user_id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?sel_user_id?=?'66adfd032ccf428d9e20e864f729xxxx'?;  update?wf_hist_order?set?creator?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?creator?=?'66adfd032ccf428d9e20e864f729xxxx';  update?wf_hist_task?set?operator?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?operator?=?'66adfd032ccf428d9e20e864f729xxxx';  update?wf_order?set?creator?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?creator?=?'66adfd032ccf428d9e20e864f729xxxx';  update?wf_hist_task_actor?set?actor_Id?=?'e76cb8bccaf74f32b94d17f74437xxxx'?where?actor_Id?=?'66adfd032ccf428d9e20e864f729xxxx';

?

銷售C表示很開心,并邀請我去貴州玩的話找他

MySQL找回用戶數據的實例詳解

?

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享