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フレームワークで習得しなければならない重要な知識を学びます

推薦する

乱数、文字列、日付、検証コード、UUIDを生成するMySQLメソッド

目次乱数を生成する0から1までの乱数を生成する指定された範囲内で乱数を生成します6桁のモバイル認証コ...

面接の質問: 3 行 3 列のレイアウト、表は結合され、ネストされた表は許可されません

面接の質問で、3 行 3 列のレイアウトが求められます。1 行目の 2 番目の列と 2 行目の 2 ...

Vueは指定された日付間のカウントダウンを実装します

この記事では、指定された日付間のカウントダウンを実装するためのVueの具体的なコードを例として紹介し...

Kylin 4.0.2 (Ubuntu) でブート パーティションを拡張するプロセスの紹介

目次序文1. 新しいパーティションを準備する2. ブートパーティションをコピーする3. fstabフ...

MySQLデータベースに画像を保存するいくつかの方法

通常、ユーザーがアップロードした写真はデータベースに保存する必要があります。一般的に、解決策は 2 ...

CentOS7で新しいデータディスクをマウントするための完全な手順

序文新しい VPS を購入しました。新しい VPS のデータ ディスクはデフォルトではシステムにマウ...

JS で美しい条件式を書く方法についての簡単な説明

目次複数の条件文複数属性オブジェクトスイッチステートメントを置き換えるデフォルトパラメータとデストラ...

Vueパンくずコンポーネントのカプセル化方法

Vueはパンくずコンポーネントをカプセル化して参照します。具体的な内容は次のとおりです。効果を達成す...

Intelli Idea で Tomcat 設定が見つからない問題の解決方法

2日前に新しい会社に入社しました。その会社ではIntelli Ideaを使っています。Eclipse...

Windows Server 2016 で Flash を有効にする方法

最近、VMware Horizo​​n を導入してテストしましたが、そのコンソールにはデフォルトで ...

Element-UIの10の驚くべきトリックのまとめ

目次el-scrollbar スクロールバーel-uploadはクリックをシミュレートしますel-s...

HTML コードを書くための 30 のヒント

1. HTMLタグは常に閉じる前のページのソース コードでは、次のような記述がよく見られます。 &l...

CocosCreatorでゲームコントローラーを使用する方法

目次1. シーンレイアウト2. ハンドルリスナーを追加する1. イベントの変更を監視する2. 座標設...

React リストバーとショッピングカートコンポーネントの使用の詳細な説明

この記事では、Reactリストバーとショッピングカートコンポーネントの具体的なコードを参考までに紹介...