Redis主从复制、哨兵机制
Redis是一种开源的缓存和数据存储系统,具有高性能、高可靠性和高可扩展性等特点。在实际应用中,为了提高Redis的可靠性和可用性,通常会采用主从复制和哨兵机制。
简述:
Redis是一种开源的缓存和数据存储系统,具有高性能、高可靠性和高可扩展性等特点。在实际应用中,为了提高Redis的可靠性和可用性,通常会采用主从复制和哨兵机制。
主从复制
主从复制是指将一个Redis数据库的数据自动同步到另一个Redis数据库的过程。其中,原始数据库称为主数据库,复制数据库称为从数据库。主从复制可以用于数据备份、读写负载均衡等场景。
1.准备:
环境:centos7
前提:按照好了redis
测试:使用: ps -ef | grep redis
查看是否启动redis ,如果启动就需要去关闭redis。
第一种关闭:kill+端口号
第二种关闭:pkill+进程名称
2.描述当前文件:
这都是在安装redis后的,如果有什么问题可以去看redis的安装。
3.开始执行配置主从复制:
进入解压编译好的目录
3.1删除appendonly.aof和dump.rdb
rm -rf appendonly.aof dump.rdb
如果没有配置aof,就没有这个文件,只删除rdb文件就可以。(这个aof追加文件持久化方案,而rdb是默认的持久化方案默认存在)
因为:在Redis中,appendonly.aof和dump.rdb是持久化数据的文件。删除appendonly.aof和dump.rdb文件是为了避免数据出现冲突或不一致的问题,以确保主从复制或故障转移的正常进行。
3.2复制多个redis
实现主从复制(这里主机1个从机2个,我不打算修改原本的bin, 所以我直接把bin拷贝成3份bin-z
bin-c bin-c1 z代表主机 c和c1代表从机)
cp -r ./bin ./bin-z
cp -r ./bin ./bin-c
cp -r ./bin ./bin-c1
3.3修改redis.conf
前提是我在配置redis时就以经修改过一次,这是配置
3.3.1主机:
cd bin-z
vi redis.conf
修改如下:
bind 0.0.0.0
requirepass "123456"
解释:
bind 0.0.0.0 //第69行,设置监听地址。0.0.0.0表示监听所有地址
requirepass 123456 //第507行,设置认证密码
3.3.2从机1
cd bin-c
vi redis.conf
修改如下:
bind 0.0.0.0
requirepass 123456
port 6380
解释:
bind 0.0.0.0 //第69行,设置监听地址。0.0.0.0表示监听所有地址
requirepass 123456 //第507行,设置认证密码
replicaof 192.168.9.23 6379 //从服务器要复制的主服务器的 IP 地址和端口号。
port 6381 //修改端防止冲突
( 解释一下我们为什么需要修改这个端口,当前的我们都是在同一个centos7上做的主从复制,所以我没有设置从机ip我们都使用的是192.168.9.23,所以我们端口就不可以重复。
当我们不是在通一个主机上部署主从分类时我们就可以咋多加一个ip设置或者链接池,这样就无需在改端口号了,单是最好的建议是不同主机地址不同端口号是最好的)
3.3.3从机2
cd bin-c1
vi redis.conf
修改如下:
bind 0.0.0.0
requirepass 123456
port 6381
解释:
bind 0.0.0.0 //第69行,设置监听地址。0.0.0.0表示监听所有地址
requirepass 123456 //第507行,设置认证密码
replicaof 192.168.9.23 6379 //从服务器要复制的主服务器的 IP 地址和端口号。
port 6381 //修改端防止冲突
4启动测试redis的主从复制
启动主机和从机:
cd bin-z
ls
./redis-server ./redis.conf
cd ../bin-c
ls
./redis-server ./redis.conf
cd ../bin-c1
ls
./redis-server ./redis.conf
ps -ef | grep redis
主机:
我们在查看配置同时也写入一个String类型的数据到rdeis数据库看看从机是否可以取出数据
./redis-cli -p 6379
auth 123456
info replication //Redis命令,用于获取关于主从复制的信息
set zgl_hxr xx //这个设置一个String类型数据 set是设置 后面 是key 和 vlue
get zgl_hxr //这是获取更具 key只获取对应存储的 vlue值
exit
从机1:
./redis-cli -p 6380
info replication //Redis命令,用于获取关于主从复制的信息
get zgl_hxr //这是获取更具 key只获取对应存储的 vlue值
exit
这样主从复制就配置好了。
总结一下:
1.在安装号redis基础上,同时需要注意。关闭redis,删除redis中bin目录下的持久化数据文件
2.复制redis的bin目录,复制多个分别做主机 从机1 和从机2
3.修改 主机 从机1 从机2 的 redis.conf 文件
主机需要 设置设置认证密码 和监听地址
从机和主机一样,但多一个端口修改 port 6380 从机1 和 port 6381 从机2
4.顺序启动 先启动主机redis 后启动从机redis
5。测试验证 info replication //Redis命令,用于获取关于主从复制的信息
哨兵机制:
在主从复制基础上进行的。
同样的配方:关闭redis,删除redis中bin目录下的持久化数据文件
但是这一次是配置的sentinel.conf
我们去redis的解压包下拷贝一个到主机和从机
修改sentinel.conf拷贝到一个到主机和两个从机
需要修改这
port 63791 其他两个从机是63801 和63811其他配置一模一样
daemonize yes
sentinel monitor mymaster 192.168.9.23 6379 2
sentinel down-after-milliseconds mymaster 1000
sentinel auth-pass mymaster 123456
分别启动主机和从机
./redis-server ./redis.conf
./redis-server ./sentinel.conf --sentinel
ps -ef | grep redis
主从都去启动
ps -ef | grep redis
查看当前的进程
./redis-cli -p 63791
info sentinel
杀死主机进程
杀单给kill 加端口
根据名称杀 pkill +名称
我们根据端口杀单个
Kill 51786 (这个看你自己的端口)
当我们杀死 6379进程时,哨兵机制在我们定义的时间(我定义1s触发)就触发了。
在进去查看就可以看见现在主机是6381了(这个是选举的有规律的,我们没有定义sentinel根据规则自己选举)
我们发现配置文件也进行了修改这是sentinel自己做的
更多推荐
所有评论(0)