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 | 目录结构 | 
- 报错解决:- 方法一:修改存储logfile文件夹和dump.rbd文件夹的权限:sudo chmod 777 /xx/xxx/xxxx
- 方法二:以管理员权限启动redissudo redis-cli -p 63xx
 
- 方法一:修改存储logfile文件夹和dump.rbd文件夹的权限:
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机器数量增加也会使这个问题更加严重