redis 主从复制配置
本次准备三台服务器:
- 192.168.222.128 A
- 192.168.222.129 B
- 192.168.222.132 C
- 192.168.222.133 D
A 作为master服务器,B 和 C ,D作为slave服务器,搭建一主三从复制结构。首先配置 B ,C和 D 两台从服务器配置。
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 作为从库是只读的(默认不用改)
配置完成后重启 4 个 redis 服务,启动顺序不用管,就算是先启动slave库,那么后启动master库,slave库也会去连接master库,然后形成主从关系。启动成功后使用 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 复制偏移量
- slave_read_only 从库只读
可以看到 A 上面挂着两个从库,B、C ,D的状态 role:slave 然后 master_link_status:up 证明连接成功。重启之后 B 和 C,D 就会作为从库进行工作。并且从库无法进行写入。