Redis的复制
1.Redis的复制是什么
是主从复制,主机数据更新后根据配置和策略,自动同步到背脊的Master/Slave机制,Master负责写,Slave负责读。
2.作用
1)读写分离
2)容灾恢复
3.如何实现
1)配从(库)不配主(库)
2)从库配置:slaveof 主库IP 主库端口
每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件
使用Info replication命令
3)修改配置文件
1.copy对个redis.cnf文件
2.开启daemonize yes
3.Log文件名字
4.Dump.rdb名字
4.常用模式
4.1 一主二仆
1.init
2.一个Master两个Slave
3.日志查看
1)主机日志
2)从机日志
3)主从问题演示
1 切入点问题?slave1、slave2是从头开始复制还是从切入点开始复制?比如从k4进来,那之前的123是否也可以复制
是从之前的123复制开始
2 从机是否可以写?set可否?
3 主机shutdown后情况如何?从机是上位还是原地待命
4 主机又回来了后,主机新增记录,从机还能否顺利复制?
5 其中一台从机down后情况如何?依照原有它能跟上大部队吗?
4.2 薪火相传
1)是什么
上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力
2)在一主二仆的基础上实现薪火相传
4.3 反客为主
5.复制的原理
1.Slave启动成功连接到master后会发送一个sync命令
2.Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
3.但是只要是重新连接master,一次完全同步(全量复制)将被自动执行
4.全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
5.增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
6.哨兵模式
6.1是什么
反客为主的升级版,后台监控主机,当主即宕机是,根据投票数自动将从机转换为主机
6.2如何实现
1)创建一主二仆
6.3 在myredis目录下新建sentinel.conf文件,名字绝不能错
1)配置哨兵,填写内容
sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1
6.4 启动哨兵
6.5 原有的master挂了
6.6 问题:如果之前的master重启回来,会不会双master冲突?
7.复制的缺点
由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。
8.外部连接linux上的redis
执行:
1)/etc/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT 开启6379端口
2)/etc/rc.d/init.d/iptables save 保存端口
3)/etc/init.d/iptables restart 重新启动防火墙
4)/etc/init.d/iptables status 查看防火墙