redis 主從復(fù)制配置
本次準(zhǔn)備三臺服務(wù)器:
- 192.168.222.128 A
- 192.168.222.129 B
- 192.168.222.132 C
- 192.168.222.133 D
A 作為master服務(wù)器,B 和 C ,D作為slave服務(wù)器,搭建一主三從復(fù)制結(jié)構(gòu)。首先配置 B ,C和 D 兩臺從服務(wù)器配置。
A、B、C,D 配置文件 redis.conf 共同修改
bind 0.0.0.0
- 需要將 bind ip 地址改為所有可以訪問,要不然slave庫無法連接master庫。
B 和 C 配置文件 redis.conf 修改
slaveof 192.168.222..128 6379
masterauth xxxxxx
replica-read-only yes
- slaveof:master ip 和端口號
- masterauth:master 密碼(如果需要才改)
- replica-read-only:redis 作為從庫是只讀的(默認(rèn)不用改)
配置完成后重啟 4 個(gè) redis 服務(wù),啟動(dòng)順序不用管,就算是先啟動(dòng)slave庫,那么后啟動(dòng)master庫,slave庫也會去連接master庫,然后形成主從關(guān)系。啟動(dòng)成功后使用 redis-cli 命令查看 A、B、C,D 客戶端。
A 客戶端
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:3
slave0:ip=192.168.222.133,port=6379,state=online,offset=673,lag=1
slave1:ip=192.168.222.131,port=6379,state=online,offset=673,lag=1
slave2:ip=192.168.222.132,port=6379,state=online,offset=673,lag=1
master_repl_offset:673
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:672
B,C,D 客戶端
[root@localhost ~]# redis-cli -h 192.168.222.129 -p 6379
192.168.222.129:6379> info replication
# Replication
role:master
connected_slaves:3
slave0:ip=192.168.222.133,port=6379,state=online,offset=715,lag=0
slave1:ip=192.168.222.131,port=6379,state=online,offset=715,lag=0
slave2:ip=192.168.222.132,port=6379,state=online,offset=715,lag=1
master_repl_offset:715
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:714
- master_host 主庫 ip 地址
- master_port 主庫端口號
- master_link_status 是否成功連接主庫
- slave_repl_offset 復(fù)制偏移量
- slave_read_only 從庫只讀
可以看到 A 上面掛著兩個(gè)從庫,B、C ,D的狀態(tài) role:slave 然后 master_link_status:up 證明連接成功。重啟之后 B 和 C,D 就會作為從庫進(jìn)行工作。并且從庫無法進(jìn)行寫入。