MySQLデータ紛失の原因と解決
前言
最近、たまにユーザーからフィードバックのデータがなくなりました。データがなくなった問題です。現象から見ると、このような問題はデータベースレベルで緊急度が一番高いということです。客観的な条件を除けば、このような問題に対する回復手段はほとんどバックアップ回復+Binlog再生のみで、時間がかかります。業務に対する影響も大きいです。
しかし、安定を主とするソフトウェアとしては、データを失う確率が非常に低いので、これらのフィードバックの問題は、本当に「データをなくしました」ということですか?
問題の説明
ある日の昼ごろにユーザーからフィードバックを受けて、業務アカウントでデータベースに登録してから、業務の倉庫がなくなりました。
原因分析
この問題を受けた時、雰囲気はまだ緊張しています。登録データベースに連絡しながら、ユーザーとコミュニケーションしています。最近はどのような変更が行われたかを確認してください。
データベースに登録してから、業務データベースが存在していることを発見しました。ユーザーのフィードバックを結び付けて、「業務倉庫がなくなった」と初歩的に判断したのは、業務アカウントに権限がないとshow grantsで調べたところ、業務アカウントの権限はUSAGEだけであることが分かりました。
「データの紛失」という現象については、「ライブラリ全体のデータをなくした」としても、データベース自体が正常であれば、かなり大きな可能性があります。このケースと同じ問題です。権限の誤りです。このような問題を引き起こす可能性は普通2つです。1.ログインしたアカウントは同名の他のアカウントと一致しました。2.授権に問題があり、業務アカウントに権限がない。もちろん、最悪の場合は必ずdrop databaseの操作です。binlogを解析することによって、この操作を実行する時間を特定できます。
もう一つの種類は「部分データの紛失」です。例えば、あるテーブルがなくなったり、テーブルの一部のデータがなくなったりします。厳密には、このような問題も権限エラーによる可能性があります。MySQLの権限制御は確かに表と列のレベルを達成することができますが、現実には一般的には使われません。多くの場合は誤操作です。例えば、udateやdeleteの場合はwhere条件がありません。このような時は歴史的なバックアップを通じて、binlogsを利用して回復するしかないです。この操作はテンセントクラウドに「バック」の機能をカプセル化しました。
まとめてみます
このような問題が発生したら、まず問題の現象を観察してみてください。数秒の再授権だけで、このような「データの紛失」の非常に緊急かつ非常に深刻な問題を解決することができます。
以上がMySQLのデータ紛失の原因と解決の詳細です。MySQLのデータ紛失に関する資料は他の関連記事に注目してください。
最近、たまにユーザーからフィードバックのデータがなくなりました。データがなくなった問題です。現象から見ると、このような問題はデータベースレベルで緊急度が一番高いということです。客観的な条件を除けば、このような問題に対する回復手段はほとんどバックアップ回復+Binlog再生のみで、時間がかかります。業務に対する影響も大きいです。
しかし、安定を主とするソフトウェアとしては、データを失う確率が非常に低いので、これらのフィードバックの問題は、本当に「データをなくしました」ということですか?
問題の説明
ある日の昼ごろにユーザーからフィードバックを受けて、業務アカウントでデータベースに登録してから、業務の倉庫がなくなりました。
原因分析
この問題を受けた時、雰囲気はまだ緊張しています。登録データベースに連絡しながら、ユーザーとコミュニケーションしています。最近はどのような変更が行われたかを確認してください。
データベースに登録してから、業務データベースが存在していることを発見しました。ユーザーのフィードバックを結び付けて、「業務倉庫がなくなった」と初歩的に判断したのは、業務アカウントに権限がないとshow grantsで調べたところ、業務アカウントの権限はUSAGEだけであることが分かりました。
mysql> show grants;
+----------------------------------+
| Grants for test@% |
+----------------------------------+
| GRANT USAGE ON *.* TO 'test'@'%' |
+----------------------------------+
1 row in set (0.00 sec)
最低の権限しかないので、このアカウントは明らかに「業務データが見えない」です。再認証して問題が解決されました。事後調査で最初の授権操作は他の同名アカウントで発生しています。
mysql> show grants;
+-------------------------------------------------------------+
| Grants for [email protected].% |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON prd_name.* TO 'test'@'10.120.117.%' |
+-------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
広く開拓してください「データの紛失」という現象については、「ライブラリ全体のデータをなくした」としても、データベース自体が正常であれば、かなり大きな可能性があります。このケースと同じ問題です。権限の誤りです。このような問題を引き起こす可能性は普通2つです。1.ログインしたアカウントは同名の他のアカウントと一致しました。2.授権に問題があり、業務アカウントに権限がない。もちろん、最悪の場合は必ずdrop databaseの操作です。binlogを解析することによって、この操作を実行する時間を特定できます。
もう一つの種類は「部分データの紛失」です。例えば、あるテーブルがなくなったり、テーブルの一部のデータがなくなったりします。厳密には、このような問題も権限エラーによる可能性があります。MySQLの権限制御は確かに表と列のレベルを達成することができますが、現実には一般的には使われません。多くの場合は誤操作です。例えば、udateやdeleteの場合はwhere条件がありません。このような時は歴史的なバックアップを通じて、binlogsを利用して回復するしかないです。この操作はテンセントクラウドに「バック」の機能をカプセル化しました。
まとめてみます
このような問題が発生したら、まず問題の現象を観察してみてください。数秒の再授権だけで、このような「データの紛失」の非常に緊急かつ非常に深刻な問題を解決することができます。
以上がMySQLのデータ紛失の原因と解決の詳細です。MySQLのデータ紛失に関する資料は他の関連記事に注目してください。