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 就会作为从库进行工作。并且从库无法进行写入。