Redis主从复制

目录

一、主从复制

1. 是什么

2. 能干嘛

二、配置主从复制

1. 一主二仆

1.1 先创建三个redis.conf文件

1.2 把文件移动到其他目录方便操作

1.3 对文件进行编辑

1.4 启动三台redis服务器

1.5 查看三台服务器的运行情况

三、复制原理

薪火相传

反客为主

哨兵模式(sentinel)

配置哨兵,填写内容

启动哨兵


一、主从复制

1. 是什么

        主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

2. 能干嘛

读写分离,性能扩展(主 写 从 读)

容灾快速恢复

Redis主从复制_第1张图片

二、配置主从复制

1. 一主二仆

1.1 先创建三个redis.conf文件

1.2 把文件移动到其他目录方便操作

在/usr下面创建一个mysredis的文件夹然后把创建的文件移动过去

1.3 对文件进行编辑

注意:不能设置密码

首先,找到redis.conf的路径

然后对新创建的文件进行编辑

Redis主从复制_第2张图片

Redis主从复制_第3张图片

其余两个文件也是一样的操作

1.4 启动三台redis服务器

1.5 查看三台服务器的运行情况

连接客户端 :./redis-cli -p xxx(端口号)

查看运行 状态:info replication

Redis主从复制_第4张图片

另一个从也是如此

Redis主从复制_第5张图片

主机

Redis主从复制_第6张图片

在主机上写,在从机上可以读取数据

主机挂掉,重启就行,一切如初

从机重启需重设:slaveof  (ip)(port) 

三、复制原理

  • Slave启动成功连接到master后会发送一个sync命令
  • Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
  • 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
  • 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
  • 但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

薪火相传

上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险。

用 slaveof

中途变更转向:会清除之前的数据,重新建立拷贝最新的

风险是一旦某个slave宕机,后面的slave都没法备份

主机挂了,从机还是从机,无法写数据了

反客为主

当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。

用 slaveof no one 将从机变为主机。

Redis主从复制_第7张图片

哨兵模式(sentinel)

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

Redis主从复制_第8张图片

调整为一主二仆模式,6380带着6381、6382

自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错

配置哨兵,填写内容

sentinel monitor mymaster 127.0.0.1(主ip) 6380(主端口号) 1

Redis主从复制_第9张图片

其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量。

启动哨兵

执行/usr/local/redis/bin/redis-sentinel /usr/myredis/sentinel.conf

当主机挂掉,从机选举中产生新的主机

(大概10秒左右可以看到哨兵窗口日志,切换了新的主机)

哪个从机会被选举为主机呢?根据优先级别:replica-priority

原主机重启后会变为从机。

Redis主从复制_第10张图片

优先级在redis.conf中默认:replica-priority 100,值越小优先级越高

偏移量是指获得原主机数据最全的

每个redis实例启动后都会随机生成一个40位的runid

你可能感兴趣的:(redis,数据库,缓存)