目录: 

(1)主从复制

         一主二从搭建

(2)复制原理

(3)哨兵模式

(4)小结


 为解决大量访问的高并发问题,建立捷群。提供3台redis服务,建立集群

建立集群后,机器就有关联了,写的叫主库master库,它只负责写,读的叫从库,从库依赖于主库,只要主库的数据变了,会自动的同步到从库,这样数据就可以保持一致,这样就可以形成一个集群,一主多从、或者一主两从

(1)主从复制

主机数据更新后根据配置和策略,自动同步到从机的master/slave机制,Master以写为主,Slave以读为主。

1.一主二从

一主二从原理

1、配从(库)不配主(库)

2、配从(库): slaveof 主库IP 主库端口

3、主写从读、读写分离

4、从连前后同

5、主断从待命、从断重新连

redis双机哨兵 redis哨兵模式两主多从_数据库

一主二从搭建

1、一台服务器模拟三台主机:

第一步:将redis.conf 拷贝三份,名字分别是,redis6379.conf,redis6380.conf,redis6381.conf

redis双机哨兵 redis哨兵模式两主多从_数据库_02

第二步:修改三个文件的port端口,pid文件名,日志文件名,rdb文件名

依次复制,并修改相应内容。

在一台电脑上模拟,三台Redis服务,实质上,一台主机上只有一个Redis,这里只是用来演示

如:

port 6379

pidfile /var/run/redis_6379.pid

logfile "6379.log"

dbfilename dump6379.rdb

使用3个Redis配置文件,启动3个redis服务

redis
第三步:分别打开三个窗口模拟三台服务器,开启redis服务。

redis-server redis6379.conf &

redis-server redis6380.conf &

redis-server redis6381.conf &

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_03

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_04

redis双机哨兵 redis哨兵模式两主多从_Redis_05

redis双机哨兵 redis哨兵模式两主多从_redis_06

分别连上客户端:

redis-cli -h 127.0.0.1 -p 6379

redis-cli -h 127.0.0.1 -p 6380

redis-cli -h 127.0.0.1 -p 6381

redis双机哨兵 redis哨兵模式两主多从_数据库_07

 

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_08

2、查询主从信息:info replication

 

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_09

 在还没有设立集群,他们还没有分配角色,利用命令查看,默认都是主机:

role:master主机

connected_slaves:0 没有连他的

redis双机哨兵 redis哨兵模式两主多从_运维_10

 

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_11

3、写操作6379:

redis双机哨兵 redis哨兵模式两主多从_数据库_12

在端口号6379里面写数据:

 

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_13

在端口号的Redis6380,读数据:他们没有关系,所以还是空的

 

redis双机哨兵 redis哨兵模式两主多从_运维_14

 

redis双机哨兵 redis哨兵模式两主多从_运维_15

4、设置主从关系:让6379当主机,让6380、6381当从机

在6380和6381主机上分别执行命令:slaveof 127.0.0.1 6379

redis双机哨兵 redis哨兵模式两主多从_运维_16

redis双机哨兵 redis哨兵模式两主多从_Redis_17

 设置完6780之后查看,角色发生改变

role:slave(从机)

master_host:127.0.0.1主机的IP地址

master_port:6379 主机的端口6379

master_link_status:up 从属转态正在激活

 

redis双机哨兵 redis哨兵模式两主多从_数据库_18

 查看主机:6379:发现connected_slaves:2  有2台从机连它,分别是6380、6381

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_19

 在6380上查看数据发现已经同步到从机上面:

redis双机哨兵 redis哨兵模式两主多从_redis_20

5、全量复制:在6380和6381分别执行命令get k1

redis双机哨兵 redis哨兵模式两主多从_运维_21

redis双机哨兵 redis哨兵模式两主多从_Redis_22

6、增量复制:6379执行命令:set k2 v2。然后6380端口和6381端口,分别执行命令:get k2

 

redis双机哨兵 redis哨兵模式两主多从_redis_23

redis双机哨兵 redis哨兵模式两主多从_Redis_24

redis双机哨兵 redis哨兵模式两主多从_数据库_25

 

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_26

 

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_27

7、主写从读、读写分离:在6380和6381上执行写操作set k3 v3

redis双机哨兵 redis哨兵模式两主多从_redis_28

redis双机哨兵 redis哨兵模式两主多从_运维_29

不能再从机上执行写操作:只能读数据,读的话汇报错

redis双机哨兵 redis哨兵模式两主多从_Redis_30

 

redis双机哨兵 redis哨兵模式两主多从_redis_31

 

8、主机宕机:6379执行指令shutdown,并查看6380和6381的redis信息

redis双机哨兵 redis哨兵模式两主多从_Redis_32

redis双机哨兵 redis哨兵模式两主多从_运维_33

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_34

从机原地待命。

关闭6379后:6380和6381 master_link_status:down,从机原地待命,不能更新数据

redis双机哨兵 redis哨兵模式两主多从_Redis_35

 

9、主机宕机后恢复:重启6379,并且执行写命令set k4 v4;6380和6381上分别执行get k4

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_36

redis双机哨兵 redis哨兵模式两主多从_redis_37

redis双机哨兵 redis哨兵模式两主多从_运维_38

主机重启后,一切正常。

查看6381的从机状态:master_link_status:up

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_39

 

redis双机哨兵 redis哨兵模式两主多从_Redis_40

 

10、从机宕机:6380执行指令shutdown,并查看6379和6381的redis信息

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_41

redis双机哨兵 redis哨兵模式两主多从_数据库_42

redis双机哨兵 redis哨兵模式两主多从_数据库_43

关闭从机6380,查看主机6379,他的连接从机只剩下6381了

redis双机哨兵 redis哨兵模式两主多从_redis_44

 

从机6381:不受影响 

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_45

 

 

11、从机宕机后恢复:重启6380,并查看6380、6379和6381的redis信息

redis双机哨兵 redis哨兵模式两主多从_数据库_46

redis双机哨兵 redis哨兵模式两主多从_redis_47

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_48

重启从机后,跟主机没有关系,6380变成主机,需要重新设置主从关系 

 

redis双机哨兵 redis哨兵模式两主多从_Redis_49

 

redis双机哨兵 redis哨兵模式两主多从_Redis_50

注意:从机跟master断开联系,必须重新连接,除非写进配置文件。

 

12、从机恢复连主机前,主机写操作:6379执行写命令set k5 v5,6380和6381分别执行命令get k5

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_51

redis双机哨兵 redis哨兵模式两主多从_redis_52

redis双机哨兵 redis哨兵模式两主多从_redis_53

13、从机恢复连接主机,6380执行命令:slaveof 127.0.0.1 6379,并且执行命令:get k5

redis双机哨兵 redis哨兵模式两主多从_数据库_54

redis双机哨兵 redis哨兵模式两主多从_运维_55

 

 

当主句6379出问题,这里以断开连接来说,6380上位变成主机,6380断开主从关系,6381修改主从关系 

14、从机上位:

第一步:主机宕机,6379执行命令:shutdown

redis双机哨兵 redis哨兵模式两主多从_运维_56

第二步:6380断开主从关系,执行命令:SLAVEOF no one

redis双机哨兵 redis哨兵模式两主多从_redis_57

第三步:重新搭建主从,6381执行命令:SLAVEOF 127.0.0.1 6380、info replication

redis双机哨兵 redis哨兵模式两主多从_运维_58

第四步:之前主机恢复,重启6379的Redis服务,并执行命令:info replication

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_59

在6379主机宕机后,6380从机断开主从关系,6381开始还在原地待命;后来6380从机上位,6381投靠6380,6379主机即使回来但它已是孤寡老人,空头司令。

 

比如原来色的主机修好后,可以继续当主机,可以当6380的从机,也可以当从机6380的从机

15、天堂变地狱:6379执行命令saveof 127.0.0.1 6381,并在6379和6381执行info replication

redis双机哨兵 redis哨兵模式两主多从_redis_60

redis双机哨兵 redis哨兵模式两主多从_数据库_61

一台主机配多台从机,一台从机再配多台从机,从而实现了庞大的集群架构。同时也减轻了一台主机的压力,缺点是增加了服务器间的延迟。

6381发生改变:既是从机又是从机,但是不能写数据

redis双机哨兵 redis哨兵模式两主多从_Redis_62

(2)复制原理

     1 .全量复制

slave启动成功连接到master后会发送一个sync命令;Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步;slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

只要是重新连接master,一次完全同步(全量复制)将被自动执行。

增量复制

Master将新的所有收集到的修改命令依次传给slave,完成同步。

(3)哨兵模式

 哨兵模式原理

从机上位的自动版。Redis提供了哨兵的命令,哨兵命令是一个独立的进程,哨兵通过发送命令,来监控主从服务器的运行状态,如果检测到master故障了根据投票数自动将某一个slave转换master,然后通过消息订阅模式通知其它slave,让它们切换主机。然而,一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多哨兵进行监控。

redis双机哨兵 redis哨兵模式两主多从_数据库_63

 

哨兵模式搭建

1—7步跟1.17.2.2一主二从搭建一样:一台服务器模拟三台主机、查询主从信息、写操作6379、设置主从关系、全量复制、增量复制、主写从读、读写分离。

8、创建redis_sentinel.conf文件,并编辑里边的内容:sentinel monitor dc-redis 127.0.0.1 6379 1,表示:指定监控主机的ip地址,port端口,得到哨兵的投票数(当哨兵投票数大于或者等于此数时切换主从关系)。

 在redis-5.0.2目录下编辑一个配置文件,redis_sentinel.conf,使用vim编辑内容:

sentinel monitor dc-redis 127.0.0.1 6379 1

9、新开窗口,启动哨兵:redis-sentinel /opt/redis-5.0.2/redis_sentinel.conf

redis双机哨兵 redis哨兵模式两主多从_运维_64

 

 

 

redis双机哨兵 redis哨兵模式两主多从_redis_65

redis双机哨兵 redis哨兵模式两主多从_redis_66

 

10、主机宕机:

redis双机哨兵 redis哨兵模式两主多从_Redis_67

关闭6379:

redis双机哨兵 redis哨兵模式两主多从_Redis_68

 

 

11、等待从机投票,在sentinel窗口中查看打印信息。

redis双机哨兵 redis哨兵模式两主多从_运维_69

可以看到最后主机换成6380了 

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_70

 

 

12、查看6380和6381的redis信息:

redis双机哨兵 redis哨兵模式两主多从_运维_71

redis双机哨兵 redis哨兵模式两主多从_redis双机哨兵_72

查看6380:role:master,变换了角色 

 

redis双机哨兵 redis哨兵模式两主多从_运维_73

13、原主机恢复,启动6379:

redis双机哨兵 redis哨兵模式两主多从_数据库_74

redis双机哨兵 redis哨兵模式两主多从_运维_75

原来的主机变成现在主机的从机 

redis双机哨兵 redis哨兵模式两主多从_redis_76

 

(4)小结:

操作:

1 查看主从复制关系命令:info replication
2 设置主从关系命令:slaveof 主机ip 主机port
3 开启哨兵模式命令:./redis-sentinel sentinel.conf
4 主从复制原则:开始是全量复制,之后是增量复制
5 哨兵模式三大任务:监控,提醒,自动故障迁移

缺点

Redis的主从复制最大的缺点就是延迟,主机负责写,从机负责备份,这个过程有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,从机器数量的增加也会使这个问题更加严重。