您的位置:首頁>正文

記一次MySQL找回使用者資料

事情經過

有天, 我們公司外區的一個銷售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';

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示