Redis集群_1.redis主从配置

Redis主从配置(Master-Slave)

一、 Redis Replication的特点:

1):一个Master可以同步多个Slave

2):不仅Master可以同步多个Slave,Slave也可以同步其它Slave,可以构成一个图形结构,同时还能分担Master的同步压力

3):Redis Replication使用的是异步复制。从2.8开始,Slave会周期性发起一个Ack确认replication stream被处理进度

4):复制在Master Server是以非阻塞模式完成数据同步。即使多个Master-Slave同时同步,Master Server仍然可以提供查询或修改

5):复制在Slave Server也是以非阻塞的方式完成数据同步。在同步期间,Slave Server可以提供数据查询,但返回的是同步之前的数据,同时还能配置当Master与Slave失去联系时,让Slave返回客户端一个错误提示

6):Slave Server可以为客户端提供只读操作的服务,但写服务仍然必须由Master来完成,这样可以分载Master的读操作压力,在分压的同时还供了数据冗余,同时还可以通过增加Slave进行只读操作来提升扩展性

7):可以通过修改Master Server的redis.config配置文件来将持久化操作交给Slave Server去操作

注:Slave是只读的,只可以读取数据,而不能写入数据

二、Redis Replication工作原理:

1):Slave启动后,无论是第一次连接还是重连到Master,它都会主动发出一个SYNC命令

2):当Master收到SYNC命令之后,将会执行BGSAVE(后台存盘进程),即在后台保存数据到磁盘(rdb快照文件),同时收集所有新收到的写入和修改数据集的命令存入缓冲区(非查询类)

3):Master在后台把数据保存到快照文件完成后,会传送整个数据库文件到Slave

4):Slave接收到数据库文件后,会把内存清空,然后加载该文件到内存中以完成一次完全同步

5):然后Master会把之前收集到缓冲区中的命令和新的修改命令依次传送给Slave

6):Slave接受到之后在本地执行这些数据修改命令,从而达到最终的数据同步

7):之后Master与Slave之间将会不断的通过异步方式进行命令的同步,从而保证数据的时时同步

8):如果Master和Slave之间的链接出现断连,Slave可以自动重连Master。根据版本的不同,断连后同步的方式也不同:

2.8之前:重连成功之后,一次全量同步操作将被自动执行

2.8之后:重连成功之后,进行部分同步操作

部分同步:

从2.8开始,当Master和Slave之间的连接断开重连后,他们之间可以采用持续复制处理方式替代完全重同步操作。部分重同步会用到PSYNC的命令,2.8之后的版本才有此命令,之前的只有SYNC命令。只要Slave是2.8或以上的版本,Slave就会根据Master的版本来决定到底是使用PSYNC还是SYNC

部分同步工作原理如下:

1):Master为被发送的复制流创建一个内存缓冲区(in-memory backlog),记录最近发送的复制流命令

2):Master和Slave之间都记录一个复制偏移量(replication offset)和当前Master ID(Master run id)

3):当出现网络断开,Slave会重新连接,并且向Master请求继续执行原来的复制进程

4):如果Slave中断网前的MasterID和当前要连的MasterID相同,并且从断开时到当前时刻Slave记录的偏移量所指定的数据仍然保存在Master的复制流缓冲区里面,则Master会向Slave发送缺失的那部分数据,Slave执行后复制工作可以继续执行

5):否则Slave就执行完整重同步操作

三、配置:

系统环境:CentOS 6.5 mini

软件版本:redis-2.8.19

IP地址:

节点1:192.168.100.211

节点2:192.168.100.212

节点3:192.168.100.213

1:指定Slave(在Slave节点配置)

# vi /main/redis/redis.conf

slaveof 192.168.100.211 6379

#注:有这一行表示为Slave,没有则表示为Master。这里的IP地址为Master的IP地址,后面的端口号也是为Master的端口号

2:设置认证密码(三个节点)

可以设置,也可以不设置

# vi /main/redis/redis.conf

masterauth 1234567890

requirepass 1234567890

#注:如果Master端通过requirepass设置了密码,则Slave需要通过masterauth配置密码

到此配置就完毕了

四、测试:

1:在命令行界面进行查看(三个节点):

# /main/redis/src/redis-cli

127.0.0.1:6379> info replication

节点1显示如下(master):

# Replication

role:master

connected_slaves:2

slave0:ip=192.168.100.212,port=6379,state=online,offset=41663,lag=1

slave1:ip=192.168.100.213,port=6379,state=online,offset=41663,lag=1

master_repl_offset:41963

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:41962

节点2显示如下(slave1):

# Replication

role:slave

master_host:192.168.100.211

master_port:6379

master_link_status:up

master_last_io_seconds_ago:0

master_sync_in_progress:0

slave_repl_offset:41520

slave_priority:100

slave_read_only:1

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

节点3显示如下(slave2):

# Replication

role:slave

master_host:192.168.100.211

master_port:6379

master_link_status:up

master_last_io_seconds_ago:0

master_sync_in_progress:0

slave_repl_offset:42106

slave_priority:100

slave_read_only:1

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

2:数据测试

Master

# /main/redis/src/redis-cli -a 1234567890 set hello doiido

Slave1

# /main/redis/src/redis-cli -a 1234567890 get hello

"doiido"

Slave2

# /main/redis/src/redis-cli -a 1234567890 get hello

"doiido"

Slave2

# /main/redis/src/redis-cli -a 1234567890 set hello2 doiido2

(error) READONLY You can‘t write against a read only slave.

从上面的操作中可以看出,从Master中写入数据后,Slave是会同步数据的,而在Slave中是无法写入数据的

到这里Redis的主从配置完毕,但是这个时候是不会自动切换的。想要其自动切换,需要进行Sentinel配置

时间: 2024-08-26 19:20:07

Redis集群_1.redis主从配置的相关文章

Redis集群_1.redis安装

Redis介绍: redis是一个高性能的key-value存储系统.和Memcached类似,但它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis还支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修

mac下,redis集群的安装和配置

1.安装redis,执行命令brew install redis 2.安装完成后,brew info redis,可以查看redis的安装路径 3.cd /usr/local/Cellar/redis/3.0.7 进入redis安装路径 4.在/usr/local/etc下建立cluster/7001,7002,7003目录 5.复制3步骤中的bin目录下的redis-server redis.conf 文件到7001,7002,7003目录, 修改redis.conf中端口为7000,7001

Redis集群_3.redis 主从自动切换Sentinel

Redis Sentinel Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中 一.Sentinel作用: 1):Master状态检测 2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave 3):Master-Slave切换后,master_redis.conf.slave_redis.conf和sentinel.conf的内容都会发生改变,即m

Redis集群~StackExchange.redis连接Twemproxy代理服务器

回到目录 本文是Redis集群系列的一篇文章,主要介绍使用StackExchange.Redis进行Twemproxy(文中简称TW)代理服务的连接过程,事务上,对于TW来说,我们需要理解一下它的物理架构,它类似于Nugix,主要实现的是请求转发,但它还有一个重要的功能,那就是自动分片,这对于大数据是很必要的,你的服务器需要横向扩展时,不需要告诉客户端,这是一种很理解化的设计模式,当然,也对于Redis来说,在配置TW之后,是可以被全美支持的! 关于tw和Redis集群的设计图 关于StackE

Redis集群~StackExchange.redis连接Sentinel服务器并订阅相关事件(原创)

回到目录 对于redis-sentinel我在之前的文章中已经说过,它是一个仲裁者,当主master挂了后,它将在所有slave服务器中进行选举,选举的原则当然可以看它的官方文章,这与我们使用者没有什么关系,而对于sentinel来说,它在进行主从切换时,会触发相关事件,这是和我们开发人员有关系的,如当+switch-master事件被触发时,说明当前Sentinal已经完成了一次主从的切换,并所有服务已经正常运转了. 下面是我这几天作的测试,对于Twemproxy代理和Sentinal哨兵都已

集群之mysql主从配置(windows和linux版)

起因 由于网站进一步开发运行的需求,要求主机7*24小时运行正常,同时要求能够防止数据库灾难.考虑到后期的开发程度和业务量,准备向高可用系统进行改变,同时通过负载均衡提高网络性能.于是第一步就考虑到了数据库的集群问题. 集群和数据库主从复制 集群 通过多个物理机服务器共同处理和完成同一个业务功能,能很好的提高网站性能和可靠性.不同的环境下需要采用不同的集群策略,集群主要分为以下几种: (1)高可用集群:节点间以主备形式实现数据库容灾,在宕机情况下能快速恢复,节点间共享资源. (2)负载均衡集群:

Redis集群_4.redis 启动脚本

Redis启动脚本: # vi /etc/init.d/redis #!/usr/bin/env bash # # redis start up the redis server daemon # # chkconfig: 345 99 99 # description: redis service in /etc/init.d/redis # chkconfig --add redis or chkconfig --list redis # service redis start or ser

CentOS/Linux Redis集群安装

在此文章中,只介绍redis集群的安装步骤,若想知道详细过程,请参阅以下几篇文章: Redis集群_1.redis安装 Redis集群_2.redis主从配置 Redis集群_3.redis 主从自动切换Sentinel Redis集群_4.redis 启动脚本 系统环境:CentOS 6.5 mini 软件版本:redis-2.8.19 IP地址: 节点1:192.168.100.211 节点2:192.168.100.212 节点3:192.168.100.213 Redis安装(三个节点)

安装、配置Redis集群

安装.配置Redis集群 目录 安装.配置Redis集群... 1 1.配置yum... 1 2.安装gcc. 1 3.下载软件包... 2 4.安装(主从都需要安装) 2 5.配置redis集群... 3 6.启动与关闭... 4 7.安装ruby rubygems. 4 8.初始化集群... 4 注:本例操作系统为Red Hat Enterprise Linux Server release 6.4 1.配置yum 未注册的Redhat不支持yum,调整步骤: cd /etc/yum.rep