永続性としての設定
Redis は、その高性能なキー・バリュー・データベースで知られ、ディスク・アクセスに時間がかかるのを避けるため、すべてのデータをRAMに保存していることが特徴である。 それにもかかわらず、このRAM中心のアプローチは、RAMの揮発性の性質を考えると、 Redis プロセスやホストのインシデントが発生した場合にデータ損失のリスクをもたらす。 この懸念に対処するため、 Redis、ディスク上にデータを永続化するメカニズムを提供している。
の永続モード Redis
主な永続化モードは2つある:RDB(スナップショット・モード)とAOF(強力な永続性)です。 それぞれのモードは、性能と信頼性の面で明確なトレードオフを伴う。 したがって、 Redis、適切なパーシステンス・モードを選択するには戦略的な決断が必要となる。
RDBスナップショット
Redis データセットのスナップショットをディスク上のバイナリファイル に保存する。 dump.rdb データセットは、少なくともM回の変更があれば、N秒ごとに保存される。
- 保存 3600 1:少なくとも1つのキーが変更された場合、1時間ごと。
- Save 300 100:少なくとも100個のキーが変更された場合、5分ごとに保存。
- Save 60 10000: 10,000以上のキーが変更された場合、1分ごとに保存。
AOF(ファイルのみ追加)
AOFを有効にすると、 Redis、サービスが受け取るすべての書き込み操作をログに記録してデータを永続化する。 AOFはfsyncポリシーによって設定され、データの耐久性を保証する。
- 常に:最も安全だが、性能は最低。
- Everysec(デフォルト):より良いパフォーマンスで安全。
- いいえ:通常、fsyncを実行するタイミングはオペレーティング・システムに依存しており、通常は約30秒です(安全ではありませんが、最高のパフォーマンスを提供します)。
詳しくは、 Redis persistenceを 参照のこと。
で永続性を設定する。 Databases for Redis
IBM Cloud® Databases for Redis 展開では、プロビジョニング時に RDB スナップショットと AOF の両方がデフォルトで有効になり、データがディスクに書き込まれます。 しかし、ユーザーは AOFを無効にして、 Databases for Redis をキャッシュとして使用することができる。これによりIOPSの負荷が軽減され、パフォーマンスが向上する。
Databases for Redis は高可用性で動作し、RDB スナップショットを無効にすることはできない。
- 以下の 手順に従って、 Databases for Redis インスタンスをプロビジョニングしてください。
- Databases for Redis、永続性設定を確認する。 Redis CLIを使用して、ICD Redis インスタンスにアクセスします。
デフォルトでは、AOFは yesに設定されているので、 Databases for Redis、RDBのスナップショットとともに毎秒fsyncでAOFパーシステンスを取るように設定されている。
Redis をキャッシュとして使いたい場合は、AOFをオフにすることができる。 また、 Redis、フェイルオーバー時にトランザクションログを再生する必要がないため、データベースの可用性を高めることができる。 詳しくは、 Redis をキャッシュとして設定するを 参照のこと。
Databases for Redis、永続的な設定として再設定する
Databases for Redis インスタンスへの変更を構成するには、次の例のように、 IBM Cloud CLI または永続性を構成するための API のいずれかを使用する必要があります。
以下の設定を調整する:
- AOFの永続性を有効にするには、
appendonly
を yesに設定する。 - 鍵の期限切れを防ぐため、
maxmemory-policy
が noeviction に設定されていることを確認する。 - バックアップエラーが発生した場合に書き込みを停止するには、
stop-writes-on-bgsave-error
を yes に設定する。
CLI の例
ibmcloud cdb deployment-configuration '<deployment name or CRN>' '{"configuration":{"maxmemory-policy":" noeviction", "appendonly":"yes", "stop-writes-on-bgsave-error":"yes"}}'
API の例
curl -X PATCH 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/configuration/schema' -H "Authorization: Bearer $APIKEY" -H "Content-Type: application/json" -d '{"configuration":{ "maxmemory-policy":""noeviction, "appendonly":"yes", "stop-writes-on-bgsave-error":"yes" } }'