[图片上传中。。。(1)]
从日志记录来看,从服务器128从主服务器130上备份数据成功
1、为什么要复制
- 实现数据的多副本存储,实现服务的高可用
- 提供更好的读性能
- 提供更好的安全性
2、复制的技术关键点以及难点
- 如何指定复制对象
- 增量还是全量以及如何实现增量?
- 复制时不影响前端业务的操作
- 网络被中断后如何处理
- 如何防止发送出去的数据丢失没到到达从服务器
- 如何识别复制的数据源发生变化,导致数据出错
3、复制步骤
3.1 指定master
- 配置文件配置slaveof
- 从节点命令行执行slaveof命令
3.2 建立socket连接
- 从服务器根据配置或者命令行slaveof创建连向主服务器的socket
3.3发送ping命令:当连接创建后发送
- 通过ping命令检查socket的读写状态是否正常
- 检查主服务器能否正常处理命令请求
- 当从服务器不能在规定时间内得到ping的回复,则表示网络不正常,从服务器会断开socket并重新创建连接
- 如果从服务器收到主服务器返回一个错误信息,比如BUSY redis is busy runing a script,you can ...,则从服务器会断开连接并创新创建连接
- 如果从服务器收到的回应是“ PONG”,则表示一切正常,可以执行下一步流程
3.4 身份验证
- 如果从服务器设置了masterauth选项,则进行身份验证,否则不就行
- 通过向master发送美丽的auth来实现认证,比如auth passwd
- 当master没有设置requirepass时,会提示no passwd is set
- 如果master的设置与slave的密码不一样,则出现invalid password提示
3.5 发送端口
- 从服务器执行命令REPLCONF listen-port <port number>,向主服务器发送从服务器的命令监听端口
- 这个端口号是为了在master上执行info命令是,可以查看到从节点的端口信息
3.6 同步
- 主从服务器之间互为客户端,可以彼此发送命令和响应回应
3.7 命令传播
- 主服务器执行完成命令后发送给从服务器
3.8 配置说明
Paste_Image.png4. 复制
4.1 复制积压缓冲区(repl-backlog)
- 是一个固定长度的先进先出的队列,默认是1MB
- 当从节点连接上后,所有导致数据变更的命令完成后都会先进入缓冲队列,再传播给从节点
- 如何估算backlog的大小:second*write_size_second
- 每秒产生的数据量
- 最长等待从链接的时间 repl-timeout
- 算出来后,讲结果建议乘以2,更安全
4.2 如何判断是否增量同步
- 如果从传递过来的偏移量+1之后的数据还在缓冲去中,则执行增量同步,如果不在缓冲区中,则执行全量同步
- 当从节点连接时,发送过来的主的实例id与本机的不一样,则主机会做全量同步
- 每个redis实例启动后会生成一个实例标识
5. Redis高可用
5.1 高可用应该解决哪些问题
- 多个节点拥有相同的数据
- 当主节点宕机后,如何产生新的主节点
- 当主节点宕机后,从节点如何自动连接到新的主节点
- 如果判断主节点宕机
- 旧的主节点恢复后,如何处理
- 如何监控redis所有节点的监控状态
5.2 什么是哨兵(sentinel)
- 监控redis节点的健康状态
- 通知,把监控到的变化通知给相关系统或者redis实例,通过redis的订阅机制实现
- 自动热备(failover),主节点宕机---选举新的主节点
- 配置管理,redis实例可以通过sentinel获取到某些共享信息
- Sentinel本身也是分布式,解决了自身单点问题
Paste_Image.png6. Redis主从复制的配置过程
-
这里选择了两台服务器,一台IP是192.168.182.130,一台IP是192.168.182.128,130作为主服务器,128作为从服务器,首先找到从服务器的redis配置文件位置,我是以服务的方式安装,那么首先定位服务的文件位置在/etc/rc.d/init.d/redis(见截图):
Paste_Image.png -
找到/var/apps/redis/redis-3.2.5/6379.conf
Paste_Image.png - 打开/var/apps/redis/redis-3.2.5/6379.conf,找到slaveof 配置项目,修改为主服务器的ip和端口
[root@localhost redis-3.2.5]# vi /var/apps/redis/redis-3.2.5/6379.conf
Paste_Image.png
-
配置成功后,需要重启从服务器的redis服务
我们可以通过日志看到主从复制成功
Paste_Image.png
网友评论