[Redis]RDBスナップショット

TIPS
TIPSコマンド

Redisでデータを定期的にファイル(RDBスナップショット)に保存するには、/etc/redis/redis.conf の save ディレクティブを設定します。

タスクキュー用途であれば、デフォルトの設定でも自動保存が有効になっていますが、環境に合わせて明示的にチューニングする方法を解説します。

データのバックアップ

1. 設定ファイルの編集

/etc/redis/redis.conf を開き、save で始まる行を確認・変更します。

# 「〇秒以内に〇回以上データが変更されたら保存する」という条件を指定します
save 900 1      # 15分以内に1回以上変更があれば保存
save 300 10     # 5分以内に10回以上変更があれば保存
save 60 10000   # 1分以内に10,000回以上変更があれば保存

非力なマシンでディスクへの書き込み負荷を減らしたい場合や、逆にタスクのロストを防ぐために頻繁に保存したい場合は、この数値を調整します(例:頻繁に保存させたいなら save 60 1 など)。

また、保存されるファイル名と保存先ディレクトリもここで指定されています(通常はそのままで問題ありません)。

dbfilename dump.rdb
dir /var/lib/redis

2. 設定の反映

設定ファイルを保存したら、Redisを再起動して変更を適用します。

sudo systemctl restart redis-server

3. 手動での即時保存(動作確認)

設定が正しく機能するか、手動でスナップショットファイルを作成(保存)させます。

仮想環境やCLIからRedisに接続し、SAVE コマンドを実行します。

redis-cli save

OK が返れば成功です。

/var/lib/redis/dump.rdb ファイルが生成・更新されていることを確認します。

ls -lh /var/lib/redis/dump.rdb

このスナップショット(dump.rdb)があるおかげで、万が一サーバーが再起動やクラッシュを起こしても、Redis再起動時にキューの中身が自動的に復元されます。

Github ActionsからGitlab CI/CDに移行
GitHub ActionsからGitLab CI/CDへの移行における概念や構文の対応関係、具体的な設定ファイルの書き換え方法を解説。並列実行やマトリックスビルドの移行手順を学び、効率的なパイプライン構築と円滑な移行を実現する知見が得られます。

データのリストア

dump.rdb によるリストア手順

Redisのスナップショットファイル(dump.rdb)からの復元は、対象のファイルを正しいディレクトリに配置し、Redisサービスを再起動するだけで自動的に読み込まれます。

1. Redisサービスの停止

リストア作業中にデータが上書きされたり競合するのを防ぐため、まずはRedisを停止します。

sudo systemctl stop redis-server

2. dump.rdbファイルの配置

バックアップとして保存しておいた dump.rdb ファイルを、Redisのデータディレクトリ(通常は /var/lib/redis)に配置します。

# 例: /tmp/dump.rdb にバックアップがある場合
sudo cp /tmp/dump.rdb /var/lib/redis/dump.rdb

3. ファイルの所有権と権限の確認

Redisは通常 redis ユーザーとして実行されるため、ファイル所有者が異なると読み込めません。所有権を正しく設定します。

sudo chown redis:redis /var/lib/redis/dump.rdb
sudo chmod 660 /var/lib/redis/dump.rdb

4. Redisサービスの起動

Redisを起動すると、起動時に自動的に dump.rdb が読み込まれ、データが復元されます。

sudo systemctl start redis-server

5. 復元されたことの確認

redis-cli を使って、キューやデータが正しく復元されているかをチェックします。

redis-cli
# 接続後、キーの一覧やデータ数を確認
KEYS *
DBSIZE
exit
[git]間違えて git stash たの復旧手順
git stashで誤って退避した作業内容を安全に復旧する手順を解説。stashの中身を確認するコマンドから、popとapplyの使い分け、さらに誤って削除してしまった場合のgit fsckを用いた救出法まで網羅しています。
Q よくある質問 (FAQ)
Q. 手動でスナップショットを保存する際、SAVEとBGSAVEのどちらを使うべきですか?
A.
本番環境ではBGSAVEを推奨します。SAVEコマンドは保存が完了するまでRedisの全クライアント処理をブロックしますが、BGSAVEはバックグラウンドで非同期に保存処理を行うため、サービスへの影響を最小限に抑えられます。
Q. dump.rdbを配置したのにデータが復元されない場合の主な原因は何ですか?
A.
Redisサービスが起動したままファイルを配置したか、ファイルの所有権(redisユーザー)やアクセス権限が正しく設定されていない可能性があります。必ずサービスを停止してから配置し、chownコマンドで所有権を修正してください。

コメント

タイトルとURLをコピーしました