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 サンプルコード

推薦する

Dockerイメージのインポートとエクスポートの実装

GitLabのDocker使用法gitlab ドッカー起動コマンド docker run -d -p...

HTML を使用して IE8 および IE9 の互換表示モードを無効にするヒント

IE 8 以降では互換モードが追加され、これを有効にすると IE の下位バージョンでレンダリングされ...

nginx で複数のフロントエンド プロジェクトをデプロイするいくつかの方法

nginx を使用して 1 つのサーバーに複数のフロントエンド プロジェクトをデプロイする 3 つの...

Linux viコマンドの知識ポイントと使い方のまとめ

Linux viコマンドの詳しい説明vi エディタは、すべての Unix および Linux システ...

MySql8.0.19 インストールピットレコードを共有する

前回の記事ではMySql8.0.19のインストール手順を紹介しました。必要な方はクリックしてご覧くだ...

CSSブレンドモードとSVGを使用して、製品画像の色を動的に変更します。

数日前、Codepen で @Kyle Wetton が書いた、CSS ブレンディング モードと S...

ElementUIはドロップダウンオプションと複数選択ボックスのサンプルコードを実装します

目次ドロップダウン複数選択ボックスアップグレード - すべてのオプションを追加改訂と改善を求める製品...

18 個のキラー JavaScript ワンライナー

序文JavaScript は習得が最も簡単な言語の 1 つであるため、成長と繁栄を続けており、市場に...

WeChatアプレットがSMS認証コード送信のカウントダウンを実装

この記事では、WeChatアプレットがSMS認証コードのカウントダウンを送信するための具体的なコード...

Windows環境でのMySQL 8.0.13無料インストールバージョンの設定チュートリアル

目次圧縮ファイルをダウンロードするアドレス: https://dev.mysql.com/downl...

MySQL エラー番号 1129 の解決方法

SQLyog が MySQL に接続する際にエラー番号 1129 が発生します: mysql エラー...

Facebook によるインターネット サービスのほぼ完璧な再設計

<br />出典: http://www.a-xuan.cn/?p=197 先ほどFac...

Docker 用ビジュアル UI 管理ツール Portainer のインストールと使用方法の分析

Portainer は、ステータス表示パネル、アプリケーション テンプレートの迅速な展開、コンテナ ...

RHEL7.5 mysql 8.0.11 インストールチュートリアル

この記事はRHEL7.5でのMySQL 8.0.11のインストールチュートリアルを記録しています。具...

テーブルタグ(テーブル)詳細

<br />テーブルは、昔から誰もが使ってきたタグで、今も使われています。しかし、現在の...