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
- 方法二:以管理员权限启动redis
sudo 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机器数量增加也会使这个问题更加严重