Linux での Redis の永続性、マスター スレーブ同期、Sentinel の詳細な説明

Linux での Redis の永続性、マスター スレーブ同期、Sentinel の詳細な説明

1.0 Redis の永続性

Redis はメモリ内データベースです。サーバー プロセスが終了すると、データベース データは失われます。この問題を解決するために、Redis はメモリ内のデータをディスクに保存してデータ損失を回避する 2 つの永続化ソリューションを提供します。

1|1RDB 永続性

Redis は、指定された時間間隔内のデータセットのポイントインタイムスナップショットを生成する RDB 永続化機能を提供します。この機能により、メモリ内の Redis の状態をハードディスクに保存できます。RDB 永続化によって生成される RDB ファイルは圧縮されたバイナリファイルです。このファイルはハードディスクに保存されます。Redis はこのファイルを通じて、その時点のデータベース状態を復元できます。

手動で実行できます。

redis.conf で設定して定期的に実行することもできます。

利点: 高速、バックアップに適しており、マスタースレーブレプリケーションはRDB永続機能に基づいています

rdbはredisのsaveコマンドを使用してrdbをトリガーします

rdb 構成パラメータ:

ポート 6379 
悪魔化する はい 
pidファイル /data/6379/redis.pid
ログレベル通知 
ログファイル "/data/6379/redis.log"
ディレクトリ /data/6379 
保護モード はい 
dbファイル名 dbmp.rdb
900 1 を節約
300 10 を節約 
60 10000を節約

900秒ごとに、永続化される操作があります

1 回の変更操作で 900 秒節約

10回の操作で300秒節約

60秒節約 10000回の操作

2. rdb永続化をトリガーするか、コマンドを手動で保存してdump.rdb永続化ファイルを生成します。

3. Redisを再起動すると、データは失われなくなります

4. RDB データ ファイルはバイナリ ファイルであり、手動で読み取ることはできません。

1|2 Redis 永続性 AOF

AOF (追加専用ログファイル)

サーバーが実行したすべての変更操作コマンド(set delなど)を記録し、サーバーの起動時にこれらのコマンドを再実行してデータセットを復元します。

AOF ファイル内のすべてのコマンドは Redis プロトコルの形式で保存され、新しいコマンドはファイルの末尾に追加されます。

利点: 最大限のプログラムにより、データが失われないことが保証されます

デメリット: ログレコードが非常に大きい

構成

1. 設定ファイルにaofパラメータを追加します

aof 機能を有効にするには、redis-6379.conf にパラメータを追加します。

追加のみ はい
毎秒追加同期

2. Redisデータベースを再起動し、aof関数をロードします。

3. Redisデータディレクトリ/data/6379/がaofファイルを生成しているかどうかを確認する

[root@web02 6379]# ls
appendonly.aof dbmp.rdb redis.log

4. redis-cliにログインし、データを書き込み、AOFファイル情報をリアルタイムで監視する

tail -f 追加のみ.aof

5. 新しいキーを設定し、AOF情報をチェックし、Redisを閉じてデータが永続的かどうかを確認します。

redis-cli -a redhat シャットダウン
redis サーバー /etc/redis.conf
redis-cli -a レッドハット

Redisを再起動せずに、rdbデータをaofデータに切り替える

1. RDB永続性をサポートするようにRedisを構成する

2. Redisクライアントを起動し、コマンドで一時的にaofモードに切り替えます。

127.0.0.1:6379> CONFIG 追加のみを yes に設定
わかりました
127.0.0.1:6379> CONFIG SET 保存 ""
わかりました

3. データ永続モードがrdbかaofかを確認し、appendonly.aofファイルをチェックして、データの変更をチェックします。

tail -f 追加のみ.aof

4. この時点では、AOFはまだ永続的に有効になっていません。パラメータを設定ファイルに書き込みます。

redis-6379.confを編集し、次のパラメータを追加します。

追加のみ はい
毎秒追加同期

2|0 マスタースレーブ同期

Redis マスタースレーブ同期の実装

1. 3つのRedisデータベースを用意します。Redisは複数のインスタンスをサポートします。

3つの設定ファイル、ポートのみ異なる

3つの設定ファイルにマスタースレーブ同期パラメータを追加します

redis-6379.conf

ポート 6379 
悪魔化する はい 
pidファイル /data/6379/redis.pid
ログレベル通知 
ログファイル "/data/6379/redis.log"
ディレクトリ /data/6379 
保護モード はい 
dbファイル名 dbmp.rdb
900 1 を節約
300 10 を節約 
60 10000を節約

redis-6380.conf

ポート 6380 
悪魔化する はい 
pidファイル /data/6380/redis.pid
ログレベル通知 
ログファイル "/data/6380/redis.log"
ディレクトリ /data/6380 
保護モード はい 
dbファイル名 dbmp.rdb
900 1 を節約
300 10 を節約 
60 10000を節約
スレーブ 127.0.0.1 6379

redis-6381.conf

ポート 6381 
悪魔化する はい 
pidファイル /data/6381/redis.pid
ログレベル通知 
ログファイル "/data/6381/redis.log"
ディレクトリ /data/6381 
保護モード はい 
dbファイル名 dbmp.rdb
900 1 を節約
300 10 を節約 
60 10000を節約
スレーブ 127.0.0.1 6379

2. 3つのデータベースインスタンスを起動し、マスタースレーブ同期IDを確認する

redis-cli -p 6379 レプリケーション情報 
redis-cli -p 6380 レプリケーション情報 
redis-cli -p 6381 レプリ​​ケーション情報

3: 以下の情報を確認し、同期されているか確認してください

4. メインデータベースがクラッシュしたらどうなりますか? ?

解決:

1. マスターとスレーブのIDを手動で切り替え、新しいマスターデータベースを選択します。

1. 6379メインライブラリを削除する
2. 6380でスレーブIDを無効にする
誰の奴隷でもない
3. 6381に新しい所有者IDを付与する
サルベオブ 127.0.0.1 6380
4. 変更が完了したら、設定ファイルを変更して永続化する必要があります。

2. Sentinelを使用して新しい所有者を自動的に選出する

2|1レディスセンチネル:

センチネル機能:

Sentinel は、マスター スレーブ アーキテクチャが正常かどうかを検出します。マスター データベースに障害が発生した場合、Sentinel は redis.conf を自動的に変更して、slaveof ディレクティブを追加/削除します。

Redis Sentinel のインストール構成:

1. マスター1つとスレーブ2つの計3つのRedisインスタンスを準備する

詳細については、上記のRedisマスタースレーブ構成を参照してください。

2. 3つのデータベースインスタンスを準備して起動する

redis サーバー redis-6379.conf
redis サーバー redis-6380.conf
redis サーバー redis-6381.conf

3. 3つのセンチネルを準備し、マスタースレーブアーキテクチャの監視を開始する

3つの設定ファイル、センチネルファイルを準備する

redis-26379.conf

ポート 26379 
ディレクトリ /var/redis/data/
ログファイル "26379.log"
センチネルモニター sbmaster 127.0.0.1 6379 2
Sentinel のミリ秒後のダウン QSmaster 30000
センチネル パラレル同期 SBマスター 1
センチネルフェイルオーバータイムアウト SBマスター 180000
悪魔化する はい

redis-26380.conf

ポート 26380 
ディレクトリ /var/redis/data/
ログファイル "26380.log"
センチネルモニター sbmaster 127.0.0.1 6379 2
Sentinel のミリ秒後のダウン QSmaster 30000
センチネル パラレル同期 SBマスター 1
センチネルフェイルオーバータイムアウト SBマスター 180000
悪魔化する はい

redis-26381.conf

ポート 26381 
ディレクトリ /var/redis/data/
ログファイル "26381.log"
センチネルモニター sbmaster 127.0.0.1 6379 2
センチネル ダウン後 ミリ秒 sbmaster 30000
センチネル パラレル同期 SBマスター 1
センチネルフェイルオーバータイムアウト SBマスター 180000
悪魔化する はい

4. 3つのセンチネルインスタンスを起動する

redis-sentinel redis-26380.conf 
redis-sentinel redis-26379.conf 
redis-sentinel redis-26381.conf

センチネルの状態が正常かどうかを確認します

以下の情報が見つかり、それが以下の内容と一致している場合にのみ正常です。

redis-cli -p 26379 情報センチネル

# センチネル
センチネルマスターズ:1
センチネル_傾斜:0
センチネル実行スクリプト:0
センチネルスクリプトキューの長さ:0
センチネルシミュレート失敗フラグ:0
マスター0:名前=sbmaster、ステータス=ok、アドレス=127.0.0.1:6380、スレーブ=2、センチネル=3

5. Sentinelのマスターとスレーブを自動的に切り替える

1. 6379 個の Redis データベースを削除する

2. 6380 と 6381 の ID 情報を確認し、マスターとスレーブの間で自動的に切り替わるかどうかを確認します (切り替えには 30 秒かかります)。

3. 6379 によってハングアップしたデータベースを手動で起動し、Sentinel によって情報のマスター スレーブ クラスターに追加されるかどうかを確認します。

知らせ! !失敗した場合は、すべての Sentinel 構成ファイルを削除して最初からやり直す必要があります。注意! !失敗した場合は、すべての Sentinel 構成ファイルを削除して最初からやり直す必要があります。注意! !失敗した場合は、すべての Sentinel 構成ファイルを削除して最初からやり直す必要があります。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • Redis が高速な理由とは? 高可用性と永続性を実現する方法
  • Docker での Redis の永続ストレージの詳細な説明
  • Redis の 2 つの永続化ソリューションの詳細な説明
  • Redisメモリデータの永続性に関する簡単な説明
  • Redis の 2 つの永続化ソリューション、RDB と AOF の詳細な説明
  • Redis の永続性の詳細な説明

<<:  Mysql SQL ステートメントのコメント

>>:  Vueフレームワークで習得しなければならない重要な知識を学びます

推薦する

WeChatアプレットは固定ヘッダーとリストテーブルコンポーネントを実装します

目次必要:機能ポイントレンダリング実装のアイデア具体的なコード(react\taro3.0)特定のコ...

Javascript のスコープとクロージャの詳細

目次1. 範囲2. スコープチェーン3. 語彙の範囲5. 閉鎖の適用6. クロージャの欠陥7. 閉会...

Webpack プロジェクトでローダー プラグインをデバッグする方法

最近、webpackの使い方を学んでいたときに、webpack-replace-loaderの設定正...

MySQL 面接でよく聞かれる質問への回答

序文:さまざまな技術職の面接では、MySQL 関連の質問がよくされるようです。開発職の面接でも運用職...

Docker で hyperf を開発する完全な使用例の詳細な説明

ハイパーフ公式サイトHyperf 公式ドキュメントのインストール1. Dockerの使用docker...

ウェブページを自動更新するための 3 つのコード

実際、この効果を実現するのは非常に簡単で、この効果は特殊効果と呼ぶことすらできません。次のコードを ...

VueはExcelテーブルをインポートし、インポートに失敗したデータを自動的にダウンロードします。

次のような要件があります: インポート ボタン。ボタンをクリックして Excel テーブルをインポー...

Linux statコマンドの使用

1. コマンドの紹介stat コマンドは、ファイルまたはファイル システムに関する詳細情報を表示する...

Reactはconetxtを通じてマルチコンポーネント値転送関数を実装します

この関数の効果はvue的provide/injectに似ています。 contextを通じて反応できる...

Tomcat は親の委任メカニズムを破壊して Web アプリケーションの分離を実現します。

目次Tomcat クラスローダー階層WebAppクラスローダー共有クラスローダーカタリナクラスローダ...

Apache の一般的な仮想ホスト設定方法の分析

1. Apacheサーバーのインストールと設定yum インストール httpd -y systemc...

ウェブカラーのコントラストと調和のテクニックの共有

色のコントラストと調和対照的な状況では、色の相互作用は単一の色によって与えられる感覚とは異なります。...

Centos7 サーバーで jar パッケージ プロジェクトを開始する最良の方法

序文Linux 上で jar パッケージを実行する方法は誰もが知っています。なぜ別々に話したいのでし...

React NativeとiOSの相互作用の詳細な説明

目次前提条件RNはiOSに価値を渡す方法1: ネイティブに値を通常通り渡す方法2: コールバック関数...

JavaScript 配列の include と Reduce の基本的な使用法

目次序文配列.プロトタイプ.includes文法パラメータ戻り値例配列プロトタイプの削減文法パラメー...