ホームページ  >  記事  >  データベース  >  MySQL でユーザーデータを取得する場合

MySQL でユーザーデータを取得する場合

一个新手
一个新手オリジナル
2017-10-13 10:40:001241ブラウズ

何が起こったのか

ある日、当社の外部エリアの営業Cさんが、8月3日以前のワークフロー記録が見つからないと言いました。理由を聞いてみると、WeChatがアップデートされたためだった(当社のワークフローはEnterprise WeChatをベースに開発されている)。分析の結果、WeChat ID はプロセス データとは何の関係もないことが判明したため、当初は WeChat ID を更新するだけでよかったが、その結果、当社のプロセス システム管理者が最初にユーザーを削除し、その後ユーザーを作成したという結論に達しました。新しいユーザー。

解決プロセス

1. 私が最初に考えたのは、スケジュールされたバックアップ データから元のユーザー ID を直接取得することでした。システムは 10 日間のレコードしかバックアップしていないことが判明し、ワークフロー システムは次のことを示しました。売上 C は 8 月のみでした。3 日以降のプロセス記録は 40 日以上前のものであり、自動バックアップ データから復元することはできません。

2. したがって、データベース内のバイナリレコードからのみ分析できます。 MySQL データが保存されているディレクトリを入力します:

3. ファイルの変更時間を分析することで、削除操作が mysql-bin.000014 ファイルに記録されていることがわかりました。

4. ログ ファイルはバイナリであるため、ログは SQL ファイルとしてエクスポートされます:

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

5. ファイルを圧縮してローカルにダウンロードすると、ログ レコードは 132M になります。テキスト ツールをローカルで使用して、ユーザーを削除するすべての操作を検索します:

Sales C を削除する最後のアクションは行 127766 にあります (ログ レコードの数は比較的大きいですが、ユーザーを削除するアクションは比較的小さいため、トラブルシューティングは簡単です)

7. 幸いなことに、ユーザーのみが削除されたため、プロセスデータは削除されませんでした。アーカイブされるため)、sales C の古いプロセス データ user_id を新しい user_id に置き換えるだけです。手作業で古い ID を持つテーブルを見つけ、update ステートメントを使用してそれらをまとめて更新しました。最後に、すべてのデータを取得しました:

(プライバシー上の理由から、最後の 4 桁は XXX に置き換えられました)

  tar -czvf workflow_operator.tar.gz workflow_operator.sql

以上がMySQL でユーザーデータを取得する場合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。