13_redis复制机制

Redis复制机制(replication)

概述

Redis复制机制就是主从复制,master数据库以写为主,slave数据库以读为主,当master数据发生变化时,自动的将新的数据异步同步到其他slave数据库。

作用

读写分离

容灾恢复

数据备份

水平扩容支持高并发

怎么用

一般只配置(从)读库,不配置(主)写库(一主多从)。master如果配置了requirepass参数(密码),需要密码登录,那么从数据库就要配置masterauth来设置校验密码,否则的话主机会拒绝从机的访问请求。

基本操作

  • info replication: 可以查看复制节点的主从关系和配置信息
  • replicaof: 主库IP和端口号,一般写进redis.conf配置文件里面
  • slaveof: 主库IP和端口号
  • slaveof no one: 使当前数据库停止和其他数据库的数据同步,转为主数据库,自立为王

一个主数据库(端口6379),两个从数据库(端口6380和6381):

  1. 拷贝多份redis.conf文件,redis6379.conf(主)、redis6380.conf(从)、redis6381.conf(从)

  2. 修改配置文件redis6379.conf以及其它从机

    开启deamonize yes

    deamonize yes

    注释掉绑定ip

    bind 127.0.0.1

    关闭保护模式

    protected-mode no

    指定端口

    port 6379

    指定当前工作目录dir

    dir /myredis

    修改文件进程id名字

    pidfile /var/run/redis_6379.conf

    修改日志文件名字

    logfile "/myredis/6379.log"

    配置密码

    requirepass 123456

    配置rdb文件名

    dbfilename dump6379.rdb

    (可选)是否开启AOF

    appendonly no

  3. 配置从机redos6380.conf和redis.6381.conf

    从机访问主机的通行密码masterauto,必须(从机需要配置,主机不用)

    masterauth “123456”

    replicaof 主机IP 端口号

  4. 启动主机:

    redis-server /myredis/redis6379.conf

    redis-cli -a 123456 p 6379

  5. 从机连接主机:

    redis-server /myredis/redis6380.conf

    redis-cli -a 123456 p 6380

    redis-server /myredis/redis6381.conf

    redis-cli -a 123456 p 6381

相关问题

  1. 从机是否可以执行写命令?--> 不能,从机只能读,不能写(读写分离)

  2. 主机shutdown后,从机会上位吗? --> 主机挂了,但数据不会丢,从机依旧能访问的到,从机也不会成为主机上位,等到主机回归,主机从新回来后,主机仍然是它

  3. 注意,上一个从机可以使下一个从机的主机,类似于面向对象语言中的继承概念。从机也可以接收其它从机的连接和同步请求,那么该从机也可以作为链条中的下一个主机,这可以有效减轻主机的写压力。

  4. 即使是充当主机的从机,仍然不具备写操作权限(徒有虚名,没有实权)。

复制原理和工作流程

  1. 从机在第一次启动成功后会发送一个sync命令,把主机的所有数据全部同步到自身从机。
  2. 主机收到从机的同步请求之后,会将自己的RDB快照文件和所有的缓存命令一同发送给从机,以完成一次性同步。而从机收到数据后,将其加载到内存中,从而完成复制初始化。
  3. 当有从机与主机建立连接之后,主机会每隔10s向从从机发送一个心跳包,以此来保持通信。
  4. 主机继续将新的所有命令自动依次的传给从机,完成同步。
  5. 由于主机内部维护着一个日志文件backlog.log,该日志用于记录当前主机与各个从机的数据传输跟踪,当从机下线再次上线后,主机会依据日志文件从断点处重新向从机传输未传输的数据(类似断点传输)。

复制的缺点

  1. 复制延时,信号衰减:由于所有的写操作是在主机上进行的,然后同步到其下面的各个从机,所有从主机同步到从机会有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,从机数量越多延迟会越严重。

  2. 当主机挂了,默认情况下从机并不会自动担任主机的角色,此时需要人为的干预委派一个从机充当主机。(比较麻烦)--> 提出redis哨兵和redis集群机制

posted @ 2024-03-17 13:29  LilyFlower  阅读(2)  评论(0编辑  收藏  举报