1 案例1:配置redis主从复制
1.1 问题
具体要求如下:
将主机192.168.4.51作为主库
将主机192.168.4.52作为从库
测试配置
- 1
- 2
- 3
- 4
1.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:配置redis主从复制
1) 配置主从,4.51为主,4.52为从
若主机做过redis集群,需要在配置文件里面把开启集群,存储集群信息的配置文件都关闭,新主机则不用,这里用之前的redis集群做主从,需要还原redis服务器,4.51和4.52都需要还原(以4.51为例)
[root@redisA ~]# redis-cli -c -h 192.168.4.51 -p 6351 shutdown
//先关闭redis集群
[root@redisA ~]# vim /etc/redis/6379.conf
bind 192.168.4.51
port 6379
# cluster-enabled yes
# cluster-config-file nodes-6351.conf
[root@redisA ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@redisA ~]# ss -antlp | grep 6379
LISTEN 0 511 192.168.4.51:6379 *:* users:(("redis-server",pid=22274,fd=6))
[root@redisA ~]# redis-cli -h 192.168.4.51
192.168.4.51:6379> info replication //查看主从配置信息
# Replication
role:master //默认是master 服务器
connected_slaves:0
master_replid:eaa14478158a71c41f947eaea036658c2087e8f2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
192.168.4.51:6379>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
2)配置从库192.168.4.52/24
192.168.4.52:6379> SLAVEOF 192.168.4.51 6379 //把52配置为51的从库
OK
- 1
- 2
从库查看
192.168.4.52:6379> INFO replication
# Replication
role:slave
master_host:192.168.4.51 //主库为4.51
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
3)主库查看
[root@redisA ~]# redis-cli -h 192.168.4.51
192.168.4.51:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.4.52,port=6379,state=online,offset=14,lag=1 //从库为4.52
master_replid:db7932eb0ea4302bddbebd395efa174fb079319f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
192.168.4.51:6379>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
4)反客为主,主库宕机后,手动将从库设置为主库
[root@redisA ~]# redis-cli -h 192.168.4.51 shutdown //关闭主库
192.168.4.52:6379> SLAVEOF no one //手动设为主库
OK
192.168.4.52:6379> INFO replication
# Replication
role:master
connected_slaves:0
master_replid:00e35c62d2b673ec48d3c8c7d9c7ea3366eac33a
master_replid2:db7932eb0ea4302bddbebd395efa174fb079319f
master_repl_offset:420
second_repl_offset:421
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:420
192.168.4.52:6379>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
5)哨兵模式
主库宕机后,从库自动升级为主库
在slave主机编辑sentinel.conf文件
在slave主机运行哨兵程序
[root@redisB ~]# redis-cli -h 192.168.4.52
192.168.4.52:6379> SLAVEOF 192.168.4.51 6379
OK
192.168.4.52:6379> INFO replication
# Replication
role:slave
master_host:192.168.4.51
master_port:6379
...
[root@redisA ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@redisA ~]# redis-cli -h 192.168.4.51
192.168.4.51:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.4.52,port=6379,state=online,offset=451,lag=1
master_replid:4dfa0877c740507ac7844f8dd996445d368d6d0f
master_replid2:0000000000000000000000000000000000000000
...
[root@redisB ~]# vim /etc/sentinel.conf
sentinel monitor redisA 192.168.4.51 6379 1
关键字 关键字 主机名自定义 ip 端口 票数
sentinel auth-pass redis51 密码 //连接主库密码,若主库有密码加上这一行
[root@redisB ~]# redis-sentinel /etc/sentinel.conf //执行,之后把主库宕机
...
25371:X 28 Sep 11:16:54.993 # +sdown master redis51 192.168.4.51 6379
25371:X 28 Sep 11:16:54.993 # +odown master redis51 192.168.4.51 6379 #quorum 1/1
25371:X 28 Sep 11:16:54.993 # +new-epoch 3
25371:X 28 Sep 11:16:54.993 # +try-failover master redis51 192.168.4.51 6379
25371:X 28 Sep 11:16:54.994 # +vote-for-leader be035801d4d48eb63d8420a72796f52fc5cec047 3
...
25371:X 28 Sep 11:16:55.287 * +slave slave 192.168.4.51:6379 192.168.4.51 6379 @ redis51 192.168.4.52 6379
25371:X 28 Sep 11:17:25.316 # +sdown slave 192.168.4.51:6379 192.168.4.51 6379 @ redis51 192.168.4.52 6379
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
6)配置带验证的主从复制
关闭4.51和4.52,启动之后用info replication查看,各自为主
主库设置密码,在51上面操作
[root@redisA ~]# redis-cli -h 192.168.4.51 shutdown
[root@redisA ~]# vim /etc/redis/6379.conf
requirepass 123456
[root@redisA ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@redisA ~]# redis-cli -h 192.168.4.51 -a 123456
192.168.4.51:6379> ping
PONG
192.168.4.51:6379>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
7)配置从库主机
[root@redisB ~]# redis-cli -h 192.168.4.52 shutdown
[root@redisB ~]# vim /etc/redis/6352.conf
slaveof 192.168.4.51 6379
masterauth 123456
[root@redisB ~]# /etc/init.d/redis_6352 start
Starting Redis server...
- 1
- 2
- 3
- 4
- 5
- 6
52上面查看 52从主库变为从库
[root@redisB ~]# redis-cli -h 192.168.4.52 -a 123456
192.168.4.52:6379> info replication
# Replication
role:slave
master_host:192.168.4.51
master_port:6379
master_link_status:up
- 1
- 2
- 3
- 4
- 5
- 6
- 7
51上面查看 51的从库为52
[root@redisA ~]# redis-cli -h 192.168.4.51 -a 123456
192.168.4.51:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.4.52,port=6379,state=online,offset=98,lag=0
- 1
- 2
- 3
- 4
- 5
- 6