Redis 主从复制

Redis主从复制,就是主节点数据更新后根据配置和策略,自动同步到从节点的 Master/Slaver 机制,Master以写为主,Slave以读为主。

1. 主从复制模式

1. 作用

1. 数据冗余,实现了数据的热备份。

2. 负载均衡,读写分离,性能扩展。

3. 容灾快速恢复。

4. 主从复制是Rdis哨兵和集群模式的基础。

2. 配置

配从不配主原则。

主从复制完全是在从节点进行配置和操作,不需要对主节点进行操作。

1. 从节点相关配置

# 1. 配置 include 主节点配置文件,共用不需要修改的内容
include /opt/apps/redis-5.0.7/conf/redis.conf

# 2. 开启Redis服务后台启动
daemonize yes

# 3. 指定从节点Redis的pid
pidfile /var/run/redis_6380.pid

# 4. 指定从节点端口名
port 6380

# 5. 指定log文件名
logfile ""

# 6. 指定 db 文件名
dbfilename dump_6380.rdb

# 7. 关闭 appendonly,或者换名字
appendonly yes
appendfilename "appendonly.aof"

# 其他
# 8. 主从连接超时时间
repl-timeout 60

# 9. 全量复制时,是否无盘复制,即通过网络socket
repl-diskless-sync n0

# 10. 全量复制时,开启无盘复制前的等待时间,单位秒
repl-diskless-sync-delay 5

# 11. 全量复制时,主节点缓冲区大小
client-output-buffer-limit slave 256MB 64MB 60

# 12. 主从命令发送是否延迟
repl-disable-tcp-nodelay no

# 13. 与主节点建立连接时的密码(如果主节点设置了密码)
masterauth <master-password>

# 14. 主从超时判断时间
repl-ping-slave-period 10

# 15. 复制堆积缓存区的大小
repl-backlog-size 1mb

# 16. 没有从节点时,复制堆积缓冲区的保留时间
repl-backlog-ttl 3600

# 17. 从节点是否只读
slave-read-only yes

2. 三种连接方式

# 1. 从节点的配置文件中添加: slaveof masterIp masterPort,(永久)
slaveof <ip> <port>

# 2. 启动从节点时
redis-server --slaveof <ip> <port>

# 3. 客户端命令,临时的,重启从节点redis服务后失效
slaveof <ip> <port>

3. 取消从节点

# 断开后从节点数据不会删除,但不会再同步主节点数据
slaveof no one

4. 客户端中显示主从信息

info replication

注意 

1. 从节点是从头开始复制主服务器数据。
2. 设置后主节点可以读写,从节点只能读。
3. 主节点宕机后从节点会处理等待状态。
4. 主节点重启后,从节点(没有重启服务或永久设置)自动连接继续成为从节点。
5. 其中一台从节点宕机,重启后会自动同步所有数据。

5. 主从复制原理

1. 每次从节点启动后,都会给主机发送psync指令。

2. 主节点立刻进行存盘操作,发送RDB文件给从节点。

3. 从节点收到RDB文件后,进行全盘加载。

4. 之后每次主节点的写操作,都会立刻发送给从节点,从节点执行相同的命令。

3. 薪火相传模式

上一个Slave可以是下一个Slave的Master,Slave同样可以接收其他Slaves的连接和同步请求,该Slave作为了条中下一个的Master,可以有效减轻Master的写压力,去中心化降低风险。

# 设置方式同从节点一样
slaveof <ip> <port>

注意 

中途变更转向会清除之前的数据,重新建立拷贝最新的。
风险是一旦中间某个Slave宕机,后面的Slave都没法备份。

薪火相传模式可以将从节点反客为主

当一个Master宕机后,后面的Slave可以立刻升为Master,其后面的Slave不用做任何修改。

# 主节点宕机后,取消某个从节点可以将该从节点变为主节点
slaveof no one

4. 哨兵模式

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

条件:

1. 主从复制模式。

2. 设置哨兵。

 

配置哨兵

 sentinel.conf

cp /opt/apps/redis-5.0.7/sentinel.conf /opt/apps/redis-5.0.7/conf/sentinel.conf

配置内容 

port 26379
daemonize yes
pidfile /var/run/redis-sentinel.pid
logfile ""
dir /opt/apps/redis-redis-5.0.7/data/

# 主要设置:mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量
sentinel monitor mymaster 127.0.0.1 6379 1

sentinel down-after-milliseconds mymaster 30000

sentinel parallel-syncs mymaster 1

sentinel failover-timeout mymaster 180000

sentinel deny-scripts-reconfig yes

启动哨兵

redis-sentinel /opt/apps/redis-5.0.7/conf/sentinel.conf

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

訾零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值