明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

MySQL找到用戶數據的案例

[摘要]事情經過有天,我們公司外區(qū)的一個銷售C說他8月3號以前的工作流記錄找不到了。問清緣由,原來是更新了微信號(我們公司的工作流是基于企業(yè)微信開發(fā)的)。經過分析,微信號和流程數據并沒什么關系,所以初步得出...
事情經過

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

解決過程

1、首先想到的是直接從定時備份數據里面找回原來的用戶ID,結果發(fā)現系統(tǒng)只備份了十天的記錄,而工作流系統(tǒng)上顯示銷售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'

以上就是MySQL找回用戶數據的案例的詳細內容,更多請關注php中文網其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。