1. 概念
主机数据更新后根据配置和策略,自动同步到备机的master/slaver 机制,Master以写为主,Slave以读为主。
2. 作用
<1>读写分离。性能扩展 <2>容灾快速恢复
3. 步骤
<1>创建/myredis 文件夹
<2>复制redis.conf 配置文件到文件夹中
<3>配置一主两从,创建三个配置文件
redis6397.conf redis6380.conf redis6381.conf
<4>在配置文件中写入内容
引入主配置文件 修改pidi文件 设置端口号 修改持久化文件名
<5>启动三台redis服务器
<6>查看三台服务器运行情况
info replication
<7>配从(库)不配主(库)
slaveof 成为某个实例的从服务器 将6380 和6381 作为6379的从服务器 从服务器: 主服务器:
<8>主服务器可以写,可以读
在主服务器上写: 在从服务器上读取主服务器的数据:
<9>从服务器只能读,不能写
4. 常见问题
<1> 一主两仆
- 当从服务器宕机重启之后,默认不再是从服务器, 而是作为一个主服务器,需要重新设置为从服务器,并且重新设为从服务器之后,会自动复制主服务器的数据到从服务器。
- 当主服务器宕机之后,从服务器依的设置不会改变,原地待命。主服务器重启之后,依旧能找到从服务器。
<2> 薪火相传
- 如果有一个主服务器,多个从服务器。进行链式同步。
缺点是如果中间的服务器宕机,则后边的服务器接收不到同步数据
2. 演示 127.0.0.1 6379 作为主服务器 127.0.0.1 6380 作为6379的从服务器 127.0.0.1 6381 作为6380的从服务器 特点和一主二仆一样
<3> 反客为主
-
当一个master服务器宕机之后,slave服务器立即成为master ,其后面的slave不用做任何修改。 -
使用slaveof no one命令,则可以将从服务器变为主服务器 -
自动检测,主服务器是否宕机,采用哨兵模式
5. 原理
- 当从服务器连接服务器之后,从服务器会向主服务器发送数据同步消息。
- 主服务器接到从服务器发送过来的同步请求,把主服务器数据进行持久化rdb文件,把rdb文件发送给从服务器。
- 每次主服务器每次进行写操作之后,和从服务器进行数据同步。
6. 哨兵模式
<1>. 介绍
反客为主的自动版,能够后台监控主服务器是否故障,如果故障了根据投票数自动将从转换为主。
<2> 步骤
1. 设置主从服务器
127.0.0.1 6379 作为主服务器 127.0.0.1 6380 作为6379的从服务器 127.0.0.1 6381 作为6379的从服务器
2. sentinel.conf 配置文件
名字不能错 在/myredis下新建sentinel.conf配置文件
3. 配置哨兵,填写内容
sentinel monitor mymaster 127.0.0.1 6379 1
mymaster 为监控对象的服务器名字,1 为至少有多少个哨兵同意迁移的数量
4. 启动哨兵
执行 redis-sentinel /myredis/sentinel.conf
5. 当master服务器宕机,slave 服务器中选举产生新的主机
<1>大概10秒左右可以看到哨兵窗口日志,切换了主机 <2>选举优先级别 : slave-priority <3>原主服务器重启后会变成从服务器
<3> 演示
第一步,将6379 shutdown 第二步:哨兵将打印信息 ,6379 宕机,将6380 作为新的主服务器 第三步:6379重新上线之后,会作为从服务器
<4>复制延迟
由于所有写操作都是先在master上操作,然后同步更新到slave上,所以从master同步到slave机器会有一定的延迟,当系统很繁忙的时候,延迟问题会更严重,slave机器数量的增加也会使这个问题更加严重。
<5> 故障恢复
优先级在redis.conf中默认:replice-priority 为100 ,值越小优先级越高 偏移量是指获取原主机数据最全的 每个redis实例启动后都会对其生成一个40位的runid
|