DBAtlas · データベース運用アトラス

Redis のバックアップとリストア (RDB、AOF、replica、cluster)

Redisレベル: 中級所要時間: 30〜60 分

インストール済みの Redis または Valkey (単一インスタンス、Sentinel 構成の master/replica、Redis Cluster) のバックアップ運用を構築し、バックアップからの復旧手順を説明します。RDB (save ルール、BGSAVE、LASTSAVE、dump.rdb のコピー) と AOF (BGREWRITEAOF、7.x のマルチファイル appendonlydir) のバックアップ、replica からのバックアップ、Cluster での全 master のバックアップ、一時インスタンスでのテストリストア、AOF 優先の落とし穴を避けたインプレースリストア、systemd timer / cron による保持期間とリモートコピー付きの定期バックアップを順に実施します。最終的に、定期的に実行され、リストアできることを確認済みのバックアップが得られます。レプリケーション (Sentinel、Cluster) はバックアップの代わりにはなりません。誤って削除したデータはすべての replica に伝播します。インストールと日常運用は別の Redis ガイドで扱います。

構成: 単一インスタンス、replica または Redis Cluster サーバー (Redis 7.2 / 8.x、Valkey)

開始前の確認

  • … が稼働しており、設定ファイル … に requirepass が定義されています (パスワードはこのファイルから読み取ります)。インストールは DBAtlas の …Redis Cluster…Redis Sentinel… ガイドのパスで行われている必要があります。異なる場合はパスを読み替えてください。
  • … はデータディスクとは別のディスクまたはネットワーク共有上にあり、空き容量はメモリ上のデータサイズ (used_memory) の保持日数倍以上あります。さらにデータディレクトリには BGSAVE 用に新しい RDB を書き込めるだけの空き容量が必要です。
  • BGSAVE/BGREWRITEAOF は fork で動作するため、書き込み量に応じて (copy-on-write) 追加のメモリが必要です。vm.overcommit_memory = 1 が設定されている必要があります。設定されていないと fork が "Can't save in background: fork: Cannot allocate memory" で失敗します。
  • バックアップで使用するコマンド (CONFIG、BGSAVE、LASTSAVE、BGREWRITEAOF…、CLUSTER、SYNC…) が rename-command で無効化されておらず、パスワードの所有ユーザー (default) がこれらを実行できます。
  • root または sudo 権限があります。インプレースリストアを行う場合は、メンテナンスウィンドウを確保し、アプリケーションチームに通知済みです。

ガイドのフェーズ

  • 現在の永続化設定 — 永続化とロールの情報を確認する · RDB save ルールを設定する · AOF をオンラインで有効にする · バックアップディレクトリを準備する
  • RDB バックアップ — Replica が最新であることを確認する · BGSAVE で最新の RDB を取得する · dump.rdb をバックアップディレクトリにコピーして検証する · Cluster の master を一覧表示する · 各 master から RDB を取得する (--rdb)
  • AOF バックアップ — AOF を圧縮する (BGREWRITEAOF) · appendonlydir をバックアップする · AOF ファイルを検証する
  • テストリストア (一時インスタンス) — RDB を一時インスタンスで開く · ソースと比較して一時インスタンスを停止する · AOF バックアップを一時インスタンスで開く
  • インプレースリストア — サービスを停止し、既存のファイルを退避する · RDB バックアップを配置する · AOF を一時的に無効にする · AOF バックアップを配置する · サービスを起動してデータを検証する · AOF をオンラインで再度有効にする …
  • 定期バックアップと保持 — バックアップスクリプトを作成する · スクリプトを実行可能にする · リモートサーバーへの SSH アクセスを準備する · systemd service と timer を作成する · 定期バックアップを手動で起動して確認する · cron ジョブを作成する …
  • 監視 — 永続化とバックアップの経過時間を監視する · 定期的な復旧訓練
環境に合わせた手順プランを開く →