MySQLで特定の時点にロールバックする方法
MySQLのリカバリツールを使って特定の日付や時刻までのロールバックを行うことができます。手順は次のとおりです。
- まず、MySQLサービスを停止します。MySQLサービスの停止には、以下のコマンドを使用します。
sudo systemctl stop mysql
- 次に、以下のコマンドを使用してデータベースのBinlogファイルを確認します。
ls -l /var/lib/mysql/
binlog から始まるファイル群があり、すべてのデータベースの変更ログが記録されています。
- ロールバックを行いたい時点のbinlogファイルと位置を特定します。次のコマンドを使用してbinlogファイルのリストを表示できます。
mysqlbinlog --no-defaults --base64-output=decode-rows --verbose --start-position=<start_position> <binlog_file> | less
は、戻りたい時点より直前のログ位置のうち最も新しいもので、はそれに対応するbinlogファイルです。
- 以下のコマンドを使用して、指定した時点まで戻します。
sudo mysqlbinlog --start-position=<start_position> <binlog_file> | sudo mysql -u root -p
ここで、とは前の手順であなたが探したbinlogファイルと位置です。
- 最後に、MySQL サービスを再起動します。
sudo systemctl start mysql
これで、指定した時点に正常に戻りました。