首頁 >資料庫 >mysql教程 >MySQL找回使用者資料的實例詳解

MySQL找回使用者資料的實例詳解

黄舟
黄舟原創
2017-09-21 10:56:271124瀏覽

事情經過

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

解決過程

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

2、所以,只能從資料庫的二進位記錄裡分析了。進入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行(雖然日誌記錄行數比較多,但是刪除用戶的動作比較少,所以好排查)

  

#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找回使用者資料的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn