redis持続化RDBとAOFの違い
一、redisの二つの持続化方式の紹介
redisでのデータの永続化には、RDBとAOFの2つの方法があり、永続化が構成されていなければ、redisが再起動するとデータが完全に失われるため、redisの永続化機能をオンにしてデータをディスクに保存する必要があり、redisが再起動するとディスクからデータを復元することができる.redisは、RDBの永続化(メモリにReidsのデータベース記録タイミングdumpをディスク上のRDBに永続化する原理)と、AOFの永続化(Reidsの操作ログを追加でファイルに書き込む原理)の2つの方法を提供する.では、この2つの持続化方式にはどのような違いがあるのでしょうか.どうすればいいのでしょうか.以下では、RDBとAOFの2つの持続化方式の違いをそれぞれ紹介し、通常の作業でredisの持続化方式をよりよく選択できるようにします.
二、RDBとAOFの違い
RDB永続化とは、メモリ内のデータセットスナップショットを所定の時間間隔でディスクに書き込むことであり、実際の操作プロセスはforkのサブプロセスであり、まずデータセットを一時ファイルに書き込み、書き込みに成功した後、前のファイルを置き換え、バイナリ圧縮で格納する.
AOFは、サーバが処理した書き込み、削除操作をログ形式で記録することを永続化し、クエリー操作は記録されず、テキスト形式で記録され、ファイルを開いて詳細な操作記録を見ることができる.
三、RDBとAOFの長所と短所
RDBにはどのようなメリットがありますか?
1). この方法を採用すると、Redisデータベース全体に1つのファイルしか含まれません.これはファイルバックアップにとって非常に完璧です.たとえば、最近の24時間のデータを1時間に1回アーカイブするとともに、最近の30日間のデータを毎日アーカイブする予定です.このようなバックアップポリシーにより、システムに災害障害が発生すると、リカバリが容易になります.
2). ディザスタリカバリにとって、RDBは非常に良い選択です.個別のファイルを圧縮して他のストレージメディアに移行するのは簡単です.
3). パフォーマンスの最大化Redisのサービスプロセスでは、永続化が開始されると、forkアウトサブプロセスのみが必要になり、サブプロセスによってこれらの永続化作業が完了するため、サービスプロセスがIO操作を実行することを大幅に回避できます.
4). AOFメカニズムよりもデータセットが大きいとRDBの起動効率が高くなる.
RDBにはどんな劣勢があるのだろうか.
1). データの高可用性、すなわちデータ損失を最大限に回避するために、RDBは良い選択ではありません.システムがタイミング持続化する前にダウンタイムが発生すると、ディスクに書き込む時間がなかったデータが失われるためです.
2). RDBはforkサブプロセスによってデータの永続化作業を支援するため、データセットが大きい場合、サーバ全体が数百ミリ秒、さらには1秒のサービス停止を引き起こす可能性があります.
AOFの強みは何ですか?
1). このメカニズムは、より高いデータセキュリティ、すなわちデータ持続性をもたらすことができる.Redisでは、1秒あたりの同期、変更ごとの同期、および非同期の3つの同期ポリシーが用意されています.実際、1秒あたりの同期も非同期で完了し、その効率も非常に高く、システムにダウンタイムが発生すると、この1秒以内に変更されたデータが失われます.同期を変更するたびに、同期の永続化と見なすことができます.つまり、データの変化が発生するたびに、すぐにディスクに記録されます.この方式は効率的に最も低いことが予想される.同期がないということは、言うまでもなく、みんなが正しく理解できると思います.
2). このメカニズムは、ログファイルの書き込み操作にappendモードを採用しているため、書き込み中にダウンタイムが発生しても、ログファイルにすでに存在するコンテンツを破壊することはありません.しかし、今回の操作でデータの半分を書き込むだけでシステムのクラッシュの問題が発生した場合は、Redisの次の起動前にredis-check-aofツールを使用してデータの一貫性の問題を解決することができます.
3). ログが大きすぎる場合、Redisはrewriteメカニズムを自動的に有効にすることができます.すなわち、Redisはappendモードで古いディスクファイルに変更データを継続的に書き込み、その間に実行された変更コマンドを記録するための新しいファイルを作成します.したがって、rewrite切り替えを行うと、データのセキュリティがより保証されます.
4). AOFには、すべての変更操作を記録するためのフォーマットが明確で分かりやすいログファイルが含まれています.実際には、このファイルを使用してデータの再構築を完了することもできます.
AOFの劣勢はどれらがありますか?
1). 同じ数のデータセットの場合、AOFファイルは通常RDBファイルより大きい.RDBは、大きなデータセットを復元する際の速度がAOFの復元速度よりも速い.
2). 同期ポリシーによっては、AOFの実行効率がRDBよりも遅くなることが多い.要するに、毎秒同期ポリシーの効率は比較的高く、同期無効ポリシーの効率はRDBと同様に効率的である.
両者の選択の基準は、システムがいくつかの性能を犠牲にして、より高いキャッシュ整合性(aof)を交換したいのか、それとも書き込み操作が頻繁な場合、バックアップを有効にしないでより高い性能を交換したいのかを見て、saveを手動で実行するときにバックアップ(rdb)を行うことです.rdbこれはもっと最終的な一致性の意味があります.
四、常用配置
RDB永続化構成
redisはデータセットのスナップショットdumpをdumpにします.rdbファイルにあります.また、redisサーバdumpのスナップショットの頻度をプロファイルで変更する、6379を開くこともできる.confファイルの後、saveを検索すると、次の構成情報が表示されます.
AOF持続化構成
redisのプロファイルには、次の3つの同期方法があります.
redisでのデータの永続化には、RDBとAOFの2つの方法があり、永続化が構成されていなければ、redisが再起動するとデータが完全に失われるため、redisの永続化機能をオンにしてデータをディスクに保存する必要があり、redisが再起動するとディスクからデータを復元することができる.redisは、RDBの永続化(メモリにReidsのデータベース記録タイミングdumpをディスク上のRDBに永続化する原理)と、AOFの永続化(Reidsの操作ログを追加でファイルに書き込む原理)の2つの方法を提供する.では、この2つの持続化方式にはどのような違いがあるのでしょうか.どうすればいいのでしょうか.以下では、RDBとAOFの2つの持続化方式の違いをそれぞれ紹介し、通常の作業でredisの持続化方式をよりよく選択できるようにします.
二、RDBとAOFの違い
RDB永続化とは、メモリ内のデータセットスナップショットを所定の時間間隔でディスクに書き込むことであり、実際の操作プロセスはforkのサブプロセスであり、まずデータセットを一時ファイルに書き込み、書き込みに成功した後、前のファイルを置き換え、バイナリ圧縮で格納する.
AOFは、サーバが処理した書き込み、削除操作をログ形式で記録することを永続化し、クエリー操作は記録されず、テキスト形式で記録され、ファイルを開いて詳細な操作記録を見ることができる.
三、RDBとAOFの長所と短所
RDBにはどのようなメリットがありますか?
1). この方法を採用すると、Redisデータベース全体に1つのファイルしか含まれません.これはファイルバックアップにとって非常に完璧です.たとえば、最近の24時間のデータを1時間に1回アーカイブするとともに、最近の30日間のデータを毎日アーカイブする予定です.このようなバックアップポリシーにより、システムに災害障害が発生すると、リカバリが容易になります.
2). ディザスタリカバリにとって、RDBは非常に良い選択です.個別のファイルを圧縮して他のストレージメディアに移行するのは簡単です.
3). パフォーマンスの最大化Redisのサービスプロセスでは、永続化が開始されると、forkアウトサブプロセスのみが必要になり、サブプロセスによってこれらの永続化作業が完了するため、サービスプロセスがIO操作を実行することを大幅に回避できます.
4). AOFメカニズムよりもデータセットが大きいとRDBの起動効率が高くなる.
RDBにはどんな劣勢があるのだろうか.
1). データの高可用性、すなわちデータ損失を最大限に回避するために、RDBは良い選択ではありません.システムがタイミング持続化する前にダウンタイムが発生すると、ディスクに書き込む時間がなかったデータが失われるためです.
2). RDBはforkサブプロセスによってデータの永続化作業を支援するため、データセットが大きい場合、サーバ全体が数百ミリ秒、さらには1秒のサービス停止を引き起こす可能性があります.
AOFの強みは何ですか?
1). このメカニズムは、より高いデータセキュリティ、すなわちデータ持続性をもたらすことができる.Redisでは、1秒あたりの同期、変更ごとの同期、および非同期の3つの同期ポリシーが用意されています.実際、1秒あたりの同期も非同期で完了し、その効率も非常に高く、システムにダウンタイムが発生すると、この1秒以内に変更されたデータが失われます.同期を変更するたびに、同期の永続化と見なすことができます.つまり、データの変化が発生するたびに、すぐにディスクに記録されます.この方式は効率的に最も低いことが予想される.同期がないということは、言うまでもなく、みんなが正しく理解できると思います.
2). このメカニズムは、ログファイルの書き込み操作にappendモードを採用しているため、書き込み中にダウンタイムが発生しても、ログファイルにすでに存在するコンテンツを破壊することはありません.しかし、今回の操作でデータの半分を書き込むだけでシステムのクラッシュの問題が発生した場合は、Redisの次の起動前にredis-check-aofツールを使用してデータの一貫性の問題を解決することができます.
3). ログが大きすぎる場合、Redisはrewriteメカニズムを自動的に有効にすることができます.すなわち、Redisはappendモードで古いディスクファイルに変更データを継続的に書き込み、その間に実行された変更コマンドを記録するための新しいファイルを作成します.したがって、rewrite切り替えを行うと、データのセキュリティがより保証されます.
4). AOFには、すべての変更操作を記録するためのフォーマットが明確で分かりやすいログファイルが含まれています.実際には、このファイルを使用してデータの再構築を完了することもできます.
AOFの劣勢はどれらがありますか?
1). 同じ数のデータセットの場合、AOFファイルは通常RDBファイルより大きい.RDBは、大きなデータセットを復元する際の速度がAOFの復元速度よりも速い.
2). 同期ポリシーによっては、AOFの実行効率がRDBよりも遅くなることが多い.要するに、毎秒同期ポリシーの効率は比較的高く、同期無効ポリシーの効率はRDBと同様に効率的である.
両者の選択の基準は、システムがいくつかの性能を犠牲にして、より高いキャッシュ整合性(aof)を交換したいのか、それとも書き込み操作が頻繁な場合、バックアップを有効にしないでより高い性能を交換したいのかを見て、saveを手動で実行するときにバックアップ(rdb)を行うことです.rdbこれはもっと最終的な一致性の意味があります.
四、常用配置
RDB永続化構成
redisはデータセットのスナップショットdumpをdumpにします.rdbファイルにあります.また、redisサーバdumpのスナップショットの頻度をプロファイルで変更する、6379を開くこともできる.confファイルの後、saveを検索すると、次の構成情報が表示されます.
save 900 1 # 900 (15 ) , 1 key , dump 。
save 300 10 # 300 (5 ) , 10 key , dump 。
save 60 10000 # 60 (1 ) , 10000 key , dump 。
AOF持続化構成
redisのプロファイルには、次の3つの同期方法があります.
appendfsync always # AOF 。
appendfsync everysec # , AOF 。
appendfsync no # 。 。