突击Redis数据库(七) 主从复制

一. 主从简介

配置多台 Redis 服务器,以主机和备机的身份分开。主机数据更新后,根据配置和策略,自动同步到备机的master/salver 机制,
Master 以写为主,Slave 以读为主,二者之间自动同步数据。

目的:
读写分离提高 Redis 性能;
避免单点故障,容灾快速恢复

突击Redis数据库(七) 主从复制_第1张图片

原理:
每次从机联通后,都会给主机发送 sync 指令,主机立刻进行存盘操作,发送 RDB 文件,给从机
从机收到 RDB 文件后,进行全盘加载。之后每次主机的写操作,都会立刻发送给从机,从机执行相同的命令

突击Redis数据库(七) 主从复制_第2张图片

二. 主从准备

除非是不同的主机配置不同的 Redis 服务,否则在一台机器上面跑多个 Redis 服务,需要配置多个 Redis 配置文件。

1. 准备多个 Redis 配置文件,每个配置文件,需要配置以下属性。
突击Redis数据库(七) 主从复制_第3张图片
样本:
突击Redis数据库(七) 主从复制_第4张图片
2. 根据多个配置文件,启动多个 Redis 服务。

原则是配从不配主。

3. 主从建立:

原则:配从不配主。
配置:在从服务器上执行 SLAVEOF ip:port 命令;
查看:执行 info replication 命令;

突击Redis数据库(七) 主从复制_第5张图片
4. 永久建立:

在从机的配置文件中,编写 slaveof 属性配置!

5. 恢复身份:

执行命令 slaveof no noe 恢复自由身!

6. 主从常见问题:

1. 从机是从头开始复制主机的信息,还是只复制切入以后的信息?
	答:从头开始复制,即完全复制。
	
2. 从机是否可以写?
	答:不能
	 
3. 主机 shutdown 后,从机是上位还是原地待命?
	答:原地待命
	
4. 主机又回来了后,主机新增记录,从机还能否顺利复制?
	答:可以
	
5. 从机宕机后,重启,宕机期间主机的新增记录,丛集是否会顺利复制?
	答:可以
	
6. 其中一台从机 down 后重启,能否重认旧主?
	答:不一定,看配置文件中是否配置了 slaveof
	
7. 如果两台从机都从主机同步数据,此时主机的 IO 压力会增大,如何解决?
	答:按照主---从(主)---从模式配置!

三. 哨兵模式

1. 简介:

作用:
Master 状态检测
如果 Master 异常,则会进行 Master-Slave 切换,将其中一个 Slave 作为 Master,将之前的 Master 作为Slave。

下线:
主观下线:Subjectively Down,简称 SDOWN,指的是当前 Sentinel 实例对某个 redis 服务器做出的下线判断。
客观下线:Objectively Down, 简称 ODOWN,指的是多个 Sentinel 实例在对 Master Server 做出SDOWN 判断,
并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的 Master Server 下线判断,然后开启 failover.

2. 工作原理:

1. 每个 Sentinel 以每秒钟一次的频率向它所知的 Master,Slave 以及其他 Sentinel 实例发送一个 PING 命令 ;

2. 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 
则这个实例会被 Sentinel 标记为主观下线;

3. 如果一个 Master 被标记为主观下线,则正在监视这个 Master 的所有 Sentinel 要以每秒一次的频率确认Master 的确进入了主观下线状态;

4. 当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认 Master 的确进入了主观下线状态, 则 Master 会被标记为客观下线 ;

5. 在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有 Master,Slave 发送 INFO 命令

6. 当 Master 被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次 ;

7. 若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除;
若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除;

3. 配置:

哨兵模式需要配置哨兵的配置文件sentinel.conf!

在sentinel.conf中写:
sentinel monitor mymaster 127.0.0.1 6379 1

启动哨兵:redis-sentinel sentinel.conf

4. 主机宕机后:
突击Redis数据库(七) 主从复制_第6张图片
主表宕机后,哨兵开始选新主表,主表在恢复,变成从表。
突击Redis数据库(七) 主从复制_第7张图片

总结:Redis数据库暂时更新完毕,以后要是有新的知识点还会继续添加到这个系列里,花费了二天时间,自我感觉有些粗糙,如有纰漏,请谅解与斧正,万分感谢。

你可能感兴趣的:(Redis数据库篇)