Redis 主从复制
in SQL with 0 comment, Views is 37

Redis 主从复制

in SQL with 0 comment, Views is 37

是什么

Redis 的复制,也就是我们常说的主从复制读写分离,主机数据更新后根据配置和策略,自动同步到备机的 Master/Slaver 机制,Master 以写为主,Slave 以读为主

能干嘛

1、读写分离

2、容灾恢复

怎么玩

配从不配主

配置从库,不配主库

从库配置

slaveof [Master IP] [Master port]

每次与 Master 断开连接后,都需要重新连接,除非在 redis.conf 中进行配置

info replication

修改配置文件细节操作

1、拷贝多个 redis.conf 文件

> cp /opt/redis-4.0.11/redis.conf /backup_conf/redis_6379.conf
> cp /opt/redis-4.0.11/redis.conf /backup_conf/redis_6380.conf
> cp /opt/redis-4.0.11/redis.conf /backup_conf/redis_6381.conf

2、开启 daemonize yes

3、修改 pid 文件名字

pidfile /var/run/redis_6379.pid
pidfile /var/run/redis_6380.pid
pidfile /var/run/redis_6381.pid

4、修改 port 监控端口

port 6379
port 6380
port 6381

5、修改 log 文件名字

logfile "redis_6379.log"
logfile "redis_6380.log"
logfile "redis_6381.log"

6、修改 dump.rdb 文件名字

dbfilename dump_6379.rdb
dbfilename dump_6380.rdb
dbfilename dump_6381.rdb

常用三招

一主二仆:中心化

1、Init

1.png

2.png

2、一个 Master 两个 Slave

3.png

4.png

3、日志查看

10.png

4、主从问题演示

读写分离:Master can read and write,Slave only read

5.png

主机故障:Master shutdown,Slave waitting

6.png

主机恢复:Master recover,Slave auto relink

7.png

从机故障:Slave shutdown and then recover,but it become a master

8.png

每次与 Master 断开连接后,都需要重新连接,除非在 redis.conf 中进行配置

9.png

薪火相传:去中心化

上一个 Slave 可以是下一个 Slave 的 Master,Slave 同样可以接收其他 Slave 的连接和同步请求,这样就可以有效的减轻 Master 的写压力

中途变更转向:会清除之前的数据,重新建立拷贝最新的

11.png

12.png

反客为主

Master shutdown,两个 Slave 中选择一个成为 Master

slaveof no one:使当前数据库停止与其他数据库的同步,转成主数据库

13.png

复制原理

1、Slave 启动成功连接到 Master 后会发送一个 sync 命令

2、Master 接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集的命令

3、在后台进程执行完毕之后,Master 将传送整个数据文件到 Slave,以完成一次完全同步

4、全量复制:而 Slave 服务在接收到数据库文件数据后,将其存盘并加载到内存中

5、增量复制:Master 继续将新的所有收集到的修改命令依次传给 Slave,完成同步

6、但是,只要是重新连接 Master,第一次完全同步(全量复制)将被自动执行

哨兵模式(Sentinel)

是什么

反客为主的自动版,能够后台监控 Master 是否故障,如果故障了根据投票数自动将从库转换为主库

怎么玩

1、调整结构:一主二仆

2、自定义目录下新建 sentinel.conf 文件,名字绝对不能错 touch /backup_conf/sentinel.conf

3、配置哨兵,填写内容

上面最后一个数字 1,表示 Master shutdown 后,Slave 投票看让谁接替成为 Master,得票多者成为 Master

14.png

4、启动哨兵

15.png

5、正常主从演示

16.png

6、Master shutdown

7、投票新选

8、重新主从,继续开工

17.png

9、问题:如果之前的 Master 重启回来,是否会造成双 Master 冲突?

不会造成冲突,并且之前的 Master 会变成新 Master 的 Slave(老领导变小弟)

18.png

最后

一组 sentinel 能同时监控多个 Master

复制的缺点:复制延迟

由于所有的写操作都是优先 Master,然后同步更新到 Slave 上

因此从 Master 同步到 Slave 上会有一定的延迟

如果在高并发情况下,延迟问题会更加严重,Slave 数量的增加也会使这个问题更加严重

Responses
选择表情