简述:

        Redis是一种开源的缓存和数据存储系统,具有高性能、高可靠性和高可扩展性等特点。在实际应用中,为了提高Redis的可靠性和可用性,通常会采用主从复制和哨兵机制。

主从复制

主从复制是指将一个Redis数据库的数据自动同步到另一个Redis数据库的过程。其中,原始数据库称为主数据库,复制数据库称为从数据库。主从复制可以用于数据备份、读写负载均衡等场景。

1.准备:

环境:centos7 

前提:按照好了redis

测试:使用: ps -ef | grep redis

查看是否启动redis ,如果启动就需要去关闭redis。

第一种关闭:kill+端口号

第二种关闭:pkill+进程名称

2.描述当前文件:

这都是在安装redis后的,如果有什么问题可以去看redis的安装。

3.开始执行配置主从复制:

进入解压编译好的目录 

3.1删除appendonly.aofdump.rdb 

 rm -rf appendonly.aof dump.rdb

如果没有配置aof,就没有这个文件,只删除rdb文件就可以。(这个aof追加文件持久化方案,而rdb是默认的持久化方案默认存在)

因为:在Redis中,appendonly.aofdump.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自己做的

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐