Redis主从复制和集群配置

Redis主从复制和集群配置

  1. redis主从复制是什么
    主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master(主)以写为主,Slave(仆)以读为主。

  2. redis主从复制能干嘛

    1. 实现读写分离,性能的扩展
    2. 容灾快速恢复
  3. 主从复制的示例图
    在这里插入图片描述

  4. 主从复制怎么配置

    1. 把redis进行解压

    2. 进入到redis 的目录下 ,执行 make 命令进行编译。
      > 可能报错 :如果没有准备好 C语言的编译环境 ,make会报错 ,
      > : 报错信息 : -Jemalloc / jemalloc.h: 没有这个文件
      > 解决方案 : 先执行命令 gcc --version 检查是否安装了 gcc 是否安装成功 ,如果没有安装 执行命令 yum install gcc , 再执行命令运行 make distclean ,清除之间编译的文件 ,再次执行 make

    3. 没有报错 ,编译好后 执行命令进行安装 make install , 安装成功后 默认会安装在 /usr/local/bin目录下。
      - 安装好后 查看 /usr/local/bin 下有的默认文件(如下):
      >redis-benchmark : 性能测试工具 ,可以再自己本子上运行 ,看自己的笔记本性能怎么样
      >redis-check-aof : 修复有问题的AOF文件
      >redis-check-dump : 修复有问题的dump.rdb文件
      >redis-sentinel: Redis集群使用
      >redis-server: Redis服务启动命令
      >redis-cli :客户端 ,操作入口

搭建集群

  1. 复制安装目录下的redis.conf文件做备份到/etc/redis文件夹下(没有该文件夹就创建)。
  2. 先修改里面的配置文件,把appendonly关掉,开启daemonize yes(后台启动)。
  3. 创建文件redis6379.conf(文件名字自己取,最好是按照规则来)。
  4. 往redis6379.conf配置文件中写入配置文件
include /etc/redis/redis.conf  #这个是引入redis的那个配置文件 
pidfile /var/run/redis_6379.pid # 指定启动进程
port 6379 # 设置端口号
dbfilename dump6379.rdb # 数据存储
logfile "6379.log" # 日志输出
  1. 同样的配置文件复制2份(此处配置一主两从,所以需要三个配置文件),并且修改里面的配置信息
    5.1. 比如创建redis6380.conf,然后里面的配置文件修改成
include /etc/redis/redis.conf  #这个是引入redis的那个配置文件 
pidfile /var/run/redis_6380.pid # 指定启动进程
port 6380 # 设置端口号
dbfilename dump80.rdb # 数据存储
logfile "6380.log" # 日志输出
  1. 然后再当前目录下分别启动3台redis:
    命令: redis-server redis6379.conf
    redis-server redis6380.conf
    redis-server redis6381.conf

  2. 然后使用分别命令启动客户端连接redis服务端:
    redis-cli -p 6379 # -p 是指定端口号
    redis-cli -p 6380
    redis-cli -p 6381

  3. 再客户端使用命令 : info replication 查看主从复制的相关信息

  4. 再redis6380和redis6381客户端分别使用命令 slaveof host port 指定他的主机是谁

	# 这里配置 127.0.0.1 ,因为是当前本机的redis,所以使用127.0.0.1 指定6379端口的主机为主机(master)
	slaveof 127.0.0.1 6379
  1. 再次使用命令 info replication 就可以看到6380和6381变成了从机,而且6379端口显示的是自己有两个从机。

注意点

  1. 如果redis设置了密码的话,如果光按照上面的操作,会发现redis6379显示没有从机,所以设置了密码的话需要在redis6380.conf和redis6381.conf的配置文件中添加配置
masterauth 123456  # 这里的123456就是你redis里面的设置的密码

  1. 配置了主从复制之后,主机可以进行读和写操作,但是从机只能执行读的操作,如果在从机中进行写的操作就会报错,报错信息如下:
(error) READONLY You can't write against a read only replica.
  1. 如果当主机宕机了,配置的从机不会主动顶上去变成主机,他还是从机,当主机重启之后,之前的这台主机的从机也还是不会变,这是就不能进行写的操作,但是可以读。
  2. 如果当从机宕机了,重启之后,他会变成单独的主机,不会变成从机,需要再次执行命令 slaveof host port 再次指定主机是谁。
  3. 当从机宕机之后,然后这时主机插入了数据,当从机指定了主机,数据还是会同步到从机中去。
  4. 我们可以配置哨兵模式,当主机宕机的时候,从机自动顶上去变成主机:
    哨兵模式的配置:
    1. 在当前文件夹下创建一个sentinel.conf 配置文件(这个名字不能错)
    2. 在sentinel.conf 配置文件中编写配置
 # mymaster  这个名字可以自己取,为监控对象起的服务器名称
 # 127.0.0.1 6379 这个是主机所在的IP和对应的端口
 # 1 为至少有多少个哨兵同意迁移的数量
sentinel monitor mymaster 127.0.0.1 6379 1
	3. 启动哨兵  redis-sentinel  /etc/redis/sentinel.conf  就可以自动替代主机了。

redis的集群配置(无中心化集群配置)

注意:如果我们要搭建一个主从集群,那我们就至少搭建3个master主节点,3个slave节点,因为在redis的集群中如果想要提供服务的话就必须要有超过一半的master能够正常使用,如果允许n台master节点可以宕机的话,那公式就是2n + 1 个master,需要搭建这么多的master节点,所以我们这里搭建的是3个master节点,3个slave节点。

  1. 还是像上面一样复制redis.conf这个文件做备份到/etc/redis文件夹下(没有就创建)。
  2. 还是需要创建redis6379.conf,80,81,89,90,91文件
    在这里插入图片描述
  3. 并且里面的配置为:
include /etc/redis/redis.conf  # 这个是安装的redis之前的redis.conf备份文件
pidfile /var/run/redis_6379.pid # 指定进程
port 6379 # 指定端口
dbfilename dump6379.rdb 指定存储文件
logfile "6379.log" # 指定日志
cluster-enabled yes #指定开启集群模式
cluster-config-file nodes-6379.conf # 指定节点配置文件名
cluster-node-timeout 15000 # 设置连接超时时间(毫秒),超过这时间就自动的进行主从切换
masterauth 123456 # 这个是我的redis设置了密码,要加这个,如果redis没有设置密码就不需要加这个

  1. 按照上面6379的配置文件复制5份,然后修改里面的对应的端口号和名字。

  2. 然后分别启动这6个节点,例如:redis-server redis6379.conf

  3. 然后发现在当前文件夹下会产生对应的文件,如下:
    在这里插入图片描述

  4. 然后进行你安装redis的目录,进入src下面,我的在/opt/redis/src,里面有一个redis-cli脚本,执行脚本
    在这里插入图片描述

 # 注意这里必须使用自己机器的真实IP
 # 这个 1 代表使用最简单的默认进行主从分配,一台主机,一台从机
 # -a 123456 是因为我redis设置了密码,所以需要,如果没有设置,就不需要加这个
 # 当执行这命令之后,后面会提示是否继续,这里需要输入 yes ,不能输入 y(必须输入yes,代表继续)
 #  --cluster-replicas 1 表示我们希望为集群中的每个主节点创建一个从节点
redis-cli --cluster create --cluster-replicas 1 192.168.26.131:6379 192.168.26.131:6380 192.168.26.131:6381 192.168.26.131:6389 192.168.26.131:6390 192.168.26.131:6391 -a 123456
  1. 然后执行命令 redis-cli -p 6379 -c -a 123456 ,因为我设置了密码所以需要加 -a 123456,redis没有设置密码就不需要加这个参数,-c 代表的是采用集群策略连接,设置数据会自动切换到相应的写主机。
  2. 输入命令: cluster nodes 可以查看所有的节点,集群信息
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值