4.1 主从复制
- master可以拥有多个 slave
- 多个 slave 可以连接同一个 master 外,还可以连接到其他的 slave
- 主从复制不会阻塞 master 在同步数据时,master可以继续处理client请求
- 提供系统的伸缩性
4.2 主从复制过程
- slave 与 master 建立连接,发送 sync 同步命令。
- master 会开启一个后台进程,将数据库快照保存到文件中,同事 master 主进程会开始收集新的写命令并缓存
- 后台完成保存后,就将文件发送给 slave
- slave 将此文件保存到本地上
4.3 主从复制配置
主从复制方案
角色 | ip | 端口 | |
master | 192.168.136.175 | 6379 | |
slave | 192.168.136.176 | 6379 | |
slave | 192.168.136.178 | 6379 |
1. 安装redis
2. 配置 redis.conf 文件,master 不要修改配置,只需要修改 slave 的。slaveof 192.168.136.175 6379
3. 重启三台服务器,在 master 进入redis-cli,输入 info 命令,看到以下信息,证明配置成功。
4.4 哨兵
有了主从复制的实现以后,我们如果想对主从服务器进行监控,那么在 redis2.6 之后提供了,一个哨兵的机制,在2.6版本中为哨兵1.0版本。在2.8之后哨兵功能,稳定起来。
哨兵的含义就是监控 redis 的运行情况,其主要功能有两点:
- 监控主数据库和从数据库是否正常运行。
- 主数据库出现故障时,可以自动将从数据库转为主数据库,实现自动切换。
4.4.1 哨兵实现步骤:
在任意一台从服务器(slave)启动 sentinel.conf (其实应该在第四台机器上启动)
1. 复制 sentinel.conf 文件到 /opt/redis/etc 中。sentinel.conf 文件在redis的源码包下
2. 修改 sentinel.conf 文件
sentinel monitor mymaster 192.168.136.175 6379 1
sentinel down-after-milliseconds mymaster 10000
sentinel parallel-syncs mymaster 2
sentinel failover-timeout mymaster 30000
3. 启动三台 redis 服务器
4. 启动哨兵 ./redis-server /opt/redis/etc/sentinel.conf --sentinel &
配置完成!!!
查看哨兵监控的信息,在任意一台机器都可以查看。 ./redis-cli -h 192.168.136.176 -p 26379 info Sentinel
关闭 主节点服务器 (192.168.136.175),配置了哨兵的服务器上自动打印出提示。
重新开启 175,但是节点不会把主节点切回175上。
关闭 176,主节点切回 175