测试环境:
Linux ubuntu 3.11.0-12-generic
2GB Mem
1 core of Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz
Redis 2.6.13
以下 R1 表示master, R2表示slave
配置采用运维组标准配置,默认主从配置一样,在从节点启动后设置为slave
R1: 127.0.0.1 6378
R2: 127.0.0.1 6379
0. 初始情况下各节点info情况(部分有用信息):
MASTER ->
'connected_slaves': 1, #可判断slave存活状况
SLAVE ->
'master_host': '127.0.0.1',
'master_last_io_seconds_ago': 5,
'master_link_status': 'up', #可判断master与slave存活状况
'master_port': 6378
1. 正常读写:
In [32]: r1.set('key', 'value')
Out[32]: True
In [34]: r2.get('key')
Out[34]: 'value'
2. 主备正常连接下, 默认slave(不配置slave-read-only on)
向slave写入后发现报错
In [35]: r2.set('key2', 'value')
ReadOnlyError: You can't write against a read only slave
3. Master闪断:
Crash掉主节点:
'master_host': '127.0.0.1',
'master_last_io_seconds_ago': -1,
'master_link_down_since_seconds': 4,
'master_link_status': 'down',
'master_port': 6378
重启主节点后,slave自动从从新建立连接
'master_host': '127.0.0.1',
'master_last_io_seconds_ago': 9,
'master_link_status': 'up',
'master_port': 6378,
4. Crash掉主节点,slave默认(不配置slave-read-only on 情况)
即使master挂掉,slave写入依然报错
SLAVE ->
'master_host': '127.0.0.1',
'master_last_io_seconds_ago': -1,
'master_link_down_since_seconds': 6,
'master_link_status': 'down',
'master_port': 6378
In [37]: r2.set('key', 'value')
ReadOnlyError: You can't write against a read only slave.
设置slave为readonly,发现报错
zb@ubuntu:~/codes/test$ redis-cli -h 127.0.0.1 -p 6379 set slave-read-only no
(error) READONLY You can't write against a read only slave.
需要关闭slave的slave特性, 将其升级为主节点
zb@ubuntu:~/codes/test$ redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE
OK
zb@ubuntu:~/codes/test$ redis-cli -h 127.0.0.1 -p 6379 set slave-read-only no
OK
升级为主节点后,继续向slave写入:
In [38]: r2.set('key', 'value')
Out[38]: True
5. 重启master, 如果将slave升级为master, 此时master与slave已经隔离, 都作为主节点存在(注意此时的主节点是没有数据的)
In [41]: r1.get('key')
In [42]:
6. 拷贝R2的dump数据到R1后重启:
In [43]: r1.get('key')
Out[43]: 'value'
7. 从新将R2设置为R1的slave(slave默认配置):
向slave写入:
In [45]: r2.set('key2', 'value')
ReadOnlyError: You can't write against a read only slave.
8. 如果将slave-read-only 属性写到配置文件中:
可以向slave写入数据,但是不会同步到master
In [50]: r2.set('key2', 'value')
Out[50]: True
9. Crash掉R1,往R2写数据(关掉slave-read-only):
SLAVE ->
'master_link_status': 'down'
In [75]: r2.set('key2', 'value')
Out[75]: True
重启Master(此时的master无数据):
In [85]: r2.get('key2')
In [86]: r2.get('key3')
可以看到,重启了Master后,slave同步了master状态,由于master没有数据,slave的数据同时被删除
总结(部分测试未写出来):
slave 配置为slave-read-only on需要升级为主节点或者写入配置文件中, 而不能在默认slave情况下直接设置
master与slave断开后会检测心跳, 从新建立连接.
可以直接copy DUMP文件从新重启master
在Master为空以后,slave同步数据会抹掉全部数据.
分享到:
相关推荐
1.使用 DICT 协议添加一条测试记录 2.设置保存路径 3.设置保存文件名 4.保存 1.连接远程主服务器 2.设置保存路径 3.设置保存文件名 4.保存
Redis主从复制是其HA的基础,它允许一个Redis实例(主节点)的数据被多个实例(从节点)实时同步。当主节点出现问题时,可以快速切换到一个从节点继续提供服务。以下是主从复制的基本步骤: 1. 配置主节点:在主...
5. 测试主从复制: - 在主节点上添加数据。 - 检查从节点的数据,确认数据是否已经成功复制。 二、哨兵模式实现高可用 哨兵模式是Redis的一种高可用性解决方案,用于监控Redis主从集群中各个节点的运行状态,...
在本例中,我们将探讨如何设置Redis主从复制,配置密码保护,通过配置文件启动Redis,并引入Sentinel哨兵系统来实现故障切换。 首先,我们需要准备至少三个Redis实例,一个作为主节点(master),两个作为从节点...
以上就是在Windows环境下搭建Redis主从集群和哨兵集群的基本步骤和关键知识点。通过这种方式,我们可以构建一个高可用、高可靠的Redis服务,满足大规模应用的需求。参考提供的博客文章...
一、Redis主从复制 1. **安装Redis**:首先,你需要在Linux服务器上安装Redis。可以通过包管理器如`apt-get`或`yum`进行安装,或者下载源码编译安装。 2. **启动Redis服务**:安装完成后,启动Redis服务,通常命令...
redis主从,只需要在从机上指定主机的ip和端口就完成了。 可以在从机的conf配置文件中增加如下一行: slaveof 127.0.0.1 6379 格式是 slaveof 主机ip 主机上redis的端口 也可以在从机的客户端手工输入这么一行命令...
5. **测试主从复制:** - 在主节点上设置键值对 `name 123`,然后在从节点上使用 `get name` 获取这个值,验证数据是否正确复制。 #### 二、Sentinel 哨兵模式配置 Sentinel 是 Redis 的高可用解决方案之一,它...
### Redis主从搭建知识点 #### 一、Redis主从架构简介 Redis 主从架构是一种常见的部署方式,主要用于实现数据的高可用性和负载均衡。在该架构中,一个或多个从节点(Slave)会同步主节点(Master)的数据,并且...
7. **测试与监控**:通过`redis-cli`工具测试主从复制是否成功,可以查看从节点的`info replication`命令确认。哨兵可以通过`redis-cli -p <sentinel-port> sentinel masters`查看当前主节点状态。 8. **故障转移...
### 三、Redis主从部署 主从部署用于提高数据的可用性和读取性能。一个Redis实例作为主节点,负责写操作,其他实例作为从节点,复制主节点的数据并处理读操作。 1. **配置主节点** 修改主节点的`redis.conf`,...
### Windows环境下Redis高可用之主从复制与哨兵监控 #### 一、概述 随着分布式系统和微服务架构的普及,高性能、高可用性的数据库成为众多应用的基础需求之一。Redis作为一款广泛使用的开源键值存储系统,凭借其...
### Redis 主从配置及哨兵模式详解 #### 一、实验环境 - **Redis 版本**: Redis 4.0.6 - **操作系统**: Linux (安装于虚拟机中) - **宿主主机**: Windows 10 x64 - **远程终端工具**: Xshell 5 #### 二、主从...
通过以上步骤,你可以在单机环境中模拟出一个包含主从复制和哨兵的Redis集群。然而,这仅适用于学习和测试,实际生产环境中应考虑网络隔离、多机部署和更复杂的故障恢复策略。在真实场景下,通常会使用云服务或负载...
一、Redis主从复制 主从复制是哨兵模式的基础,它允许数据在主节点和一个或多个从节点之间同步。当主节点写入新数据时,这些数据会被复制到从节点,实现数据备份和负载均衡。这样,即使主节点出现问题,从节点也能...
【Redis搭建】 ...以上是 Redis 单节点、主从复制和集群搭建的基础操作,实际部署中还需要考虑网络环境、安全性、性能优化等因素。对于大规模生产环境,建议参考 Redis 官方文档和最佳实践进行配置。
配置Redis主从复制通常包括以下步骤: 1. 在主服务器上,无需特殊配置,只需启动Redis服务。 2. 在从服务器上,设置`slaveof`命令,指定主服务器的IP和端口。 3. 主服务器会将数据变更同步到从服务器,可以通过`INFO...