redis一主多从,主从复制与哨兵模式
## 搭建一主多从
这里我们以三台机器为例其中一台为主机(Master)另两台为从机().
首先再linux的家目录下创建一个名为myredis的文件(啥名都行)
确认好创建成功文件,再将redis.conf文件拷贝到当前目录下并且查看是否成功
cp /etc/redis.conf /myredis/redis.conf
ls
由于配置的是一主两从所以需要三个配置文件并且配置好里面得内容
vi redis6379.conf
vi redis6380.conf
vi redis6381.conf
在这里解释一下每一行的意义
第一行是引入公共部分
第二行是写pid的文件位置
第三行声明端口号
第四行声明rdb文件名称
在这里我们可以用文件复制命令将后面的文件复制出来
cp redis6379.conf redis6380.conf
cp redis6379.conf redis6381.conf
进入文件中改掉里面得配置,把数字改成跟文件名的数字一样(这样说通俗)
在完成以上操作的时候就启动三个redis
我们可以看到已经启动了
tip:如果之前启动了redis的先要杀掉后台
kill -9 进程号
所谓主从主从那么就是既要有主机又要有从机嘛!为了方便这里启动三个会话端并且通过端口号登录
先查看当前会话看看谁是主谁是从
info replication
可以看到三个会话端都为master节点
现在就可以来配置一主二仆,我们把6379作为主机其他两个作为从机
再两个从机配置:slaveof 127.0.0.1 6379
可以看到再6379端口下面有两个从机
在这里就有点像我们的读写分离(其实就是) 一切写的操作都在主机上,从库只负责读
验证:在主机里面执行写操作
在从机里面拿
在从机里面是不是只能执行读操作呢?哎,就不信。我偏要执行写操作!
事实证明在从机里面是不能执行写操作的 read only 只读
## 主从复制
- 一主两从特点
在当前的三台redis中 我们选择性的宕掉其中的一个从节点比如说6380
在这里的问题是我像主机中在添加一个k 当我重新把6380节点启动的时候他是否还能获取到最新的主机的信息呢或者说他还是不是从机?
当我们在重新启动的时候他已经不在是从机了而是变为了一个主机!这时候只需要重新配置即可 slaveof 127.0.0.1 6379
而且当我们重新启动6380的时候他还会自动的去取得主机的信息
总结:配置的一主二仆,当其中的一个从节点挂掉再次启动时他不再是从节点,当重新配置好后他会从头到位的把主机的数据重新拷一份!
上面都在讨论从机挂掉的情况,那么主机宕掉会怎么样呢?
哎!看到即使大哥挂了,两个小弟任然认作6379为大哥!当大哥启动的时候还是你大哥
- 主从复制原理
1.当从服务器连接上主机的时候他会很主动的去发送请求同步的消息
2.主服务器接收到消息后会把数据持久化到rdb文件,在把rdb文件发回从服务器然后从服务器进行读取
3.在每次主服务器进行写操作的时候都会与从服务器进行消息同步。特别注意的是,只有从服务器在第一次连上主机的时候才会发送消息此后都是主机主动的去同步消息
## 薪火相传
根据字面意思其实也可以理解,就是当主机管理不过来那么多从机的时候这时候我们就可以把下面的从机也变为主机从而来进行分摊管理!就这样主机始终只管理上面的两台从机即可,但是这样也会有缺点,由于主机只同步图中的两个从服务器那么如果其中一个从服务器挂掉之后下面的所有服务器都没有办法在同步主机的数据了!
至于其他的特点与一主多仆相似
至于反客为主就是将从机变为主机 只需要配置slaveof no one 即可
## 哨兵模式
在上面我们最后提到了反客为主,但那也是手动的!试想一下如果在公司里主机半夜宕掉了谁去手动的去启动他呢?那么这里就引入了哨兵模式也就是反客为主的自动版
配置哨兵模式
1.进入myredis文件夹下创建sentinel.conf
vi sentinel.conf 在里面配置如下
sentinel·:哨兵
monitor:监控
mymaster:被监控主机的名称
1:表示哨兵同意迁移的数量 如果是2 就表示两个哨兵爹同意了才可以进行主机的迁移
启动哨兵: redis-sentinel sentinel.conf(前台启动)
演示哨兵模式
为了演示其中的效果,我们现在将主机宕掉,在宕掉主机之后可以看到哨兵选取了6380作为主机
那么此时呢原来的6379 就作为了从机并且是宕机的状态 6381 仍然为从机
说这么多始终是要了解哨兵的选举机制的
哨兵选举机制
1.选择优先级靠前的
这个配置默认值为100 值越小优先级越高
2.偏移量最大的优先
就是说谁和主机同步的数据最高谁就优先级高,如果同步的数量一样呢?
那么就选着runid最小的从机
runid:每个redis启动后都会随机生成一个40位的runid
总结:当我们配置了哨兵的时候就可以去监控主机,主机宕掉的时候,哨兵回去选取从机作为新的主机。一旦新的主机确定后哨兵就会像其他的从机发送群命令告诉他们当前被选举出来的才是主机。此时原来的主机上线后 就变为了从机也就是说你不再是主机了!!!!!
好了,就到这里吧!!!下期更新redis集群部署!!!