首页 > 数据库 >redis 主从复制

redis 主从复制

时间:2022-10-07 06:44:43浏览次数:48  
标签:脚本 主从复制 failover redis 6379 master sentinel

redis 主从配置

  1. 只需要配置从库,redis 默认本身是主库

  2. 查看当前库的信息

    > info replication # 查看当前库的信息
    # Replication
    role:master # 角色
    connected_slaves:0 # 没有节点
    master_failover_state:no-failover
    master_replid:b1dc0c394597c6f157edc3c279a58fb12ed26238
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    
  3. 编辑 redis.conf -> 6379.conf,6380.conf...

    # 配置第一个库
    port 6379
    daemonize yes
    pidfile /var/run/redis_6379.pid
    logfile "6379.log"
    dbfilename dump6379.rdb
    
    # 配置第二个库
    port 6380
    daemonize yes
    pidfile /var/run/redis_6380.pid
    logfile "6380.log"
    dbfilename dump6380.rdb
    
  4. 重启不同的服务

    image

  5. 命令配置从机 6380 7381(redis 默认本身是主库)

    配置从机 slaveof 127.0.0.1 6379

    image

    查看主机是否配置成功

    image

  6. 文件配置

    # replicaof <masterip> <masterport>
    # 主机ip:192.168.31.1
    # 主机端口:6379
    
    # 配置 6380
    replicaof 192.168.31.1 6379
    # 如果主机存在密码配置主机密码
    # masterauth <master-password>
    
    # 配置 6381
    replicaof 192.168.31.1 6379
    ...
    
  7. 主机断了,slaveo no one 从换主

    image

  8. 哨兵模式

    单哨兵

    image

    多哨兵

    image

配置哨兵模式

# 文件名相同
vim sentinel.conf

# 文件内容
# sentinel monitor 监控名称 端口 1
sentinel monitor myredis 127.0.0.1 6379 1

启动哨兵

redis-sentinel /usr/local/config/sentinel.conf

image

image

image

完整的哨兵模式配置文件 sentinel.conf

# Example sentinel.conf
 
# 哨兵sentinel实例运行的端口 默认26379
port 26379
 
# 哨兵sentinel的工作目录
dir /tmp
 
# 哨兵sentinel监控的redis主节点的 ip port 
# master-name  可以自己命名的主节点名字 只能由字母A-z、数字0-9 、这三个字符".-_"组成。
# quorum 当这些quorum个数sentinel哨兵认为master主节点失联 那么这时 客观上认为主节点失联了
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
sentinel monitor mymaster 127.0.0.1 6379 1
 
# 当在Redis实例中开启了requirepass foobared 授权密码 这样所有连接Redis实例的客户端都要提供密码
# 设置哨兵sentinel 连接主从的密码 注意必须为主从设置一样的验证密码
# sentinel auth-pass <master-name> <password>
sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
 
 
# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
# sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds mymaster 30000
 
# 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,
这个数字越小,完成failover所需的时间就越长,
但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。
可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。
# sentinel parallel-syncs <master-name> <numslaves>
sentinel parallel-syncs mymaster 1
 
 
 
# 故障转移的超时时间 failover-timeout 可以用在以下这些方面: 
#1. 同一个sentinel对同一个master两次failover之间的间隔时间。
#2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
#3.当想要取消一个正在进行的failover所需要的时间。  
#4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了
# 默认三分钟
# sentinel failover-timeout <master-name> <milliseconds>
sentinel failover-timeout mymaster 180000
 
# SCRIPTS EXECUTION
 
#配置当某一事件发生时所需要执行的脚本,可以通过脚本来通知管理员,例如当系统运行不正常时发邮件通知相关人员。
#对于脚本的运行结果有以下规则:
#若脚本执行后返回1,那么该脚本稍后将会被再次执行,重复次数目前默认为10
#若脚本执行后返回2,或者比2更高的一个返回值,脚本将不会重复执行。
#如果脚本在执行过程中由于收到系统中断信号被终止了,则同返回值为1时的行为相同。
#一个脚本的最大执行时间为60s,如果超过这个时间,脚本将会被一个SIGKILL信号终止,之后重新执行。
 
#通知型脚本:当sentinel有任何警告级别的事件发生时(比如说redis实例的主观失效和客观失效等等),将会去调用这个脚本,
#这时这个脚本应该通过邮件,SMS等方式去通知系统管理员关于系统不正常运行的信息。调用该脚本时,将传给脚本两个参数,
#一个是事件的类型,
#一个是事件的描述。
#如果sentinel.conf配置文件中配置了这个脚本路径,那么必须保证这个脚本存在于这个路径,并且是可执行的,否则sentinel无法正常启动成功。
#通知脚本
# sentinel notification-script <master-name> <script-path>
  sentinel notification-script mymaster /var/redis/notify.sh
 
# 客户端重新配置主节点参数脚本
# 当一个master由于failover而发生改变时,这个脚本将会被调用,通知相关的客户端关于master地址已经发生改变的信息。
# 以下参数将会在调用脚本时传给脚本:
# <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
# 目前<state>总是“failover”,
# <role>是“leader”或者“observer”中的一个。 
# 参数 from-ip, from-port, to-ip, to-port是用来和旧的master和新的master(即旧的slave)通信的
# 这个脚本应该是通用的,能被多次调用,不是针对性的。
# sentinel client-reconfig-script <master-name> <script-path>
sentinel client-reconfig-script mymaster /var/redis/reconfig.sh

标签:脚本,主从复制,failover,redis,6379,master,sentinel
From: https://www.cnblogs.com/liuzonglin/p/16759019.html

相关文章

  • Redis实现布隆过滤器解析
    布隆过滤器原理介绍【1】概念说明1)布隆过滤器(BloomFilter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用......
  • Redis做限流应用
    CurrentLimiting在编写系统时候有时候我们的系统在设计的时候就已经估算到了最大请求负载了,如果大量的请求超过系统所能承受着的值时,那么系统可能随时挂掉,所有聪明程序员......
  • 分布式场景中确保线程安全的解决方案,redis实现分布式锁
     1.死锁问题场景:当用redis做分布式锁时,当A用户竞争锁成功,A用户所在的主机挂了,这时候还没有来得及释放锁,那么其他用户去用setnx指令去竞争锁时发现redis有......
  • Redis实现分布式锁的7种方案,及正确使用姿势!
    Redis实现分布式锁的7种方案,及正确使用姿势!种方案前言日常开发中,秒杀下单、抢红包等等业务场景,都需要用到分布式锁。而Redis非常适合作为分布式锁使用。本文将分七个......
  • REDIS入门指南 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1ss4alB1LxebBvPLc4eduxw点击这里获取提取码 ......
  • 数据库历险记(二) | Redis 和 Mecached 到底哪个好?
    说起缓存框架,我们最常用的缓存框架有memcached、Redis这两个,但它们之间其实是有差异的。Memcached的诞生2003年5月,BradFitzpatrick发布了第一个版本的Memcached,一开......
  • Redis Cluster的部署与维护
    1、RedisCluster的工作原理  不管是Redis的主从复制,还是基于主从复制环境之上的Redis哨兵(Sentinel)模式,这些都是做到了数据的远程备份,并且在哨兵模式下还可以做到原主节......
  • redis
                                ......
  • 006-Redis的 List 命令
    1.List1.1lindex1.1.1基本信息LINDEXkeyindexsummary:Getanelementfromalistbyitsindexsince:1.0.0Returnstheelementatindexindexinthelist......
  • 007-Redis的 Set 命令
    1.Set1.1sadd1.1.1基本信息SADDkeymember[member...]summary:Addoneormorememberstoasetsince:1.0.0Addthespecifiedmemberstothesetstored......