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

推薦する

未来志向の総合的なウェブデザイン:プログレッシブエンハンスメント

<br />原文: プログレッシブエンハンスメントを理解するアーロン・ガスタフソン翻訳:...

Centos7.5 は mysql5.7.24 バイナリ パッケージの展開をインストールします

1. 環境整備:オペレーティング システム: CentOS Linux リリース 7.5.1804 ...

Postman 自動インターフェーステストの実践

目次背景説明GETリクエストの作成事前リクエストスクリプトで署名を作成するスクリプトは環境変数に書き...

Macシステムをインストールした後にVMWareがフルスクリーンで表示できない問題を解決する

システム: VMTOOLs ダウンロード:リンク: https://pan.baidu.com/s/...

突然外部ネットワークからDockerにアクセスできなくなる問題の解決方法

マスターのメソッドによると、原因は sysctl net.ipv4.ip_forward であること...

MySQL でレプリケーション フィルターを動的に変更する方法

MySQLはレプリケーションフィルターを動的に変更します今日遭遇した問題についてお話しします。今日は...

VUE 3 テレポート コンポーネントと使用構文をすぐに使い始める

目次1. テレポートの紹介1.1. 複数のテレポートを使用する2. テレポートを使用する理由3. テ...

IE環境では、divの高さはフォントの高さよりも大きくなければならないと規定されています。

コードをコピーコードは次のとおりです。 <div class="content&qu...

中国語でのNginx設定パラメータの詳細な説明(負荷分散とリバースプロキシ)

PS: 最近、nginx を詳細に紹介している <<High-Performance ...

Win10 での MySQL 8.0 ログインでユーザー 'root'@'localhost' のアクセスが拒否される (パスワード使用: YES) 問題の解決方法

最近、MySQL を学び始めました。インストールはスムーズに進み、インターネット上の既成のチュートリ...

JavaScript BOMの構成と一般的なイベントの詳細な説明

目次1. 部品2. BOMの構成2. ウィンドウオブジェクトの共通イベント1. ウィンドウ読み込みイ...

MySQLで大きなテーブルをエレガントに削除する方法について簡単に説明します

目次1. 切り捨て操作1.1 MySQL truncate はどのような操作を実行しますか? 1.2...

MySQL で行を列に変換したり、列を行に変換したりする詳細な例

mysql 行から列へ、列から行へ難しい文章ではないので、詳しく説明はしません。文章を読むときは、一...

MySQL InnoDB のトランザクション特性を確保するにはどうすればよいですか?

序文「データベース トランザクションの特徴は何ですか?」と尋ねられたら、 ACID 特性である原子性...

IE6 スペースバグ修正方法

コードを見てみましょう:コードをコピーコードは次のとおりです。 < !DOCTYPE html...