zoukankan      html  css  js  c++  java
  • redis主从复制与哨兵高可用

    redis主从复制

    话不多说,直接看案例:

    1. 环境准备,

      主从规划
      主节点:6380
      从节点:6381、6382
      
    • 运行3个redis数据库,达到 1主 2从的配置

      #主库  6379.conf 
      	port 6379
      	daemonize yes
      	pidfile /data/6379/redis.pid
      	loglevel notice
      	logfile "/data/6379/redis.log"
      	dbfilename dump.rdb
      	dir /data/6379
      
      #从库 6380
      	port 6380
      	daemonize yes
      	pidfile /data/6380/redis.pid
      	loglevel notice
      	logfile "/data/6380/redis.log"
      	dbfilename dump.rdb
      	dir /data/6380
      	slaveof  127.0.0.1  6379 
      	
      	
      	
      #从库 6381  
      	port 6381
      	daemonize yes
      	pidfile /data/6381/redis.pid
      	loglevel notice
      	logfile "/data/6381/redis.log"
      	dbfilename dump.rdb
      	dir /data/6381
      	slaveof  127.0.0.1  6379 
      
    1. 开启主从复制功能

      edis-cli info #查看数据库信息
      redis-cli info replication

    • 在6380 和6381数据库上 ,配置主从信息,通过参数形式修改配置,临时生效,注意要写入配置文件

      redis-cli -p 6380 slaveof 127.0.0.1 6379
      redis-cli -p 6381 slaveof 127.0.0.1 6379
      
    1. 模拟主从复制故障,手动切换master-slave身份

                  1.杀死6379进程 ,干掉主库 
      
                  2.手动切换 6381为新的主库,需要先关闭它的从库身份
                  redis-cli -p 6381  slaveof no one 
      
                  3.修改6380的新主库是 6381
                  redis-cli -p 6380 slaveof  127.0.0.1 6381
      

    哨兵高可用

    • redis-sentinel功能
    1. 环境准备

      • 三个redis数据库实例 ,配置好 1主 2从的配置
      #1
      6379.conf
      port 6379
      daemonize yes
      logfile "6379.log"
      dbfilename "dump-6379.rdb"
      dir "/var/redis/data/"
      #2
      6380.conf 
      port 6380
      daemonize yes
      logfile "6380.log"
      dbfilename "dump-6380.rdb"
      dir "/var/redis/data/"
      slaveof 127.0.0.1 6379
      #3
      6381.conf 
      port 6381
      daemonize yes
      logfile "6381.log"
      dbfilename "dump-6381.rdb"
      dir "/var/redis/data/"
      slaveof 127.0.0.1 6379
      
      
      • 三个redis哨兵进程,指定好,检测着谁,也是准备三个配置文件,内容如下
      sentinel-26379.conf  
      port 26379  
      dir /var/redis/data/
      logfile "26379.log"
      
      // 当前Sentinel节点监控 192.168.182.130:6379 这个主节点
      // 2代表判断主节点失败至少需要2个Sentinel节点节点同意
      // mymaster是主节点的别名
          sentinel monitor s21ms  0.0.0.0 6379 2
      
      //每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒30s且没有回复,则判定不可达
          sentinel down-after-milliseconds s21ms  20000
      
      //当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,
          原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1
          sentinel parallel-syncs mymaster 1
      
      //故障转移超时时间为180000毫秒
          sentinel failover-timeout mymaster 180000
      
      
          #三个哨兵的配置文件,一模一样,仅仅是端口的区别  
          #三个哨兵的配置文件,一模一样,仅仅是端口的区别  
          #三个哨兵的配置文件,一模一样,仅仅是端口的区别  
          sentinel-26380.conf  
      
      	#三个哨兵的配置文件,一模一样,仅仅是端口的区别 
          sentinel-26381.conf  
      
    2. 分别启动 三个redis数据库, 以及三个 哨兵进程 ,

      • 注意 ,哨兵第一次启动后,会修改配置文件,如果错了,得删除配置文件,重新写
      #配置文件在这里
      # 1
      	sentinel-26379.conf 
      	port 26379  
      	dir /var/redis/data/
      	logfile "26379.log"
      	sentinel monitor s21ms  127.0.0.1  6379 2
      	sentinel down-after-milliseconds s21ms  20000
      	sentinel parallel-syncs s21ms 1
      	sentinel failover-timeout s21ms 180000
      	#加一个后台运行
      	daemonize yes 
      
      #2
      #仅仅是端口的不同
      	sentinel-26380.conf 
      #3
      	sentinel-26381.conf 
      
      • 启动哨兵
      redis-sentinel sentinel-26379.conf 
      redis-sentinel sentinel-26380.conf 
      redis-sentinel sentinel-26381.conf 
      
    3. 验证哨兵是否正常

      redis-cli -p 26379 info sentinel
      
      # 正常结果master0:name=s21ms,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
      
    4. 干掉主库 ,检查主从切换状态

      kill -9 12749
      ps -ef|grep redis
      redis-cli -p 6380 info replication
      redis-cli -p 6381 info replication
      redis-cli -p 6380 info replication
      redis-cli -p 6381 info replication
      
    5. 如果从库变成了主库,那么你就已经完成了,哨兵高可用配置

  • 相关阅读:
    datatable一些用法续
    验证视图状态MAC失败
    datatable应用select方法后变成行数组的问题的解决
    [jQuery] html中两个select之间option元素的add与remove,多值上传
    [VBS] 使用vbs文件保证程序运行,并模拟键盘回车键
    [jQuery] 为table各行添加不同颜色的class
    [转]谈谈个人网站建设和经营
    [jQuery] jquery如何reset表单(form)
    兼容Firefox IE Chrome的onkeydown事件处理方法
    [bat] 使用bat文件保证指定程序运行
  • 原文地址:https://www.cnblogs.com/bigox/p/11677534.html
Copyright © 2011-2022 走看看