Redisでは、主に2つの永続化方式が提供されています。一つはRDB(Redis Database Backup)、もう一つはAOF(Append Only File)です。それぞれ異なる特徴と利用目的を持っています。以下では、これらの方式を使ってRedisのデータを復元する方法について説明します。
1. RDB(Redisデータベーススナップショット)
RDBはRedisの永続化メカニズムの一つで、定期的にデータベースの状態をファイルに保存してバックアップを行う仕組みです。このファイルは通常.rdb拡張子を持つ形式で保存されます。
データの復元手順 RDBファイルの確認 有効なRDBファイルがあることを確認してください。もし存在しない場合は、Redisのデータディレクトリ(一般的には/var/lib/redisなど)からdump.rdbファイルを探します。
ステップ1:Redisサーバーの準備 現在実行中のRedisインスタンスを停止します(存在する場合):
sudo systemctl stop redis
または:
redis-cli shutdown
ステップ2:RDBファイルのコピー dump.rdbファイルをRedisのデータディレクトリにコピーします:
cp /path/to/your/dump.rdb /var/lib/redis/dump.rdb
ファイルの権限と所有者が適切であることを確認し、Redisプロセスが読み取り可能になるように設定してください。
ステップ3:Redisサーバーの起動 Redisインスタンスを起動します:
sudo systemctl start redis
または:
redis-server /path/to/redis.conf
Redisは自動的にdump.rdbファイルを読み込み、データベースを復元します。
2. AOF(アペンド・オンリー・ファイル)
AOFはRedisのもう一つの永続化方式であり、各書き込み操作をAOFファイルに追記することでデータを保持します。このファイルは通常.aof拡張子を持ちます。
データの復元手順 AOFファイルの確認 有効なAOFファイルがあることを確認してください。存在しない場合は、Redisのデータディレクトリからappendonly.aofファイルを探します。
ステップ1:Redisサーバーの準備 現在実行中のRedisインスタンスを停止します(存在する場合):
sudo systemctl stop redis
または:
redis-cli shutdown
ステップ2:AOFファイルのコピー appendonly.aofファイルをRedisのデータディレクトリにコピーします:
cp /path/to/your/appendonly.aof /var/lib/redis/appendonly.aof
ファイルの権限と所有者が正しく設定されていることを確認し、Redisプロセスが読み取り可能になるようにしてください。
ステップ3:Redisサーバーの起動 Redisインスタンスを起動します:
sudo systemctl start redis
または:
redis-server /path/to/redis.conf
Redisは自動的にappendonly.aofファイルを読み込み、データベースを復元します。
3. RDBとAOFの併用
RedisがRDBとAOFの両方を有効にしている場合、RedisはAOFファイルを優先してデータ復元を行います。これはAOFがより詳細な操作ログを保持しており、データの一貫性を保つのに役立つためです。もしAOFファイルが利用できない場合は、RedisはRDBファイルを使用して復元します。
設定の確認 Redisの設定ファイル(redis.conf)において、RDBとAOFの両方が有効になっているかを確認してください。 RDB設定
save 900 1
save 300 10
save 60 10000
AOF設定
appendonly yes
appendfsync everysec
パラメータの説明: save:RDBスナップショットの作成条件を定義します。 appendonly yes:AOFの有効化を示します。 appendfsync everysec:AOFファイルの同期頻度を指定します。
まとめ
- RDB:dump.rdbファイルを用いてデータを復元します。Redisを停止し、RDBファイルを置き換え、再度起動します。
- AOF:appendonly.aofファイルに記録された操作をもとにデータを復元します。Redisを停止し、AOFファイルを置き換え、再度起動します。
RDBまたはAOFいずれを使用しても、復元中にRedisインスタンスが停止していることを確認することが重要です。これにより、データの一貫性を保つことができます。