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

推薦する

JavaScriptオブジェクト指向について学ぼう

目次JavaScript プロトタイプチェーンオブジェクトプロトタイプトップレベルのプロトタイプOb...

CSS 円形ホローイングの実装(クーポン背景画像)

この記事では主に、クーポンの背景画像などでよく使われる CSS 円形ホローイングについて紹介し、皆さ...

React 並行関数エクスペリエンス (フロントエンド並行モード)

React は、開発者が Web およびモバイルベースのアプリケーションを作成するために使用するオ...

JavaScript 高度なカスタム例外

目次1. コンセプト1.1 エラーと例外とは何ですか? 1.2 異常の分類2. 例外処理2.1try...

ネイティブJSで実装されたギャラリー機能

目次最初2番目Native Js はギャラリー機能を実装します。画像をクリックすると、対応する拡大画...

Ubuntu 19にTheanoをインストールする際の問題を解決する

解決: pythearn2 パッケージをダウンロードしたディレクトリで、setup.py ファイルを...

ReactにおけるRefの相互利用の詳細な説明

目次1. まずRefとは何かを説明しましょう2. フックでのrefの使用1. HTMLDomフックで...

HTMLタグオーバーフロー処理アプリケーション

CSSを使用してスクロールバーを変更する1.コンテンツがオーバーフローした場合のオーバーフロー設定水...

全体的なユーザーエクスペリエンスを確保する方法

関連記事:ユーザーエクスペリエンスのためのウェブサイトデザイン今朝、GMail がまた不調になり、接...

MySQLの文字セット設定を5分で理解しましょう

目次1. コンテンツの概要2. 文字セットと文字順序の概念と関係3. MySQL でサポートされてい...

Ubuntu での mysql のインストールと使用 (一般版)

Ubuntu のバージョンに関係なく、MySQL データベースのインストールは基本的に同じです。具...

js を使ってシンプルな虫眼鏡効果を実現

この記事の例では、参考までに簡単な虫眼鏡効果を実現するためのjsの具体的なコードを共有しています。具...

nginx ログを elasticsearch にインポートする方法の例

nginx ログは filebeat によって収集され、logstash に渡され、logstash...

仮想マシンに Windows Server 2008 オペレーティング システムをインストールする

この記事では、Windows Server オペレーティング システムのインストールと企業でのそのア...

Vue echarts は水平棒グラフを実現します

この記事では、水平棒グラフを実現するためのvue echartsの具体的なコードを参考までに共有しま...