集群搭建
配置
复制多个配置文件
- 更改端口号
- pid名字
pidfile /var/run/redis_6379.pid
- log文件名
logfile
- dump.rdb文件名
dbfilename dump6379.rdb
一主二从
默认情况下,每台Redis服务器都是主节点 ; 我们一般情况下只用配置从机就好了!
认老大! 一主 (79)二从(80,81)
使用在客户端里使用命令slaveof host post
host为主机地址,post为主机端口号
配置完后可以使用info replication
查看主从机
1 | 127.0.0.1:6379> info replication |
配置文件配置:replicaof <masterip> <masterport>
如果主机有密码:masterauth <master-password>
配置完后,主机可以读写,从机只能读(redis已经默认帮我们配置好了)
1
2 127.0.0.1:6381> set k2 v2
(error) READONLY You can't write against a read only replica.
测试
主机宕机后又恢复连接,再次set值时,从机能获取吗,可以
reids的高可用性质
测试:主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依 旧可以直接获取到主机写的信息! 如果是使用命令行,来配置的主从,这个时候如果重启了,就会变回主机!只要变为从机,立马就会从 主机中获取值!
- 如果使用命令配置的主从,从机重启后会变回主机,只要便会从机数据会立马复制回来
复制原理
Slave 启动成功连接到 master 后会发送一个sync同步命令
Master 接到命令启动后台的存盘进程(RDB),同时收集所有接收到的用于修改数据集命令,在后台进程执行 完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。
全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
增量复制:Master 继续将新的所有收集到的修改命令依次传给slave,完成同步
但是只要是重新连接master,一次完全同步(全量复制)将被自动执行! 我们的数据一定可以在从机中 看到!
从机自己想当老大
slaveof no one
哨兵模式配置
1 | vim sentinel.conf |
后面的这个数字1,代表主机挂了,slave投票看让谁接替成为主机,票数最多的,就会成为主机!
当主机挂掉后,会选举一个从机为主机
主机回来后,也会变成从机
注意事项
- redis配置文件中 protected-mode yes 修改为 no
- 哨兵配置文件中
sentinel monitor myredis 127.0.0.1 6379 1
host应该会服务器的ip地址