1.1. 是什么
主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主
1.2. 能干嘛
读写分离,性能扩展(主 写 从 读)
容灾快速恢复
3.3 主从复制
一主二仆
拷贝多个redis.conf文件include(写绝对路径)
开启daemonize yes
Pid文件名字pidfile
指定端口port
Log文件名字
dump.rdb名字dbfilename
Appendonly 改为no
注意:不能设置密码
6380 主
6381 6382 从
include /usr/redis/bin/redis.conf
port 6380
dbfilename dump_6380.rdb
appendfilename "appendonly_6380.aof"
pidfile /var/run/redis_6380.pid
daemonize yes
6381 和6382 只需要将上面文件中的6380 替换成对用的端口号即可
启动后看到原始都是主机无从机
主机无需配置
从机配置
slaveof <ip><port>
slaveof 127.0.0.1 6380
主机宕机 重启即可 一切恢复
从机宕机 重新设置对应主机是谁
薪火相传
上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险。
用 slaveof <ip><port>
中途变更转向:会清除之前的数据,重新建立拷贝最新的
风险是一旦某个slave宕机,后面的slave都没法备份
主机挂了,从机还是从机,无法写数据了
反客为主
当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。
用 slaveof no one 将从机变为主机。
手动版
哨兵模式(sentinel)
反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
调整为一主二仆模式,6379带着6380、6381
编写一个sentinel.conf
sentinel monitor mymaster 127.0.0.1 6380 1
./redis-sentinel sentinel.conf
- 检测
关掉6380
主机会自动切换 6382 成功
- replica-priority : 100 越小优先级越高
- 偏移量: 拿到主机的数据比较全
- Runid : redis自动生成的40 的uuid 小的