0%

【Redis】Redis的复制

Redis的复制功能介绍,开发可能不用你配,但必须得懂

1. 复制介绍

  • 复制,也就是主从复制,主机数据更新后,根据配置和策略,自动同步到备份机的master / slaver机制。
  • Master以写为主,Slave以读为主

2. 复制功能的使用

2.1 配从(库)不配主(库)

  • (1)从库配置:执行命令slaveof 主库IP 主库端口
  • (2)注意:
    • 每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件

2.2 配置文件操作

  • (1)拷贝多个redis.conf文件,作为从机加载时的配置
  • (2)修改端口号:port 63xx
  • (3)修改进程管道名字:pidfile /var/run/redis_63xx.pid
  • (4)修改log文件位置和名字: logfile /xx/xx/xx/63xx.log
  • (5)修改dump.rdb名字: dbfilename dump63xx.rdb
  • (6)修改dump.rdb的位置:dir /xx/xx/xx
1
2
3
4
5
6
7
目录结构
|master
|redis6379.conf
|
|slave
|redis6380.conf
|redis6381.conf
  • 报错解决:
    • 方法一:修改存储logfile文件夹和dump.rbd文件夹的权限:sudo chmod 777 /xx/xxx/xxxx
    • 方法二:以管理员权限启动redissudo redis-cli -p 63xx

2.3 常用3招

  • (1)一主二仆
  • (2)薪火相传
    • 一个传一个,去中心化,减轻master负担
  • (3)反客为主
    • 从机可以使用slaveof no one来重新变成主机

3. 复制原理

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

4. 哨兵模式(sentinel)

4.1 介绍

  • 哨兵模式,是反客为主的自动版,主机一旦挂了,自动从机中选一台作为主机,并其余从机重新绑定此主机。
  • 可以后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

4.2 使用

  • (1)创建一个sentinel.conf文件,文件名不能错误
  • (2)填写在里面内容为:entinel monitor [主机名称(随意填)] [IP地址] [端口号] 1,1是让哨兵自动选出新主机。可以填写多个,用来监控多个主机。
  • (3)演示

5. 复制的缺点

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