简介
主从复制,主机数据更新后根据配置和策略,自动同步到备机的Master/Slaver机制,Master以写为主,Slave以读为主。
功能
- 读写分离
- 容灾备份
使用
配从库不配主库
从库配置
salveof 主库IP 主库端口
- 每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件
- info relication
修改配置文件
- 拷贝多个redis.conf文件
- 开启damemonize yes
- 配置pid文件名
- 指定端口
- 配置log文件名
- 配置dump.rdb文件名
主从配置效果
- 一主二仆(过于中心化)
- 使用
slaveof 127.0.0.1 6379
将80和81两台机器配置为从机,主机支持读写操作,从机只支持读操作 - 使用
info replication
查看主从配置信息 - 主机挂掉之后,从机保持原地待命状态
- 当主机回来之后,主从模式正常工作
- 当从机挂掉后重启,不能恢复到原来的从机身份,需要通过命令
slaveof 127.0.0.1 6379
重新连接
- 薪火相传
上一个slave可以是下一个slave的master,slave同样可以接受其他slaves的连接和同步请求,那么该slave作为链条中下一个的master,可以有效的减轻master的写压力。
- 使用命令
slaveof 127.0.0.1 6380
将6381挂在6380上
- 反客为主
- 当主机挂掉之后,我们可以通过命令
slaveof no one
让6380成为新的master(使当前的数据停止与其他数据库的同步,转为主数据库)
复制原理
- slave启动成功连接到master后悔发送一个sync命令
- master接到命令启动后台的存盘进程,同事手机所有接受到的用于修改数据集命令,在后台进程执行完毕后,master将传送整个数据文件到slave,以完成一次完全同步
- 全量复制:而slave服务在接受到数据库文件后,将其存盘并加载到内存中
- 增量复制:mater继续讲新的所有收集到的修改命令一次传递给slave,完成同步
- 但是只要是重新连接master,一次完成同步(全量复制)将被自动执行
哨兵模式
反客为主的自动版,能够后台监控主机是否故障,如果故障,根据投票数自动将从库转换为主库。
- 配置步骤
- 新建
sentinel.conf
文件 - 配置哨兵,在配置文件中增加如下内容
sentinel monitor host6379 127.0.0.1 6379 1
, 其中host6379表示主机名,1表示主机挂掉后salve投票看让谁来接替成为主机,得票数多少后成为主机 - 启动哨兵,使用命令
./redis-sentinel /myredis/sentinel.conf
- 原有的master挂了,投票重新选取,原来的master后来之后身份变成了slave
- 新建
- 一组sentinel可以监控多个master
复制的缺点
由于所有的写操作都是现在master上操作,然后同步更新到slave上,所以从master同步到slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,slave机器数量增加也会使这个问题更加严重。