ホームページ  >  記事  >  データベース  >  ログファイルから MySQL データを復元する方法

ログファイルから MySQL データを復元する方法

王林
王林転載
2023-05-26 15:49:063451ブラウズ

    1. 最新の binlog ファイルを見つけます

    mysql コマンド ラインを入力して次のコマンドを実行します

    mysql> show master status;
    +------------------+-----------+
    | Log_name         | File_size |
    +------------------+-----------+
    | binlog.000001 |       967 |
    | binlog.000002 |       965 |
    +------------------+-----------+

    通常、最新の番号は次のとおりです。大きいほど、上記の最新のものです。 1 つは binlog.000002

    2 です。ログ ファイル内で回復したいデータの開始位置と終了位置を見つけます。

    開始位置と終了位置、1 つは時間を使用します。 開始位置と終了として、1 つはログの位置を開始位置と終了位置として使用します。

    2.1、時間範囲を使用します。

    mysqlbinlog mysql-bin.000002 コマンドを使用してログの内容を表示し、削除された時点を見つけます :

    # at 131708213
    #210610 11:27:01 server id 1  end_log_pos 131708311 CRC32 0x0fc755e2     Table_map: `loongwind_base`.`xxxx` mapped to number 139
    # at 131708311
    #210610 11:27:01 server id 1  end_log_pos 131708411 CRC32 0xa91616b9     Write_rows: table id 139 flags: STMT_END_F
    
    BINLOG '
    BffBYBMBAAAAYgAAAJe12QcAAIsAAAAAAAEADmR4bWhfYmFzZV9oenN5ABpkeF9zeV9hc3NldHNf
    ZXh0ZW5kc19jb3B5MQAICAgIDwgSCBIEAAgAAPgBAQACA/z/AOJVxw8=
    BffBYB4BAAAAZAAAAPu12QcAAIsAAAAAAAMAAgAI/wDRAwAAm1M8AUIAAADRUjwBCgAAAFYL5gAM
    AOWFrOWuieacuuWFs7EBAADbwZkAmama6E+xAQAA28GZAJmpmuhPuRYWqQ==
    '/*!*/;

    次に、最後のバックアップの時点を特定します。最後のバックアップの時点が見つからない場合は、ログを通じて、最後のバックアップよりも小さいメモリ内の時点を入力できます。

    2.2、位置範囲を使用します

    次のコマンドを使用して、バックアップの位置を表示します。 log event

    mysql -uroot -p'password' -e "show binlog events in 'binlog.000002'"|grep -i 'DROP TABLE'

    実行結果は次のとおりです:

    binlog.000002 820474948 Query 1 820475111 use `loongwind_base`; DROP TABLE IF EXISTS `undo_log` /* generated by server * / /* xid=11790691 */

    つまり、削除された位置は 820474948

    または上記のコマンドでキーワードを置き換えます。最後のバックアップの位置ポイントを見つけます

    3. 復元

    3.1 時間単位での復元

    mysqlbinlog --no-defaults --database=loongwind_base --start-datetime="2021-06-07 09:00:00" --stop-datetime="2021-06-10 16:37:58" binlog.000005 | mysql -uroot -p'password' -s -N -f -D loongwind_base

    ここで、dxmh_base_hzsy はデータベース名です

    3.2 位置単位での復元

    mysqlbinlog  --start-position=1178  --stop-position=2751 -d dxmh-sy binlog.000002|mysql -uroot -p'password' -s -N -f -D loongwind_base
    loongwind_base 为数据库名称

    本当にできる場合開始時刻または開始位置が見つからない場合は、--start-datetime または --start-position を記述する必要はありません。これにより、このログ ファイルの先頭が使用されて最後まで復元されます。既存 データの競合の場合は、-f を追加する必要があります。つまり、強制的にエラーをスキップして実行を続行します。

    以上がログファイルから MySQL データを復元する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。