Redis的复制(master/Slave)
1、redis的复制是什么?
redis的复制就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,Master以写为主,slave以读为主
2、redis的复制作用
- 读写分离
- 容灾恢复
3、如何实现Redis的主从复制
1、配置从库不配置主库(默认自己就是主库)
2、从库配置:slaveof主库IP主库端口(或者使用slaveof命令)
- 每次与master断开之后,都需要重新连接,除非你配置redis.conf文件
- info replication
3、修改配置文件细节操作:
- 拷贝多个redis.conf文件
- 开启daemonize yes
- Pid文件名字
- 指定端口
- Log文件名字
- Dump.rdb名字
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "6379.log"
dbfilename dump6379.rdb
从节点需要加
slaveof <主机IP地址> <主机端口号port>
4、常用的3种主从复制
一主二仆(master(1台)slave(2台))
主从问题:
1 切入点问题?slave1、slave2是从头开始复制还是从切入点开始复制?比如从k4进来,那之前的123是否也可以复制
答:从头开始复制,接入主机后(变成从机),接入之前的数据也会复制到从机中
2 从机是否可以写?set可否?
答:(replica-read-only yes)默认从机为只读模式,可以设置但是不建议把从机设置成可读写的模式。
3 主机shutdown后情况如何?从机是上位还是原地待命
答:从机原地待命
4 主机又回来了后,主机新增记录,从机还能否顺利复制?
答:主机回来之后,主机新增记录,从机能顺利复制。
5 其中一台从机down后情况如何?依照原有它能跟上大部队吗?
答:一台从机down掉后,重新连上主机后它还是能复制主机中的数据,包括down掉之后新添加的数据,和之前的数据
薪火相传
当中间的slave从机down掉之后master就没有从机了
上一个slave可以是下一个slave的master,slave同样可以接收其他slave的连接和同步请求,那么该slave作为了链条中下一个节点的master,可以有效的减轻master的写压力
中途变更转向:会清除之前的数据,重新建立拷贝最新slaveof 新主库IP 新主库端口
反客为主:slaveof no one 使当前数据库停止与其他数据库的同步,转成主数据库
4、Redis主从复制原理
Slave启动成功连接到master后会发送一个sync命令Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。
全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
增量复制:master 继续将新的所有收集到的修改命令依次传给slave,完成同步,但是只要是重新连接master,一次完全同步(全量复制)将被自动执行
5、哨兵模式(sentinel)
1、哨兵模式是什么
反客为主的自动版,能够在后台监控主机是否故障,如果故障了跟据投票数自动将从库转换为主库
使用步骤:
1、编写哨兵(sentinel)的配置文件,此处使用三个哨兵来演示哨兵模式的复制,所以需要编写三个配置文件
#sentinel-26379.conf
#哨兵的端口
port 26379
#是否以后台方式运行哨兵
daemonize yes
#哨兵的配置文件
logfile "26379.log"
#哨兵最核心的配置
sentinel monitor mymaster 192.168.92.128 6379 2
#sentinel monitor <主节点名称> <主节点IP> <主节点端口> <客观下线需要的票数>
相关哨兵的详细资料:
http://www.redis.cn/articles/20181020001.html
entinel monitor <主节点名称> <主节点IP> <主节点端口> <客观下线需要的票数>
相关哨兵的详细资料:
http://www.redis.cn/articles/20181020001.html