mysql コマンド ラインを入力して次のコマンドを実行します
mysql> show master status; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | binlog.000001 | 967 | | binlog.000002 | 965 | +------------------+-----------+
通常、最新の番号は次のとおりです。大きいほど、上記の最新のものです。 1 つは binlog.000002
開始位置と終了位置、1 つは時間を使用します。 開始位置と終了として、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== '/*!*/;
次に、最後のバックアップの時点を特定します。最後のバックアップの時点が見つからない場合は、ログを通じて、最後のバックアップよりも小さいメモリ内の時点を入力できます。
次のコマンドを使用して、バックアップの位置を表示します。 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
または上記のコマンドでキーワードを置き換えます。最後のバックアップの位置ポイントを見つけます
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 はデータベース名です
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 サイトの他の関連記事を参照してください。