MySQLデータ損失の原因と解決策

MySQLデータ損失の原因と解決策

序文

最近、データの欠落やデータの損失に関するフィードバックをユーザーから受け取ることがあります。表現型の観点から見ると、この種の問題はデータベース レベルでは最も緊急の問題です。客観的な条件は別として、この種の問題に対する唯一のリカバリ方法はバックアップ リカバリ + Binlog 再生であり、通常は時間がかかり、ビジネスに大きな影響を与えます。

しかし、安定性を重視したソフトウェアであるため、データ損失の可能性は実際には非常に低いため、これらのフィードバックの問題は本当に「データ損失」に関するものなのでしょうか?

問題の説明

ある日の正午、ビジネス アカウントでデータベースにログインした後、ビジネス データベースが消えたというユーザーからのフィードバックを受け取りました。

原因分析

この質問を受けたとき、雰囲気はまだ非常に緊張していました。一方では、調査のためにデータベースへのログインを許可するようユーザーに連絡し、他方では、最近どのような変更が行われたかを確認するためにユーザーとコミュニケーションを取っていました。

データベースにログインした後、ビジネス データベースが存在することがわかりました。ユーザーからのフィードバック「ビジネス データベースが消えた」と合わせて、当初はビジネス アカウントに権限がないと判断しました。show grants で確認したところ、ビジネス アカウントには USAGE 権限しかなく、次のような結果でした。

mysql> 権限を表示します。
+----------------------------------+
| テスト@% の助成金 |
+----------------------------------+
| *.* の使用権限を 'test'@'%' に付与 |
+----------------------------------+
セット内の 1 行 (0.00 秒)

このアカウントには最低限の権限しか与えられていないため、「業務データを見ることができない」のは明らかで、再認証後、問題は解決しました。調査の結果、次のような同じ名前の別のアカウントで初期認証操作が行われたことが判明しました。

mysql> 権限を表示します。
+-------------------------------------------------------------+
| [email protected].% への許可 |
+-------------------------------------------------------------+
| prd_name.* のすべての権限を 'test'@'10.120.117.%' に付与します |
+-------------------------------------------------------------+
セット内の 1 行 (0.00 秒)

マイSQL>

拡大する

「データ損失」という現象に関して、データベース全体のレベルでデータが「失われている」が、データベース自体は正常である場合、問題は今回のケースと同じ、つまり権限エラーである可能性が高いです。この問題の原因として、一般的に次の 2 つの可能性があります。1. ログインしたアカウントが同じ名前の別のアカウントと一致している。2. 認証に問題があり、ビジネス アカウントに権限がない。もちろん、最悪のケースは間違いなくデータベース削除操作です。バイナリログを解析することによってのみ、この操作の実行時間を特定できます。

もう 1 つのカテゴリは、「部分的なデータ損失」です。テーブルが欠落している、テーブル内の一部のデータが欠落しているなどです。厳密に言えば、MySQL の権限制御はテーブルおよび列レベルで実行できますが、実際には一般的に使用されていないため、この種の問題は権限エラーによっても発生する可能性があります。ほとんどの場合、更新または削除時に where 条件がないなど、操作が間違っていることが原因です。この場合、履歴バックアップを使用し、binlog を使用して復元することしかできません。この操作は、Tencent Cloud では「ロールバック」機能としてカプセル化されています。

総括する

この種の問題に遭遇した場合は、少し時間を取って問題を観察してください。この非常に緊急かつ深刻な「データ損失」問題を解決するには、再認証に数秒しかかからない場合があります。

上記は、MySQL データ損失の詳細な原​​因と解決策です。MySQL データ損失の詳細については、123WORDPRESS.COM の他の関連記事に注意してください。

以下もご興味があるかもしれません:
  • dockerがredisを再起動するとmysqlデータが失われる問題を解決する
  • MySQL で置換操作を使用したときにデータ損失が発生する問題の解決策
  • サーバーがダウンしたときにMySQLデータの損失を防ぐためのいくつかのソリューション
  • MySQLデータ損失のトラブルシューティング事例

<<:  Spring Boot Docker パッケージング ツールの概要

>>:  写真をアップロードして顔を認識する Vue+axios サンプルコード

推薦する

JavaScript プリミティブデータ型シンボルの詳細な説明

目次導入説明名前の競合私有財産要約する導入シンボル変数を作成する最も簡単な方法は、Symbol() ...

Vue のスロットスコープの詳細な理解(初心者向け)

Baidu には slot-scope に関する記事が既にたくさんありますが、以前よく学習しておら...

MySQLのロックについて理解しておくべきこと

1. はじめにMySQL ロックは、その範囲に応じて、グローバル ロック、テーブル ロック、行ロック...

TomcatはLog4jを使用してcatalina.outログを出力します。

Tomcat のデフォルトのログは java.util.logging を使用しますが、これにはい...

データ構造 - ツリー (III): 多方向検索ツリー B ツリー、B+ ツリー

多方向探索ツリー完全二分木の高さ: O(log2N)、ここで2は対数完全なM方向探索木の高さ: O(...

Vueは双方向データバインディングを実装します

この記事の例では、双方向データバインディングを実装するためのVueの具体的なコードを参考までに共有し...

webpack -v エラー解決

背景webpackのバージョンを確認したいのですが、webpack -vを実行するとエラーが報告され...

Reactホームページの読み込みが遅い問題のパフォーマンス最適化事例の詳細な説明

しばらくReactを勉強した後、実践してみたいと思います。そこで、個人のブログのウェブサイトを再構築...

Linux の一般的なコマンド chmod を使用して、ファイルの権限 777 と 754 を変更します。

よく使用されるコマンドは次のとおりです。 chmod 777 文件或目錄例: chmod 777 /...

geo モジュールを使用して Nginx でホワイトリストを設定する例

元の構成: http { ...... limit_conn_zone $binary_remote...

img 画像タグに alt 属性を付与する必要がありますか?

img 画像タグに alt 属性を追加しますか?画像 img タグの alt 属性を見落とすことはよ...

...

このような大画面のデジタルスクロール効果が必要になる場合があります

大画面のデジタル スクロール効果は、最近の作業における大画面 UI ダイアグラムから生まれました。U...

Centos7.9 で独立したメール サーバーを構築するための詳細な手順

目次序文1. イントラネットDNS AレコードとMXレコードを構成する2. メールサーバの初期化設定...

HTML CSS を使用して div またはテーブルを指定した位置に固定する方法

CSSコードコンテンツをクリップボードにコピー.bottomTable{背景色: rgb (249,...