Que s'est-il passé
Un jour, un commercial C d'un secteur extérieur à notre entreprise a déclaré qu'il n'avait pas pu trouver les enregistrements du flux de travail avant le 3 août. Lorsqu'on lui a demandé la raison, il s'est avéré que WeChat avait été mis à jour (le flux de travail de notre entreprise est développé sur la base d'Enterprise WeChat). Après analyse, nous avons constaté que l'ID WeChat n'a rien à voir avec les données de processus, nous sommes donc arrivés à la conclusion préliminaire : à l'origine, nous avions seulement besoin de mettre à jour l'ID WeChat, mais en conséquence, l'administrateur du système de processus de notre entreprise a d'abord supprimé l'utilisateur, puis a créé un nouvel utilisateur.
Processus de solution
1. La première chose qui me vient à l'esprit est de récupérer l'ID utilisateur d'origine directement à partir des données de sauvegarde planifiées. le système n'a été sauvegardé que pendant dix jours, mais le système de workflow montre que Sales C n'a enregistré de processus qu'après le 3 août. Cela fait plus de 40 jours depuis et il n'est plus possible de récupérer de la sauvegarde automatique. données de sauvegarde.
2. Par conséquent, il ne peut être analysé qu'à partir des enregistrements binaires de la base de données. Entrez le répertoire où sont stockées les données MySQL :
3. En analysant l'heure de modification du fichier, nous avons appris que l'opération de suppression est enregistrée dans le fichier mysql-bin.000014.
4. Le fichier journal étant binaire, le journal est exporté sous forme de fichier SQL :
mysqlbinlog --no-defaults mysql-bin.000014 > workflow_operator.sql
5 L'enregistrement du journal est relativement volumineux, 132 Mo après l'exportation, compressez le fichier et. téléchargez-le localement, seulement 15,2M
tar -czvf workflow_operator.tar.gz workflow_operator.sql
6. Utilisez l'outil texte localement pour trouver toutes les opérations de suppression d'utilisateurs :
L'action finale de suppression de Sales C se situe à la ligne 127766 ( bien que la ligne d'enregistrement du journal Le nombre soit relativement grand, mais les actions de suppression d'utilisateurs sont relativement petites, il est donc facile de dépanner)
7 L'ID utilisateur a été trouvé. Heureusement, car seul l'utilisateur a été supprimé, pas les données de processus (car les données de processus doivent être archivées), il suffit donc de remplacer les anciennes données de processus user_id de sales C par le nouveau user_id. travail, recherchez la table avec l'ancien identifiant, puis utilisez l'instruction de mise à jour pour mettre à jour ensemble, et enfin récupérez toutes les données :
(Les quatre derniers chiffres sont remplacés par XXX pour des raisons de confidentialité)
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'
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!