欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Redis---B站学习---redis的主从复制

程序员文章站 2022-03-14 18:13:13
Redis—B站学习—redis的主从复制1.Redis的主从复制是什么行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主2.Redis的主从复制能做什么读写分离容灾恢复3.Redis的主从复制怎么使用配从(库)不配主(库)从库配置:slaveof 主库IP 主库端口每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件info replication...

Redis—B站学习—redis的主从复制

1.Redis的主从复制是什么

  1. 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

2.Redis的主从复制能做什么

  1. 读写分离
  2. 容灾恢复

3.Redis的主从复制怎么使用

  1. 配从(库)不配主(库)
  2. 从库配置:slaveof 主库IP 主库端口
    1. 每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件
    2. info replication
  3. 修改配置文件细节操作
    1. 拷贝多个redis.conf文件
    2. 开启daemonize yes
    3. pid文件名字
    4. 指定端口
    5. log文件名字
    6. dump.rdb名字
  4. 常用3招

    1. 一主二仆 (比较常用)

      1. Init
      2. 一个Master两个Slave
      3. 日志查看
        1. 主机日志:查看对应服务的以.log结尾的文件(下图是log文件的内容)Redis---B站学习---redis的主从复制
        2. 备机日志:查看对应服务的以.log结尾的文件(log文件内容同上)
        3. info replication:查看主/从复制信息(slaveof + host+ post)
          Redis---B站学习---redis的主从复制
      4. 主从问题演示
        1. 切入点问题?slave1、slave2是从头开始复制还是从切入点开始复制?比如从k4进来,那之前的123是否也可以复制?
          :如果设置了从机,那么从机就会抓取到主机的所有信息,无论是在成为从机前还是后的数据都可以获取到
        2. 从机是否可以写?set可否?
          :只有主机可以写可以进行set操作,从机是不可以进行写set操作的
        3. 主机shutdown后情况如何?从机是上位还是原地待命?
          :从机原地不动还是slave状态,但master_link_status状态由up变成down
        4. 主机又回来了后,主机新增记录,从机还能否顺利复制?
          :从机可以顺利复制
        5. 其中一台从机down后情况如何?依照原有它能跟上大部队吗?
          :从机如果跟master断开后,自己会变成master。之前的主机新添加的数据,这个断开的从机没有,如果想要跟上原来的大部队,那么就要重新成为从机
    2. 薪火相传(类似链表的结构)

      1. 上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力
      2. 中途变更转向:会清除之前的数据,重新建立拷贝最新的
      3. slaveof 新主库IP 新主库端口
    3. 反客为主

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

4.复制原理

  1. slave启动成功连接到master后会发送一个sync命令
  2. Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
  3. 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
  4. 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
  5. 但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

5.哨兵模式(sentinel)—监控,也是反客为主的自动版

  1. 哨兵模式是什么
    1. 反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
  2. 哨兵模式怎么用(使用步骤)
    1. 调整结构,6379带着80、81
    2. 自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错
    3. 配置哨兵,填写内容
      1. sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1
      2. 上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机
    4. 启动哨兵
      1. redis-sentinel /sentinel.conf的路径/sentinel.conf
      2. 上述目录依照各自的实际情况配置,可能目录不同
    5. 正常主从演示
    6. 原有的master挂了:由于启动哨兵模式,当原有的master再重新连接上来之后过一小会儿会有master状态变为slave状态
    7. 投票新选
    8. 重新主从继续开工,info replication查查看
    9. 问题:如果之前的master重启回来,会不会双master冲突?
      答: 不会,原有的master过了一小会儿就会变成slave
  3. 一组sentinel能同时监控多个Master

6.复制的缺点

  1. 由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

本文地址:https://blog.csdn.net/qq_39314972/article/details/107308802