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

推薦する

MySql クライアントが数秒で終了する問題を解決する (my.ini が見つからない)

問題の説明 (環境: windows7、MySql8.0)今日、MySql をインストールした後、M...

MySQL のユーザー権限を照会する方法の概要

MySQLユーザー権限を表示する2つの方法を紹介します1. MySQL grantsコマンドを使用す...

MySQL ストアド プロシージャで if ステートメントを使用する詳細な例

この記事では、例を使用して、MySQL ストアド プロシージャでの if ステートメントの使用方法を...

Docker プライベート サーバー イメージを定期的にクリーンアップする方法

CI を利用してリリース用の Docker イメージをビルドすることで、全員のバージョンリリース効率...

mysql5.7.19 解凍版の詳細なインストール チュートリアル (純粋なクラックされた中国語版 SQLYog を使用)

Mysql5.7.19バージョンは今年リリースされた新しいバージョンです。最近のMySQLのバージ...

Vue はカードフリップカルーセル表示を実装します

Vueカードのフリップカルーセル表示、フリップ時にデータを切り替えながら、参考までに、具体的な内容は...

vue cli で env を使用するガイド

目次序文紹介-公式設定例序文vueCli を使用してプロジェクトを開発したことのある方は、少しがっか...

Nginx ロードバランシングとは何か、そしてそれをどのように設定するか

負荷分散とは負荷分散は主に、専用のハードウェア デバイスまたはソフトウェア アルゴリズムによって実現...

MySql クイック挿入数千万の大規模データの例

データ分析の分野では、データベースは私たちの強力な助けとなります。クエリ時間を受け入れるだけでなく、...

WindowsでMysql5.7.17のインストールと起動に失敗する問題を解決する

マシンに初めて MySQL をインストールします。オペレーティングシステムはwin7ですmysqlの...

フロントエンドブラウザのフォントサイズが12px未満のソリューション

序文最近プロジェクトに取り組んでいたとき、UI デザインのフォント サイズは 10 ピクセルでした。...

HTML フォームタグチュートリアル (5): テキストフィールドタグ

<br />このタグは、さらにテキストを入力できる複数行のテキスト フィールドを作成する...

MySQL データベースの基礎を始めるための一般的なコマンドの概要

この記事では、MySQL データベースの基礎を学ぶためによく使用されるコマンドを例を使って説明します...

HTML でフレームセット タグを使用するチュートリアル

フレームセット ページは通常の Web ページとは多少異なります。依然として <HTML>...

組み込み Linux で QT アプリケーションを再起動する簡単な方法 (QT4.8 qws ベース)

アプリケーション ソフトウェアには通常、次のようなビジネス要件があります。新しいバージョンの APP...