Redisのバックアップ方法を徹底解説!初心者でも安心なデータベース運用と設定の基本
生徒
「Redis(レディス)というデータベースを使っているのですが、もしパソコンが壊れたらデータが消えてしまうのが怖いです。バックアップってどうすればいいんですか?」
先生
「大切なデータが消えるのは困りますよね。Redisには、データを守るための『バックアップ』という予備の保存方法がいくつか用意されていますよ。」
生徒
「難しいプログラミングとかが必要なんでしょうか?パソコンに詳しくない私でも設定できますか?」
先生
「大丈夫です。Redisの設定ファイルという『指示書』を少し書き換えるだけで、自動的に保存してくれるようになります。まずは基本から一緒に見ていきましょう。」
1. Redisのバックアップとは?なぜ必要なのか
Redis(レディス)は、非常に高速に動作するデータベースですが、大きな特徴として「普段はパソコンのメモリ(作業机のような場所)でデータを管理している」という点があります。メモリは作業が速い反面、パソコンの電源が切れると中身が消えてしまうという弱点があります。
そこで必要になるのがバックアップです。バックアップとは、メモリにあるデータをハードディスクやSSD(本棚のような保管場所)にコピーして保存しておく作業のことです。これをしっかり設定しておくことで、万が一パソコンが突然止まっても、データを元通りに復活させることができます。これを専門用語で「永続化(えいぞくか)」と呼びます。
エンジニアの必須スキル「SQL」を、 図解と豊富な練習問題でゼロから体系的に学びたい人へ。 MySQLやPostgreSQLなど、各種データベースに対応した不朽の入門書です。
SQL 第2版 ゼロからはじめるデータベース操作をAmazonで見る※ Amazon広告リンク
2. バックアップの2つの方法「RDB」と「AOF」
Redisには、主に2種類のバックアップ方法があります。初心者の方は、まずこの2つの違いを理解しましょう。
「ある瞬間の写真」を撮るように保存する方法です。1時間に1回など、決まった時間にまとめて保存します。ファイルが小さくて済むのがメリットです。
「家計簿」のように、データに加えた変更をすべて記録していく方法です。少しずつ記録するので、最新の状態を保ちやすいですが、ファイルが大きくなりがちです。
3. RDB(スナップショット)の設定方法
まずは、最も一般的なRDB方式の設定を見てみましょう。Redisの設定ファイル(redis.conf)に、以下のような命令を書きます。これは「〇秒間に〇回以上の変更があったら保存してね」という指示になります。
-- これは設定のイメージです
save 900 1 -- 900秒(15分)の間に1回以上データが変わったら保存
save 300 10 -- 300秒(5分)の間に10回以上データが変わったら保存
save 60 10000 -- 60秒(1分)の間に10,000回以上データが変わったら保存
この設定をしておくと、Redisは自動的に「dump.rdb」という名前のファイルを作って保存してくれます。これがバックアップデータそのものになります。例えば、以下のようなユーザー名簿があったとします。
id | name | score | status
---+----------+-------+----------
1 | 佐藤 | 100 | active
2 | 鈴木 | 250 | active
3 | 高橋 | 50 | pending
4 | 田中 | 180 | active
ここで、田中さんのスコアを更新する命令を出してみましょう。
SET user:4:score 200
実行後のデータはこのようになります。
id | name | score | status
---+----------+-------+----------
1 | 佐藤 | 100 | active
2 | 鈴木 | 250 | active
3 | 高橋 | 50 | pending
4 | 田中 | 200 | active
この「200」に変わった瞬間の状態が、設定した時間が来るとファイルに保存される仕組みです。
4. AOFでより安全にデータを守る
RDBだけだと、次の保存時間が来る前にパソコンが壊れた場合、その間のデータが消えてしまいます。より安全に運用したい場合は、AOF(Append Only File)を有効にします。
AOFを有効にするには、設定ファイルの appendonly という項目を yes に書き換えるだけです。これにより、データに対するすべての操作が記録されるようになります。
-- AOF機能を有効にする設定
appendonly yes
appendfsync everysec -- 1秒ごとに書き込みを確定させる(バランスが良い設定)
例えば、新しくユーザーを追加してみます。
SET user:5:name "伊藤"
SET user:5:score 120
実行後の名簿は以下の通りです。
id | name | score | status
---+----------+-------+----------
1 | 佐藤 | 100 | active
2 | 鈴木 | 250 | active
3 | 高橋 | 50 | pending
4 | 田中 | 200 | active
5 | 伊藤 | 120 | active
AOFはこの「追加した」という行動そのものをメモ帳に記録していくので、たとえ数秒前に書き込んだデータでも、復旧できる可能性が非常に高くなります。
5. トラブル対応:もしデータが消えたら?
バックアップ設定をしていたのに、トラブルが起きてデータが見えなくなった場合はどうすればよいでしょうか。主なトラブルの原因と対処法を知っておきましょう。
急な停電などで、書き込み途中のバックアップファイルが壊れてしまうことがあります。この場合、Redisが起動できなくなることがあります。
Redisには「redis-check-aof」や「redis-check-rdb」という、ファイルを修理するための道具が付属しています。これを使うと、壊れた部分をカットして起動できるようにしてくれます。
6. 安全な運用のための基本ルール
最後に、初心者の方が今日から実践できる「安全運用のコツ」を3つお伝えします。
- 外部にコピーを取る: パソコン自体の故障に備えて、バックアップファイルを別のUSBメモリやクラウドストレージ(インターネット上の保存所)にもコピーしておきましょう。
- 定期的に確認する: 「バックアップが取れているつもり」が一番怖いです。月に一度は、本当にファイルが更新されているか日付を確認してください。
- パスワードを設定する: 誰でもデータを消せてしまうと大変です。必ず
requirepassという設定でパスワードをかけましょう。
このように、Redisのバックアップは「自動保存の設定」と「ファイルの外部保存」を組み合わせることで、非常に強固なものになります。最初は難しく感じるかもしれませんが、一度設定してしまえばあとはRedisが健気にデータを守り続けてくれます。大切なユーザーの情報を守るために、まずは設定ファイルを開くところから始めてみてくださいね。