Redis永続化方式-RDBとAOFの構成とrewriteメカニズム
2630 ワード
冒頭
本論文では,Redisデータの永続化−RDBとAOFの簡単な紹介と密接に関連し,redisデータの永続化がどのように構成されるか,および前の論文に存在する問題について主に紹介する.
本文
redisのコア構成構成はredisである.conf、本稿はredis-4.0.6バージョンに基づいて説明します.
RDBデータ永続化構成
デフォルトでは、redisのRDBデータの永続化はオンです.redisでconfには、次のデフォルト構成があります.
構成の説明:
例えばsave 60 10000は、60 s以内に10000 keyが変更された場合、スナップショットを保存し、新しいスナップショットを生成するたびに、以前の古いスナップショットを上書きすることを示す.
補足: redis-cli SHUTDOWNコマンドによりredisを停止し、redisは終了するとメモリ内のデータを直ちに完全なrdbスナップショット を生成する.は、saveまたはbgsaveコマンドを手動で呼び出し、rdbスナップショット生成 を同期または非同期で実行することができる.上の3行の配置注釈を削除するか、RBD持続化 を閉じることができる.
AOFデータ持続化構成
AOFは永続化され、デフォルトではオフになっています.開くconf、次の構成を見つけます.
AOF永続化をオンにすると、redisは書き込みコマンドを受信するたびに、オペレーティングシステムcacheに書き込み、一定時間おきにfsyncを書き込みます.これは、上記のappendfsync構成に対応します.
fsyncの3つのポリシー
AOFのrewriteメカニズムについて
redisにはキャッシュ淘汰ポリシーがあるため、データが自動的に期限切れになり、ユーザーによって自発的に削除される可能性があり、redisのデータが少なくなる可能性があります.
しかし、データは削除されたものの、その対応する書き込みログはまだAOFログファイルの中にあり、AOFログファイルが一つなので、このファイルはどんどん大きくなっていきます~~
だからrewriteがこの問題を解決するために、AOFは自動的にバックグラウンドで一定時間おきにrewrite操作をします.
例えば、ログには100 wのデータが格納されている書き込みログがあり、redisメモリのデータは10 wしかありません.
AOFは、現在のメモリの10 wのデータに基づいて新しいログファイルを構築し、以前の古いログファイルを上書きします.
補足: redis 2.4以降、自動的にrewrite操作 が行う.はredisにあります.confでは、rewriteポリシー を構成することができるもしredisがAOFファイルを書き込む時、機械がダウンタイムしてAOFファイルが破損する可能性がある場合、redis-check-aof--fixコマンドで破損したAOFファイル を修復することができる.
rewriteプロセス redis forkサブプロセス サブプロセスは、現在のメモリのデータに基づいて、新しい一時的なAOFファイルへのログの書き込みを開始する . redisメインプロセスは、クライアントの新しい書き込み操作を受信すると、新しいログをメモリに書き込み、古いAOFファイル に書き込む.サブプロセスが新しいログファイルを書き終えた後、redisメインプロセスはメモリの新しいログを新しいAOFファイルの に再追加する.古いログファイル を新しいログファイルで置き換える
その他 AOFとRDBの両方がオープンしている場合、redisが再起動するときは、データが比較的完全な であるため、AOFによるデータ復旧が優先される. RDBスナップショットを生成するとき、redisはAOF rewrite を実行しない
まとめ
実践は真理を検証する唯一の基準であり、実践に着手してこそ、redisがどのようにデータ回復をしたのかを本当に体得することができる.また、rdbスナップショットファイルとaofログファイルを手帳で開き、中に何が保存されているのかを見ることもできる.
本論文では,Redisデータの永続化−RDBとAOFの簡単な紹介と密接に関連し,redisデータの永続化がどのように構成されるか,および前の論文に存在する問題について主に紹介する.
本文
redisのコア構成構成はredisである.conf、本稿はredis-4.0.6バージョンに基づいて説明します.
RDBデータ永続化構成
デフォルトでは、redisのRDBデータの永続化はオンです.redisでconfには、次のデフォルト構成があります.
save 900 1
save 300 10
save 60 10000
# ( ), :
# save
構成の説明:
例えばsave 60 10000は、60 s以内に10000 keyが変更された場合、スナップショットを保存し、新しいスナップショットを生成するたびに、以前の古いスナップショットを上書きすることを示す.
補足:
AOFデータ持続化構成
AOFは永続化され、デフォルトではオフになっています.開くconf、次の構成を見つけます.
appendonly no # yes AOF
appendfilename "appendonly.aof" # aof
# appendfsync always
appendfsync everysec #
# appendfsync no
AOF永続化をオンにすると、redisは書き込みコマンドを受信するたびに、オペレーティングシステムcacheに書き込み、一定時間おきにfsyncを書き込みます.これは、上記のappendfsync構成に対応します.
fsyncの3つのポリシー
appendfsync always : fsync;
appendfsync everysec: fsync;
appendfsync no : fsync,
AOFのrewriteメカニズムについて
redisにはキャッシュ淘汰ポリシーがあるため、データが自動的に期限切れになり、ユーザーによって自発的に削除される可能性があり、redisのデータが少なくなる可能性があります.
しかし、データは削除されたものの、その対応する書き込みログはまだAOFログファイルの中にあり、AOFログファイルが一つなので、このファイルはどんどん大きくなっていきます~~
だからrewriteがこの問題を解決するために、AOFは自動的にバックグラウンドで一定時間おきにrewrite操作をします.
例えば、ログには100 wのデータが格納されている書き込みログがあり、redisメモリのデータは10 wしかありません.
AOFは、現在のメモリの10 wのデータに基づいて新しいログファイルを構築し、以前の古いログファイルを上書きします.
補足:
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
#
rewrite , 128 MB
100%( ), 300MB
64 MB( ) , 64 MB, rewrite
rewriteプロセス
その他
まとめ
実践は真理を検証する唯一の基準であり、実践に着手してこそ、redisがどのようにデータ回復をしたのかを本当に体得することができる.また、rdbスナップショットファイルとaofログファイルを手帳で開き、中に何が保存されているのかを見ることもできる.