Redis主从复制

1.概念
主从复制,是指将一台Redis服务器的数据复制到其他的redis服务器上。前者为主节点master,后者为从节点slave,数据的复制是单向的,由主节点复制到从节点(主节点复制写操作为主,从节点只能进行读操作)。
默认情况下,每台Redis服务器都是主节点,一个主节点可以有0个或者多个从节点,但是每个从节点只能有一个主节点。
2.作用
数据备份:主从复制实现了数据的热备份。
故障恢复:主节点故障时,从节点可以替代主节点提供服务。
负载均衡:在主从复制的基础上,配合读写分离,由主节点进行写操作,从节点进行读操作,分担服务器的负载;主要作用于多读少写的场景下,通过多个从节点分担负载,提供并发量。
高可用基石:主从复制还是哨兵和集群能够实施的基础。
3.配置
一主二从配置
Redis主从复制只需要配置从机就可以,主要分为两种第一种使用命令行临时配置,关闭命令行之后失效。使用redis-cli连接redis后执行以下命令即可设置为31.66的从机。

slaveof 192.168.31.66 6379

第二种修改redis.conf配置文件,永久生效。

(1) redis服务器列表

服务器名称 IP地址
Master 192.168.31.66:6379
Slave1 192.168.31.70:6379
Slave2 192.168.31.155:6379

(2) redis安装
三台服务器分别安装Redis软件,具体步骤如下:

#解压redis安装包
tar -xvf redis-4.0.9.tar.gz
mv redis-4.0.9 /usr/local/
cd /usr/local/
mv redis-4.0.9 redis
cd redis
make
cd src
make install
cd ../
mkdir etc
mkdir bin
mv redis.conf sentinel.conf etc/
mv src/mkreleasehdr.sh src/redis-benchmark src/redis-check-aof src/redis-check-rdb src/redis-cli src/redis-sentinel src/redis-server src/redis-trib.rb bin/
vim etc/redis.conf
# bind 127.0.0.1 修改成 bind 0.0.0.0
# 配置后台运行 daemonize no 修改成 daemonize yes
# 从机需要配置 slaveof 192.168.31.66 6379

(3) 配置redis服务并设置开机启动

vim /etc/systemd/system/redis.service
#填写以下内容,注意路径要检查是否正确
[Unit]
Description=redis-server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
PrivateTmp=true[Install]
WantedBy=multi-user.target#设置开机启动
systemctl enable redis.service
#启动redis
systemctl start redis
#查看redis状态
systemctl status redis
#停止redis服务
systemctl stop redis

(4) 启动redis服务
依次启动主机从机66 70 155的Redis服务

systemctl start redis

(5) 查看服务信息

cd bin
./redis-cli
# 输入 info replication



至此一主二从配置完成,自行测验复制功能。在master节点写入数据,在slave节点查看数据。

使用方法

  • 从机只读,不能写。主机可读可写多用于写。
  • 当主机宕机或服务关闭,默认情况从机不会发生变化。集群将只读不能写入,当主机恢复后恢复正常。
  • 当从机断电后,如果使用命令配置的从机,再次启动需要继续使用命令配置从机才能同步主机数据。

当主机宕机或服务关闭,不会出现新的主机,有两种方式可以产生新的主机。

  1. 在从机手动执行命令 slaveof no one,该从机会成为一个主机
  2. 使用哨兵模式自动选举出一个主机。

哨兵模式

  1. 概述
    Redis提供了哨兵的命令,是一个独立的进程,它会独立进行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
  2. 主从切换: 当主服务器 宕机后,需要手动切换的话就需要人工干预,不适合生产环境,所以优先考虑哨兵模式。
  3. 哨兵作用:哨兵主要有两个作用,第一个作用让Redis服务器返回监控其运行状态,包括主服务器和从服务器。第二个作用是当哨兵监测到master宕机后,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
    一般使用多个哨兵进行监控,各个哨兵之间还会进行监控,这样就形成了多哨兵模式。
  4. 哨兵配置:修改sentinel.conf文件
sentinel monitor mymaster 192.168.31.66 1
#配置后台运行 添加 daemonize yes

数字1表示:当一个哨兵认为主机断开,就认为主机故障,然后开始选举新的主机。当数字为大于1时,当一个哨兵认为主机断开,该哨兵主观的认为主服务器不可用,这个现象称为主管下限。当后面的哨兵也监测到主服务器不可用,并且数量达到该数字时,哨兵之间就会进行一次投票,投票结果由一个哨兵发起,进行failover操作。切换成功后,通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。

#启动哨兵进程
./redis-sentinel ../etc/sentinel.conf

或者可以参考redis配置成服务,不过注意不要设置成开机启动,因为哨兵模式需要注意启动顺序。首先是启动主机Redis服务然后从机Redis服务,最后启动哨兵的服务进程。

  1. 哨兵模式优缺点
    优点:哨兵集群基于主从复制,主从可以切换,系统可用性高。可以自动切换主从,更加健壮。
    缺点:哨兵模式配置较为复杂,配置项多

  2. 哨兵模式的其他配置项

配置项 参数类型 作用
port 整数 启动哨兵进程端口
dir 文件夹目录 哨兵进程服务临时文件夹,默认为/tmp,要保证有可写入的权限
sentinel down-after-milliseconds <服务名称><毫秒数(整数)> 指定哨兵在监控Redis服务时,当Redis服务在一个默认毫秒数内都无法回答时,单个哨兵认为的主观下线时间,默认为30000(毫秒)
sentinel parallel-syncs <服务名称><服务器数(整数)> 指定可以有多少个redis服务同步新的主机,这个数字越小同步时间越长,而越大,则对网络资源要求越高
sentinel failover-timeout <服务名称><毫秒数(整数)> 指定故障切换允许的毫秒数,超过这个时间,就认为故障切换失败,默认为3分钟
sentinel notification-script <服务名称> <脚本路径> 指定sentinel监测到该监控的redis实例指向的实例异常时,调用的报警脚本。该配置项可选,比较常用
  1. springboot连接哨兵集群
    redis-template 代码
    application.yml
#redis-single
#spring:
#   redis:
#     password: ''
#     host: 127.0.0.1
#     port: 6379#redis-sentinel
spring: redis:password: ''sentinel: master: mymasternodes: 192.168.31.66,192.168.31.70,192.168.31.155

pom.xml

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Redis主从复制哨兵模式自动切换相关推荐

  1. redis哨兵模式没有切换主机_Redis的哨兵模式

    微信公众号:51码农网 网站:http://www.51manong.com51码农网,让程序员的坚持学习变得可能 Redis哨兵(Sentinel)模式 Redis的主从复制,当主机出现了宕机时,需 ...

  2. Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

    Linux企业化运维 实验所用系统为Redhat-rhel7.6. 目录 Linux企业化运维 Linux企业化运维--(7)redis服务之redis配置及主从复制.主从自动切换.集群.redis+ ...

  3. redis面试:哨兵模式主从切换数据丢失问题

    redis哨兵是怎么工作的 哨兵作用 监控整个主数据库和从数据库,观察它们是否正常运行 当主数据库发生异常时,自动将从数据库升级为主数据库,继续保证整个服务的文档 哨兵是怎样工作的 每隔sentine ...

  4. redis集群之主从复制+哨兵模式

    文章目录 一.redis集群之主从复制 1.1.集群介绍 1.2.搭建过程 1.3.验证 二.redis集群之哨兵模式 2.1.部署过程 1.搭建主从复制集群 2.设置哨兵模式的配置文件 3.启动哨兵 ...

  5. ip地址转换数字函数 iton_redis深度剖析: 03 redis读写哨兵模式

    什么叫系统不可用: 什么是99.99高可用性: 高可用计算规则,全年 系统可用的时间 / 全年 redis不可用是什么? redis主从基于哨兵模式的高可用: 哨兵的主要功能: (1)集群监控,负责监 ...

  6. Redis(3)--哨兵模式,集群

    Redis的哨兵模式 什么是哨兵模式 Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行.其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例. ...

  7. redis 主从哨兵模式搭建

    一.REDIS主从模式,搭建三个节点,同一个机器,三个端口. 安装包 wget http://download.redis.io/releases/redis-5.0.7.tar.gz 安装步骤 ht ...

  8. Redis的哨兵模式搭建

    Redis的哨兵模式搭建 1.Redis的哨兵模式 Redis的哨兵是反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库.哨兵(sentinel) 是一个分布式系统, ...

  9. Redis之哨兵模式

    文章目录 Redis之哨兵模式 1.哨兵介绍 2.哨兵作用 3.哨兵相关配置 4.配置哨兵 5.演示(配置哨兵) 6.主从切换过程 7.阶段一监控阶段 8.阶段二通知阶段 9.阶段三故障转移阶段 Re ...

最新文章

  1. 实战DeviceIoControl 之中的一个:通过API訪问设备驱动程序
  2. page 怎么把list 分页_自定义分页器的实现
  3. 新手学信息检索2:倒排表与存储
  4. cocos2d学习路线
  5. SAP Spartacus的Angular.json内容一览
  6. 布尔运算_3dmax教程 - 布尔运算
  7. Java中的方法(形参及实参)return返回类型
  8. [视频教程]用Unity3d开发跳一跳小游戏
  9. 对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办?...
  10. jQuery中的阻止默认行为
  11. mybatis中的SqlMapConfig.xml配置文件基本使用
  12. 如何模拟地震、噪音、颠簸路面激励下的不确定性振动行为?
  13. 量化交易入门--写第一个量化程序
  14. 初创公司需要哪些部门_哪些初创公司在安全方面犯了错误
  15. RDMA RC UC UD
  16. 启发:从MNS事务消息谈分布式事务
  17. QT 5.9学习笔记
  18. 新世纪福音战士EVA
  19. 520 单身福利|女朋友又找我要礼物
  20. PMP报名官网是什么?

热门文章

  1. 数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)
  2. 高利转贷”“职业放贷”是违法借贷行为
  3. Android实现手写板和涂鸦功能
  4. 涡线图用tecplot咋画
  5. 不知道O2O产品的APP该如何运营推广?
  6. Leetcode-SQL学习计划-SQL入门-584:寻找用户推荐人
  7. excel打开之后很小
  8. node-gyp编译失败
  9. python *args和**kwds
  10. 记录一次油猴脚本开发的Demo(入门级)、开发过程