主机数据更新后根据配置和策略,自动同步到备机的 master/slaver 机制。Master以写为主,Slave以读为主。
一主多从
尝试搭建一个 一主两从
步骤:
创建 /myredis
文件夹
复制 redis.conf
配置文件到文件夹中
配置 一主两从
,创建三个配置文件
redis6379.conf redis6380.conf redis6381.conf
在三个配置文件中写入内容
include /myredis/redis.conf pidfile /var/run/redis_6379.pid port 6379 dbfilename dump6379.rdb
将三个redis服务全部启动
查看三台主机运行情况,三个都是主机,没有主从效果
配置从机
# 成为某个实例的从服务器 slaveof <ip> <port> slaveof 127.0.0.1 6379
测试 主从复制
在主机中写操作,会自动复制一份到从机中去。
在从机中写操作,报错了。从机中只能做读操作。
开启三个服务 6379
, 6380
, 6381
,设置6379为主机,另外两个为从机。
假设6381从机宕机,这时候,6379主机新增数据,看看会发生什么?
结论:
当从机挂掉了,再重新启动从机后,从机并不能加入到原先的主从关系中,需要重新手动加入。当重新加入后,它会把主机中的数据从头完整地复制一遍到从机。
开启三个服务 6379
, 6380
, 6381
,设置6379为主机,另外两个为从机。
假设6379主机宕机,看看会发生什么?
一个主机只管理一个从机,其他小从机交给主机的直属从机管理。
附庸的附庸不是我的附庸
中途变更转向:会清除之前的数据,重新建立拷贝最新的
风险:一旦某个从机宕机了,后面的小从机都没办法备份主机的内容。
当一个主机宕机后,后面的从机可以立刻晋升为主机,其后面的小从机不用做任何修改。
可是现在只能手动 slaveof no one 让从机晋升为主机。若要让从机在主机宕机后自动晋升为主机,需要“哨兵模式”。
“反客为主”的自动版,能够后台监控主机是否故障,如果主机故障了可以根据投票数自动将从机转为主机。
步骤:
先调整为一主二仆模式
自定义的 /myredis
目录下新建 sentinel.conf
文件,名字绝对不能错误。
配置哨兵,填写内容
# 其中 mymaster 是为监控对象起的服务器名称(外号),1 是至少有多少个哨兵同意切换 sentinel monitor mymaster 127.0.0.1 6379 1
启动哨兵
当主机挂掉,从机选举中产生新的主机(要稍微等待一会儿,等待哨兵监测到,然后再次启动主机)
由于所有的写操作都是先在 主机 上操作,然后同步更新到 从机 上,所以从 主机 同步到 从机 上有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,从机 数量的增加也会使这个问题更加严重。
redis.conf
中默认:replica-priority 100
,值越小优先级越高在 vim 中,命令模式输入 ::set mu 开启行号
runid
连接池中修改部分内容。
参考资源: