7-主从复制
分类:
- 全量复制
- 增量复制
作用:
- 读写分离,提高性能
- 容灾快速恢复
单机实现方法
配置多个redis.conf且分配不同端口并启动( 从服务器要加上masterauth 密码
配置);
启动后分别登录,使用 SLAVESOF IP PORT
将本机变成从服务器。
复制原理
-
Slave 启动成功连接到 Master 后会发送一个 sync 命令
-
Master接到命令,把主服务器数据持久化,得到 RDB文件。然后将RDB文件发送给从文件,从服务器获得RDB文件后读取,完成一次完全同步
-
全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
-
增量复制:Master 继续将新的所有收集到的修改命令依次传给slave,完成同步
-
只要是重新连接master,一次完全同步(全量复制)将被自动执行
常见模式
1.一主二仆
Q:从机是否可以写?set可否?
A:都不允许。
Q:主机shutdown后情况如何?从机是上位还是原地待命?
A:主机shutdown后,从机显示主机的状态位“down”,也就是从机知道主机down掉了;从机不会上位变成主机。
Q:主机又回来了后,主机新增记录,从机还能否顺利复制?
A:可以。
Q:其中一台从机down后情况如何?依照原有它能跟上大部队吗?
A:可以,从机down后重启,重新作为主机的Slave时,会从主机得到所有信息。
2.薪火相传
上一个 Slave 可以是下一个 Slave 的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险。
缺点是这样更新会很慢,一旦某个slave宕机,以该服务器为 master 的 slave 都没法同步。
3.反客为主
当一个 master 宕机后,后面的 slave 可以立刻升为 master,其后面的slave不用做任何修改。
需要通过slave no one
手动实现。
4.哨兵模式
反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库,主库如果恢复的话,变成新主库的从库。
实现:
-
新建 sentinel.conf文件
-
配置哨兵,sentinel monitor mymaster 127.0.0.1 6379 1。
mymaster 是为监控对象起的别名;1 为至少有多少个哨兵同意迁移的数量。
-
启动哨兵,redis-sentinel sentinel.conf
Q:哪个从机会被选举为主机呢?
A:根据优先级别:slave-priority ,值越小优先级越高
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15322146.html