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 のコンポーネントの互換性のない変更の詳細な説明

推薦する

Linux exa コマンド (ls よりも優れたファイル表示エクスペリエンス)

インストールREADMEに従ってインストールしてくださいドキュメントには、exa は Rust で実...

Linux の fsevents モジュールによって発生する npm ls エラーの解決方法の詳細な説明

Mac で開発されたプロジェクトがあり、パッケージ npm i がインストールされており、すべて正常...

JavaScript 履歴オブジェクトの説明

目次1. ルートナビゲーション2. 履歴状態管理API (1)ハッシュチェンジイベント(2)ポップス...

Nginx 正規表現関連のパラメータとルールの紹介

序文最近、私はクライアントのサーバー構成を支援しており、Nginx 構成ファイルを頻繁に変更していま...

Django プロジェクトを作成して MySQL に接続する方法

1: django-admin.py startproject プロジェクト名2: cd プロジェク...

Linux LVM 論理ボリューム構成プロセス (作成、増加、削減、削除、アンインストール) の詳細な説明

Linux LVM論理ボリューム構成プロセスの詳細な説明多くの Linux ユーザーは、オペレーティ...

clearfixとclearの例

この記事では、CSS を理解し始めたばかりの人を対象に、主に HTML で clearfix と c...

Linux での GDB 入門チュートリアル

序文gdb は Linux で非常に便利なデバッグ ツールです。コマンドライン モードのデバッグ ツ...

ウェブタイポグラフィにおける致命的な意味的ミス 10 選

<br />これは、Steven D が書いた Web フロントエンド開発デザインの基本...

Vue ミックスインの使用方法とオプションのマージの詳細な説明

目次1. コンポーネントでの使用2. オプションのマージ要約する1. コンポーネントでの使用Mixi...

MySQLフィールド定義でnullを使用しない理由の分析

NULL が頻繁に使用されるのはなぜですか? (1)Javaのnull Java の NullPoi...

DIV 背景半透明テキスト非半透明スタイル

DIVの背景は半透明ですが、DIV内の文字は半透明ではありませんコードをコピーコードは次のとおりです...

SELINUXの動作原理の詳細な説明

1. はじめにSELinux が Linux にもたらす主な価値は、柔軟で構成可能な MAC メカニ...

Docker クリーニングの一般的な方法と問題点

大規模な開発に Docker を使用する場合でも、クリーンアップ戦略がなければ、ディスクがすぐにいっ...