Redis的复制(Master/Slave)

一、Master/Slave Replication(主从复制)
  主机数据更新后,根据配置和策略,自动同步到从(备)机的master/slave机制,Master以写为主,Slave以读为主。
  作用:读写分离;容灾恢复。
二、应用
  2.1、配从(库)不配主(库)
  2.2、从库配置:slaveof 主库IP 主库端口
    每次与master(主库)断开之后,都需要重新连接,除非配置到redis.conf文件中;
    使用命令 Info replication 查看主从库信息。
  2.3、修改配置文件细节操作
    通过Redis镜像创建三个容器,如下所示:
  2.4、常用master/slave配置
    a、一主二仆:
      Init:初始化,配置两个从库; 一个master两个slave
      日志查看:1)主机日志;2)备机日志;3)info replication查看主从库配置信息;
      主从问题演示:
      1)切入点问题?slave1、slave2是从头开始复制还是从切入点开始复制?
      2)从机是否可以写?是否可以set?
      3)主机shutdown后从机是上位为主机还是原地待命(仍然为从机)?
      4)主机回来(重启)后,主机新增记录(数据),从机还能否顺利复制?
      5)其中一台从机down后情况如何?依照原有,它还能连上原先的主机吗?
    b、薪火相传
      1)上一个slave可以是下一个slave的master,slave同样可以接受其它slaves的连接和同步请       求,那么该slave作为了链条中下一个master,可以有效减轻master的写压力;
      2)中途变更转向:会清除之前的数据,但是重新建立后会拷贝罪行的数据;
      3)配置主机命令:Slaveof 新主库IP 新主库端口;
    c、反客为主
      1)执行命令SLAVEOF no one :使当前数据库停止与其他数据库的同步,转成主数据库
三、复制原理
  slave启动成功连接到master后会发送一个sync命令,Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。
  全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中;
  增量复制:master继续将新的所有收集到的修改命令依次传给slave,完成同步,但是只要重新连接master,一次完全同步(全量复制)将自动执行。
四、哨兵模式(Sentinel)
  哨兵模式是“反客为主”的自动版本,不需要手动执行 SLAVEOF no one ,哨兵模式能够在后台监控主机是否发生故障,一旦发现主机发生了故障,将根据投票数自动将某一个从库转换为主库。
  4.1、使用步骤
  1)创建三个redis容器,端口分别为6379、6380、6381,6379为主库,80、81为从库
  2)配置哨兵,填写内容:sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1
    最后一个数字1,表示主机挂掉后,slave投票看让谁接替成为主机,得票数多者成为主机。
  3) 启动哨兵:Redis-sentinel /myredis/sentinel.conf (根据实际情况配置,目录有所不同)
  4)正常主从演示
  5)原有的master挂了
  6)从库投票新选主库
  7)重新主从继续开工,info replication查看主从库信息
  8)如果之前的master重启回来后,会不会双master冲突?
    不会。重启回来后的前主机将以从机的身份挂载到新主机上。
  9)一个sentinel能够同时监控多个master。
五、复制的缺点
  复制延时:由于所有的写操作都是现在master上操作,然后同步更新到slave上,所以从master同步到slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,slave机器数量的增加也会使这个问题更加严重。
备注:等有时间了再实操一遍,把截图放上来。

猜你喜欢

转载自blog.csdn.net/qq_37196265/article/details/105961967