1つの基本原則
を開始slave node
すると、にPSYNC
コマンドが送信されmaster node
ます。
これがある場合slave node
、再接続master node
、それmaster node
だけになり复制给slave部分缺少的数据
、それがある場合にそうでない場合は、slave node
マスターノードへの最初の接続は、一旦トリガされますfull resynchronization
。
最初にfull resynchronization
、1つ,master
が開始され后台线程
、コピーRDB快照文件
が生成され、クライアントから受信したすべてのものも含まれ写命令缓存在内存中
ます。RDBファイルが生成された後、master
RDBは、发送给slave
第1のスレーブによって書き込まれる本地磁盘
、そして次にから本地磁盘加载到内存中
。次に、マスターはメモリ写命令
にキャッシュされたものをスレーブに送信し、スレーブもデータを同期します。
スレーブノードでマスターノードとのネットワーク障害が発生して切断された場合、スレーブノードは自動的に再接続します。再接続するスレーブノードが複数あることをマスターが検出した場合、マスターはrdb保存操作のみを開始して、データのコピーをすべてのスレーブノードに提供します。
2アップロードを再開します
redis 2.8以降、マスタースレーブレプリケーションがサポートされてい断点续传
ます。マスタースレーブレプリケーションプロセス中にネットワーク接続が切断された場合接着上次复制的地方
、最初からコピーする代わりにコピーを続行できます。
マスタノードは、メモリ内の一般的なものとなりbacklog
、マスタとスレーブ一保存され、replica offset
そしていずれかをmaster id
、オフセットバックログに格納されます。マスターとスレーブ間のネットワーク接続が切断された場合、スレーブはマスターをフォローさせます上次的replica offset开始继续复制
。
ただし、対応するオフセットが見つからない場合は、1回実行されresynchronization
ます。
3ディスクレスコピー
マスターは、ディスクをローカルにランディングする代わりに、メモリにRDBを直接作成し、それをスレーブに送信します。
repl-diskless-sync
コピー
repl-diskless-sync-delay
、さらに多くのスレーブが再接続するのを待つ必要があるため、コピーを開始するまで一定の時間待ちます。
4読み取りと書き込みの分離
読み取りを増やして書き込みを減らし、ユーザーのコスト削減を最大化するビジネスシナリオに対応するために、Redisは読み取りと書き込みの分離を使用して、透過的で可用性が高く、パフォーマンスが高く、柔軟性の高い読み取り/書き込み分離サービスをユーザーに提供できます。
5マスタースレーブレプリケーション
5.1リソース情報
サーバ | IPアドレス |
---|---|
主人 | 192.168.51.4 |
slave1 | 192.168.51.5 |
slave2 | 192.168.51.6 |
5.2スレーブマシンの構成
3台のマシンすべてがredisをインストールするように構成されています。具体的なインストール情報については、ブログ投稿、Redisのインストールと構成、および一般的なコマンドを確認してください。
2台のスレーブマシンの構成は同じであり、マスターマシンに追加の構成は必要ありません。
5.2.1構成ファイルを変更する
[root@localhost init.d]# cd /usr/local/redis
[root@localhost redis]# vi 6379.conf
# replicaof <masterip> <masterport>
replicaof 192.168.51.4 6379
# masterauth <master-password>
masterauth auskat
# administrative / dangerous commands.
replica-read-only yes
- Replicaof 192.168.51.46379マスターのIPとポート番号を構成します
- masterauthauskatはマスターのパスワードを設定します
- レプリカ読み取り専用はいデフォルトのスレーブノードは読み取り専用モードです
5.2.2サービスを再開する
[root@localhost redis]# /etc/init.d/redis_init_script stop
[root@localhost redis]# /etc/init.d/redis_init_script start
5.3機能テスト
5.3.1マスターの表示
[root@localhost ~]# redis-cli -a auskat
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.51.5,port=6379,state=online,offset=1774,lag=1
slave1:ip=192.168.51.6,port=6379,state=online,offset=1774,lag=1
master_replid:89019a6d7bb98860f7d727d8361e778a6cad3e92
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1774
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1774
127.0.0.1:6379> set aaa aaa
5.3.2スレーブ1を表示
[root@localhost redis]# redis-cli
127.0.0.1:6379> auth auskat
OK
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.51.4
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:42
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:89019a6d7bb98860f7d727d8361e778a6cad3e92
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:42
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:42
127.0.0.1:6379> get aaa
"aaa"
127.0.0.1:6379> set abc 123
(error) READONLY You can't write against a read only replica.
5.3.3スレーブ2を表示
[root@localhost redis]# redis-cli
127.0.0.1:6379> auth auskat
OK
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.51.4
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:1760
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:89019a6d7bb98860f7d727d8361e778a6cad3e92
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1760
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1663
repl_backlog_histlen:98
127.0.0.1:6379> get aaa
"aaa"
127.0.0.1:6379> set abc 123
(error) READONLY You can't write against a read only replica.
6関連情報
- ブログ投稿は簡単ではありません、注意と賞賛に一生懸命働いたすべての人、ありがとう