MySQLバイナリログを介してデータベースデータを復元する方法の詳細な説明

MySQLバイナリログを介してデータベースデータを復元する方法の詳細な説明

ウェブサイト管理者は、さまざまな理由や操作により、ウェブサイトのデータを誤って削除したり、ウェブサイトのバックアップを怠ったりすることが多く、その結果、損失を被り、ウェブサイトの運営や収益に悪影響を与えることもあります。そこでこの記事では、MySQL のバイナリ ログ (binlog) を通じてデータを回復する方法を紹介します。

システム環境:

オペレーティング システム: CentOS 6.5 X64 (仮想マシン);

WEB サービス: PHP+Mysql+apache;

ウェブサイト: 利便性のため、Chanzhi システムを使用してローカルで直接 DEMO サイトを構築します。

手順:

1. binlog機能と基本操作を有効にします。

2. サイトにデータを追加します。

3. binlog ログを更新します。

4. データを削除します。

5. Binlog ログコンテンツ分析。

6. 指定されたデータを復元します。

1. binlog機能と基本操作を有効にする

MySQL の binlog ログ機能を使用するには、まず MySQL 設定ファイルでこの機能を有効にする必要があります。操作は非常に簡単です。 MySQL 構成ファイルを見つけて、ファイルに「log_bin = mysql-bin」という行を追加します。実際、私がインストールしたさまざまな Mysql 環境では、この機能は通常デフォルトでオンになっています。

binlog 機能をオンにすると、mysql データベース ディレクトリに mysql-bin.000001、mysql-bin.000002 などのファイルが作成されます。これらは mysql のバイナリ ログ ファイルです。 MySQL が起動されるたび、またはログが手動で更新されるたびに、新しいバイナリ ログ ファイルが作成されます。

まず、mysql コマンドラインで「show master logs」コマンドを使用して、既存の binlog ファイルを表示します。

2. サイトにデータを追加する

ウェブサイトのバックエンドの記事モジュールに、いくつかのテストデータを追加しました。

3. binlogログを更新する

以前、mysql binlog ファイルは mysql-bin.000001 であり、Web サイトのバックグラウンドで 3 つの記事がデータベースに追加されました。ここで、binlog ログを更新すると、次のように新しい mysql-bin.000002 ファイルが生成されます。

ログをフラッシュする。

マスターログを表示します。 

4. データの削除

ここで、先ほど追加した 3 つの記事を削除します。

5. Binlogログコンテンツ分析

Mysql のバイナリ ログ ファイルには、先ほどの削除操作など、mysql の操作が記録されます。ログ ファイルの具体的な内容を見てみましょう。

mysql の mysqlbinlog コマンドを使用します。

 mysqlbinlog /data/mysql/mysql-bin.000002

注: ローカルの mysqlbinlog は binlog 構成の default-character-set=utf8 を認識できないため、ここではコマンドに "--no-defaults" を追加して動作するようにしました。これを教訓として受け止めてください。

以下はログ内容の部分的なスクリーンショットです。

6. 指定されたデータを復元します。

MySQL の binlog ログを通じてデータを復元する場合、特定の時点へのリカバリを指定できます。これは、サーバーのスナップショット管理に少し似ています。したがって、削除した記事を復元したい場合は、削除前の時点を見つけて、その時点に復元することができます。

mysqlbinlog コマンドの使用方法については、次のように mysqlbinlog help コマンドで確認できます。

mysqlbinlog –デフォルトなし –ヘルプ

ヘルプドキュメントに記載されているように、時間または場所を指定してデータを復元できます。ここでは、時間を指定する例を使用して説明します。

次のように、ログ ファイル mysql-bin.000001 を確認しましょう。

mysqlbinlog -no--defaults /data/mysql/mysql-bin.000001 

前の手順から、データを削除する前に mysql-bin.000002 ログ ファイルを生成したことがわかっているので、この時点まで復元するだけで済みます。この時間は上の図で確認しました。

コマンドは次のとおりです。

次のようにコードをコピーします

mysqlbinlog –no-defaults –stop-datetime='2017-04-11 09:48:48' /data/mysql/mysql-bin.000001 |mysql –uroot –p123456

この時、背景を確認したところ、先ほど削除した3つの記事が復元されており、目的を達成できました。

要約:

この記事では、MySQL バイナリ ログ ファイルを通じてデータを回復する方法について説明します。しかし、私は依然として、平常時にウェブサイトのデータをきちんとバックアップすることを皆さんに思い出させたいと思います。現在主流の CMS ウェブサイト構築システムには、ここで使用している Chanzhi システムのように、データベース バックアップ機能が組み込まれているものもあります。データはウェブサイトの生命線です。後で不要なトラブルや損失を避けるために、データをきちんとバックアップしてください。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • mysql バイナリ ログ ファイル データベースの復元
  • MySQLデータベースのログファイル(binlog)を自動的に復元する方法を説明します
  • MySQL の binlog ログと、binlog ログを使用してデータを回復する方法を説明します。
  • MySQLはデータ復旧を実装するためにbinlogログを使用する
  • ログファイルからMySQLデータを復元する方法を教えます

<<:  Linux での SSH 非秘密通信の実装

>>:  vue3 のコンポーネントの互換性のない変更の詳細な説明

推薦する

MySQL 8.0 でリモートアクセス権限を設定する方法

前回の記事では、MySQL パスワードをリセットする方法を説明しました。一部の学生から、データベース...

WeChat アプレット開発フォーム検証 WxValidate の使用

個人的には、WeChat アプレットの開発フレームワークは VUE と概ね似ていると感じていますが、...

高並列処理 nginx サーバー向け Linux カーネル最適化構成の説明

デフォルトの Linux カーネル パラメータは最も一般的なシナリオに基づいており、高い同時アクセス...

JavaScript/TypeScript で同時リクエスト制御を実装するためのサンプルコード

シナリオリクエストが 10 件あるが、同時リクエストの最大数は 5 件で、リクエスト結果が必要である...

CSS で 3D ブック効果を実装するためのサンプル コード

さっそく、レンダリングを見てみましょうソースコードは以下のとおりです <!DOCTYPE ht...

Navicatを使ってMySQLを操作する方法

目次序文: 1. Navicatの紹介2. シンプルなチュートリアルの共有接続管理ライブラリテーブル...

MySQL max_allowed_pa​​cket 設定

max_allowed_pa​​cket は、受け入れるパケットのサイズを設定するために使用される ...

MySQL の挿入ステートメントの使用実体験

目次1. 挿入のいくつかの構文1-1. 通常の挿入文1-2. 挿入または更新1-3. 挿入または交換...

Vueは動的ルーティングの詳細を実装します

目次1. フロントエンド制御1. router.js ファイル内 (router.js にそれぞれ静...

Webフロントエンドベクターアイコンの使い方

序文フロントエンドページを書くとき、小さなアイコンなどの画像を使うことが多いです。画像を使うとコード...

Linux で PHP curl 拡張機能をインストールする方法の詳細な説明

この記事では、Linux で PHP curl 拡張機能をインストールする方法について説明します。ご...

js を使用して QR コードを生成するサンプル コード

以前、プロジェクトでQRコードをスキャンして情報を表示する機能を開発する必要がありました。インターネ...

Python ベースの Linux システムにおける特定のプロセスのパフォーマンス監視の考え方の詳細な説明

インターネット上には Linux サーバーを監視するためのツール、コンポーネント、プログラムが多数あ...

4つの柔軟なScssコンパイル出力スタイル

多くの人は、Scss を使用する瞬間からコンパイル方法を説明されてきました。したがって、コマンドのコ...

Reactにおけるフックの一般的な使用法

目次1. フックとは何ですか? 2. フックはなぜ現れるのでしょうか? 3. よく使われるフックは何...