2026年10月26日
2026年10月26日
WordPressのポイントインタイムリカバリを設定する方法
はじめに
ここでは、WordPressサイトのデータベースに対してポイントインタイムリカバリを設定する方法について解説します。ポイントインタイムリカバリは、特定の時間点まで遡ってデータベースの状態を復元できる重要な機能です。これは、誤った操作やハッキング攻撃によってデータが損失したり破壊された場合に、過去の状態から最新のバックアップへと段階的に復旧を行うことができます。
症状・背景
このテーマが必要になる主な場面:
- ユーザーが誤って重要なデータを削除した
- サイトが攻撃を受け、特定の時間点以前のデータを使用したい場合
- 一時的な技術問題によりサイトが停止し、過去のデータが必要になった場合
手順・設定方法
ステップ1: MySQL/MariaDBのバージョン確認と初期化
# データベースサーバーのバージョンを確認します。
mysql --version
# ポイントインタイムリカバリ機能を利用するためには、MariaDB 10.3以降かMySQL 8.0以降が必要です。
# MariaDBを使用している場合
sudo systemctl start mariadb
sudo systemctl enable mariadb
# MySQLを使用している場合
sudo systemctl start mysqld
sudo systemctl enable mysqld
ステップ2: データベースのレプリケーション設定
# マスターデータベースの情報を取得します。
SHOW MASTER STATUS;
# スレーブサーバーでマスターレプリケーションを開始します。
CHANGE REPLICATION SOURCE TO
MASTER_HOST='<MASTER_IP>',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=4;
START SLAVE;
ステップ3: MySQL/MariaDBのbinlog設定
# binログを有効にします。
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf # MariaDBの場合
sudo nano /etc/my.cnf # MySQLの場合
# 以下のような設定を追加します。
[mysqld]
log_bin=/var/log/mysql/mysql-bin.log
server_id=1
expire_logs_days=7
max_binlog_size=100M
ステップ4: ポイントインタイムリカバリの実行
# 特定の時間点までのデータベースを復元します。
FLUSH TABLES WITH READ LOCK;
RESET MASTER;
UNLOCK TABLES;
# 以下のコマンドを使って過去の状態から復元します。
STOP SLAVE SQL_THREAD;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000123', MASTER_LOG_POS=456789 FOR CHANNEL 'repl';
START SLAVE SQL_THREAD;
注意事項
- ポイントインタイムリカバリを利用するには、適切なbinログが設定されていることが前提です。
- binログを長期間保存するとディスクスペースの消費が増加するため、適切にローテーション設定を行ってください。
- データベースレプリケーションの誤動作によりデータの一貫性が保たれない場合があります。定期的なチェックとテストが必要です。
まとめ
1. バージョン確認: MySQL/MariaDBの最新版を使用していることを確認します。
2. レプリケーション設定: データベースのレプリケーションを確立します。
3. binlog設定: binログを適切に有効化し、保存期間を設定します。
4. リカバリ実行: 特定の時間点までのデータ復元を行います。
5. 定期チェック: レプリケーションの一貫性とパフォーマンスを定期的に確認します。
関連記事: