MySQL バイナリログデータ復旧: 誤ってデータベースを削除した場合の詳細な説明

MySQL バイナリログデータ復旧: 誤ってデータベースを削除した場合の詳細な説明

MySQL Binログデータの回復: 誤ってデータベースを削除した場合

前書き: テスト マシンで誤って Mysql データベース スキーマ全体を削除してしまったため、テスト マシンであったためバックアップを作成しませんでした。現在は、MySQL の Bin ログ メソッドを使用して、削除前のデータベースを復元しています。

もちろん、Bin ログデータ復旧の前提は、Bin ログ機能がオンになっていることです。データのバックアップを取っておらず、Bin ログをオンにしていない場合は、システムの観点から復旧するためにスナップショットなどの他の方法を検討する必要があるかもしれません。

バイナリ ログは、増分データ バックアップとリカバリ、およびデータベースのマスター スレーブ レプリケーションによく使用されます。有効になっていない場合は、次の手順で有効にできます。

1. mysqlのbinlog関数を開く

MySQL は増分バックアップをサポートしていますが、MySQL の bin ログ機能をオンにする必要があります。

mysql 構成ファイルを変更します。 Linux は /etc/my.cnf、Windows は mysql インストール ディレクトリ/my.ini です。
次のように、[mysqld] の下に log-bin のコード行を追加します。

# レプリケーションマスターサーバー(デフォルト)
# レプリケーションにはバイナリログが必要です
ログ bin = mysql bin

# バイナリログ形式 - 混合推奨
binlog_format=混合。

2. 次の方法でバイナリ ログのステータスを確認します。有効になっていますか?

mysql> 'log_%' のような変数を表示します。

3. すべてのバイナリログファイルを表示します。

mysql> ライブラリログを表示します。

mysql> バイナリログを表示します。
+------------------+-----------+
| ログ名 | ファイルサイズ |
+------------------+-----------+
|mysql-bin.000001 | 201 |
|mysql-bin.000002 | 351 |
| mysql-bin.000003 | 276 |
|mysql-bin.000004 | 201 |
|mysql-bin.000005 | 16509 |

4.Mysqlはバイナリログファイルの操作ログを表示します

#mysqlbinlog --開始位置=0 /mydata/data/mysql-bin.000089

[root@test mysql]# mysqlbinlog --start-position=0 --stop-position=500 mysql-bin.000091
警告: オプション 'start-position': 符号なし値 0 が 4 に調整されました
/*!50530 @@SESSION.PSEUDO_SLAVE_MODE を 1 に設定します*/;
/*!40019 @@session.max_insert_delayed_threads を 0 に設定します*/;
/*!50003 @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0 に設定*/;
区切り文字 /*!*/;
# 4時
#151022 18:00:43 サーバー ID 1 end_log_pos 107 開始: binlog v 4、サーバー v 5.5.38-log が起動時に 151022 18:00:43 に作成されました
# 警告: このバイナリログは使用中か、適切に閉じられていません。
ロールバック/*!*/;
バイナリログ'
y7MoVg8BAAAAZwAAAGsAAAABAAQANS41LjM4LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADLsyhWEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
'/*!*/;
# 107 で
#151022 23:27:50 サーバー ID 1 end_log_pos 198 クエリ thread_id=2 exec_time=0 error_code=0
タイムスタンプを 1445527670/*!*/ に設定します。
@@session.pseudo_thread_id=2/*!*/ を設定します。
@@session.foreign_key_checks=0、@@session.sql_auto_is_null=0、@@session.unique_checks=0、@@session.autocommit=1/*!*/ を設定します。
@@session.sql_mode を 1608515584/*!*/ に設定します。
@@session.auto_increment_increment=1、@@session.auto_increment_offset=1/*!*/ を設定します。
/*!\C utf8 *//*!*/;
@@session.character_set_client=33、@@session.collat​​ion_connection=33、@@session.collat​​ion_server=8/*!*/ を設定します。
@@session.lc_time_names=0/*!*/ を設定します。
@@session.collat​​ion_database=DEFAULT/*!*/ を設定します。
`pandora`<pre name="code" class="sql">/*!*/ が存在する場合はスキーマを削除します。
# 198 で
#151022 23:27:50 サーバー ID 1 end_log_pos 346 クエリ thread_id=2 exec_time=0 error_code=0

5. Bin ログからデータを復元します。スキーマ全体を削除してバックアップしておらず、Bin ログが有効になっていたため、すべての履歴 Bin ログを再実行し、誤って削除する前のバージョンに復元しました (ここでは合計 91 個のファイルがあり、バッチ処理されています)。(999999999999: これは、各 Bin ログ ファイルの開始位置と終了位置を見つける手間を省くためであり、操作を簡素化するために無限数を設定します。)

#mysqlbinlog /var/lib/mysql/mysql-bin.000001 --start-position=0 --stop-position=9999999999999 | mysql -uroot -p123456
#mysqlbinlog /var/lib/mysql/mysql-bin.000002 --start-position=0 --stop-position=9999999999999 | mysql -uroot -p123456
#mysqlbinlog /var/lib/mysql/mysql-bin.000003 --開始位置=0 --停止位置=9999999999999 | mysql -uroot -p123456
……

結論は次のようになります。

  1. 1. 定期的にバックアップすることを忘れないでください。
  2. 2. バックアップがあれば、復旧が早くなります。バックアップ時点から増分バックアップが取れます。私のように最初から91個のファイルを一括で実行する必要はありません。もちろん、エディタで一括処理もできます。かなり高速です。
  3. 3. また、必ずBin-logログを開いてください。バックアップを作成していない場合は、Bin-logログから復元することもできます。
  4. 4. 操作時には注意してください。

他の:

1. sql_logもあります

mysql> 'sql_log_%' のような変数を表示します。

Mysql は、SQL バイナリ ログをオンまたはオフにします。
mysql> set sql_log_bin=0; //閉じる
セッションを sql_log_bin=0 に設定します。

2. ファイルの場所を見つけます。

検索 / -name my.cnf

3. Linux 現在のディレクトリのフルパスを表示する

pwd コマンド:
var/lib/mysql の

4. 現在のバイナリログのステータスを確認します。

mysql>マスターステータスを表示します。

5. my.cnf/my.ini でバイナリ ログのロールバックの日数を設定します。

有効期限切れログ日数 = 7

6. マスタービンログを表示する

mysql> マスターログを表示します。
+-----------------+-----------+
| ログ名 | ファイルサイズ |
+-----------------+-----------+
| ログ bin.000001 | 98 |
 +-----------------+-----------+
セット内の 1 行 (0.00 秒)
--------------------- 

上記は、編集者が紹介したMySQL Binlogデータ復旧の詳細な説明と統合です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL の Binlog 関連コマンドとリカバリテクニック
  • MySQL でデータ復旧に binlog を使用する方法
  • MySQLデータベースのログファイル(binlog)を自動的に復元する方法を説明します
  • MySQLはデータ復旧を実装するためにbinlogログを使用する
  • MySQL で binlog を介してデータを復元する方法

<<:  js+ca​​nvas でコードレイン効果を実現

>>:  Raspberry Pi 4b ubuntu19 サーバーへの docker-ce のインストール手順

推薦する

Dockerデータボリューム操作の実装

データボリュームの使用開始先ほどのケースでは、ホストからコンテナにデータをコピーする必要がある場合、...

Reactにおける制御されたコンポーネントと制御されていないコンポーネントの簡単な分析

目次制御されていないコンポーネント制御コンポーネント知らせ結論は制御されていないコンポーネントフォー...

Hタグの定義と注意事項について簡単に説明します

結果から判断すると、タイトルを定義するための固定パターンはなく、すべてむしろランダムな感じがします。...

ページリファクタリングスキル - コンテンツ

雑談はここまでにして、インターネット上で見つかる高性能な Yahoo ウェブサイトを構築するための数...

海外でダウンロードできる25個の新鮮で便利なアイコンセット

1. Eコマースアイコン2. アイコンスイーツ2 3. 携帯電話アイコンパック4. 旗アイコンセット...

CocosCreatorを使ってシューティングゲームを作る方法

製造手順を分析します。 1. リソースを準備してシーンを構築するオンラインでリソースを探すか、私のリ...

MySQLデータベースでの値の追加、変更、削除、クリアの例

3. MySQLデータ管理最初の方法:お勧めできません。複雑そうです -- 学生テーブルの grad...

MySQL でのトリガーとカーソルの紹介と使用

トリガーの紹介トリガーは、テーブルに関連付けられた特別なストアド プロシージャであり、テーブル内のデ...

Vue Element UIの使用時に遭遇した問題をまとめる

目次1. DateTimePickerの日付選択範囲は現在時刻とそれ以前です2. DateTimeP...

js で下線とキャメルケースの変換を実装する (複数の方法)

目次適用シナリオ:方法 1: 正規表現 (推奨)方法2: 配列のreduceメソッドを使用する方法3...

CSS3 アニメーション ボールローリング JS コントロールアニメーション一時停止

CSS3 はアニメーションを作成でき、多くの Web ページのアニメーション画像、Flash アニメ...

HTML タグ マーキーを使用してスクロール効果を実現する簡単な方法 (必読)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

Web開発でボックスを中央に配置するいくつかの方法

1. ボックスを中央に配置するいくつかの方法を記録します。 1.0、マージン幅固定、高さ中央配置。 ...

fastdfs+nginxクラスタ構築の実装

1. fastdfs の紹介1. fastdfsとは何かFastdfs は軽量のオープンソース分散フ...

Linux で ARM 開発ボード用のファイルシステムを作成する

1. Busyboxのソースコードをオンラインでダウンロードしてください。コンパイル方法については、...