try redis (五) -- master -slave 主从复制

參考官网原文:http://redis.io/topics/replication

參考文章 :http://in.sdo.com/?p=1187

注意事项

Redis 的复制说白了就是通过配置 将slave  当做 masters 的复制。可是有有几个须要注意点:

1、Redis使用的是一部复制。

从Redis 2.8開始。slaves 将定期确认从复制流中处理的数量

2、一个master 能够有多个slavers

3、slaves能够接受其它slaves 的连接。

4、Redis的复制是不会堵塞master 的,也就是所谓的 non-blocking.这就意味着当一个或者多个slaves 在处理最初的同步时,master能够继续他的查询操作等。

5、为了有多个仅仅读slaves,能够用俩做一些伸缩性的复制。

6、复制操作有可能也能够避免Redis将全部的数据集写入disk的损失。

master持久化变与复制的安全性

当 Redis 复制使用的时候,它是强烈建议master的持久化是开启的,当没法开启持久化比方须要延迟。Redis 须要配置成 禁止自己主动重新启动

为了更好的 理解为什么master 在自己主动重新启动的 情况下。关闭持久化配置是危急的。

可能造成数据从master 和全部slaves 中擦除,我们看一个样例

1、我们启动nodeA 作为master。同一时候设置A 为持久化 turned down 。

node B、C 从A 中复制数据

2、假设A 突然挂了,然后能够重新启动,可是因为没有开启持久化。

重新启动后数据集为空

3、这个似乎 B 和 C将从 A 中复制空的数据集,这样原来的一些老的数据就被擦除了。

当 redis 系统为了提高可用率,会将master的持久化给关闭。

可是不论什么时候,数据安全都是最重要的,复制功能在没有配置持久化,同一时候又自己主动重新启动的机器中是不可取的。

Reids 复制时怎么工作的

当启动一个slave 。连接后他会发送一个SYNC命令。在它第一次连接或者又一次连接master的时候,这个都是正常的。

master 開始后台进行保存操作。同一时候開始開始缓存全部收到的改变数据集的命令。当后台保存成功,master将 保存在硬盘上的 数据集文件(dump.rdb) 读入到内存中 ,发送给slave。

然后master将发送全部缓存命令,这好比是一个命令流,是redis协议本身实现的

Slaves 能够自己主动冲洗连接。

当 master <-> salve 连接由于某些原因中断的时候。

当master收到多个并发 slave 同步请求的时候。会有一个单独的线程专门来保存他们。

同一时候在网上找打一个 比較好的一个状态流程的解释

  1. Slave端在配置文件里加入了slave of指令,于是Slave启动时读取配置文件。初始状态为REDIS_REPL_CONNECT。
  2. Slave端在定时任务serverCron(Redis内部的定时器触发事件)中连接Master,发送sync命令,然后堵塞等待master发送回其内存快照文件(最新版的Redis已经不须要让Slave堵塞)。
  3. Master端收到sync命令简单推断是否有正在进行的内存快照子进程,没有则马上開始内存快照,有则等待其结束。当快照完毕后会将该文件发送给Slave端。
  4. Slave端接收Master发来的内存快照文件,保存到本地,待接收完毕后,清空内存表。又一次读取Master发来的内存快照文件,重建整个内存表数据结构。并终于状态置位为 REDIS_REPL_CONNECTED状态,Slave状态机流转完毕。
  5. Master端在发送快照文件过程中,接收的不论什么会改变数据集的命令都会临时先保存在Slave网络连接的发送缓存队列里(list数据结构)。待快照完毕后,依次发给Slave,之后收到的命令同样处理。并将状态置位为 REDIS_REPL_ONLINE。

状态流程图例如以下:

redis.conf 关于  配置

port 6379

指定Redis监听port,默认port为6379

################################# REPLICATION ###################################

maseter-slave 复制 须要注意几个点

1、redis 复制时一部实现的。可是你能够配置 master 在不能连接到一个给定数量的slaves 的时候,禁止写入

2、redis slaves 能够局部的再同步数据到master 假设master突然断掉。然后启动。

3、复制时自己主动进行的。不须要用户调用。假设slavers 与master 无法连接。slaves 会尝试连接master.同一时候再同步slaves上的数据到master上

######################################################################################

slaveof <masterId> <masterPort>

假设配置了slaveof 属性。意味着当前节点是 slave。同一时候确定了master的ip 和 port

slave

时间: 2024-12-25 05:28:54

try redis (五) -- master -slave 主从复制的相关文章

redis之master.slave主从复制

简介 主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,master以写为主,slave以读为主 从库配置 配置从库,不配主库 配置从库: 格式: slaveof 主库ip 主库port 注意: 每次与master断开之后,都需要重新连接,除非配置到redis.conf文件 配置文件细节: 主从同步一--一主多从(同一台机器上同一个redis运行在三个port上) 1.复制redis配置文件三份 [[email protected] redis-5.0.3]# mkdi

Redis 的 master/slave 复制

Redis 的 master/slave 复制:    Redis 的 master/slave 数据复制方式可以是一主一从或者是一主多从的方式,Redis 在 master 是非阻塞模式,也就是说在 slave 执行数据同步的时候,master 是可以接受客户端的 请求的,并不影响同步数据的一致性,然而在 slave 端是阻塞模式的,slave 在同步 master 数据时,并不能够响应客户端的查询  Redis 的 master/slave 模式下,master 提供数据读写服务,而 sla

MongoDB学习笔记——Master/Slave主从复制

Master/Slave主从复制 主从复制MongoDB中比较常用的一种方式,如果要实现主从复制至少应该有两个MongoDB实例,一个作为主节点负责客户端请求,另一个作为从节点负责从主节点映射数据,提供数据备份,客户端读取等,推荐一主多从模式 MongoDB主从复制的实现方式: 主节点的操作会被记录为oplog,存储在系统数据库local的集合oplog.$main中,这个集合中的每个文档都代表主节点的一个操作(不包括查询) 从节点定期从主服务器获取oplog数据,并在本机进行执行 oplog使

第35章:MongoDB-集群--Master Slave(主从复制)

①主从复制[不推荐使用了] 最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址.采用双机备份后主节点挂掉了后从节点可以接替主机继续服务,所以这种模式比单节点的高可用性要好很多. ②注意点 1)在数据库集群中要明确的知道谁是主服务器,主服务器只有一台. 2)从服务器要知道自己的数据源也就是对应的主服务是谁. 3)--master用来确定主服务器,--slave 和 --source 来控制从服务器 ③主从复制的原理 在主从结构中,主节点的操作记录成为oplog(op

Redis实现主从复制(Master&amp;Slave)

由于前段时间公司项目比较赶,一直抽不出时间写博客,今天偷空写一篇吧.前面给大家讲解了单机版redis的基本操作,现在继续给大家讲解一下Redis的进阶部分,主从复制和读写分离. 一.Master&Slave是什么? 也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机 的master/slaver机制,Master以写为主,Slave以读为主. 二.它能干嘛? 1.读写分离: 2.容灾恢复. 三.怎么玩? 1.配从(库)不配主(库): 2.从库配置:slaveof [主库IP]

Redis主从复制(Master&amp;Slave)

什么是Redis主从赋值(Master&Slave)? 1.主从复制:主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为 主,Slave以读为主. 2.主要作用: 1).读写分离 2).容灾恢复 Redis主从复制的配置使用(Windwos下) 1.安装主服务器,打开排至文件绑定ip 2.安装从服务器,并配置从服务器指定主服务器 3.下图是Redis同步时间的配置,900s有一个key发生改变时数据同步,300s有10个key发生改变时同步,60s有

Redis 的主从复制(Master/Slave)

1. 是什么 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略自动同步到备机的 master/slave 机制,Master以写为主,Slave 以读为主 2. 能干嘛 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复:实际上是一种服务的冗余 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从

redis的复制(Master/Slave)

1.是什么? 就是主从复制,主机数据更新后根据配置和策略自动同步到备机的master/slave机制,Master以写为主,Slave以读为主 2.能干嘛? • 读写分离:只有主机可以进行写操作,从机不能进行写操作(从机如果执行写操作压根就写不进去) • 容灾恢复 3.怎么玩 • 配从(库)不配主(库) • 从库配置:slave of 主库ip 主库端口 :每次与Master断开,都需要重新连接,除非你配置进redis.conf文件中 • 修改配置文件细节操作:怎么配置可以找百度 • 常用三招:

redis 学习笔记(3)-master/slave(主/从模式)

类似mysql的master-slave模式一样,redis的master-slave可以提升系统的可用性,master节点写入cache后,会自动同步到slave上. 环境: master node: 10.6.144.155:7030 slave node: 10.6.144.156:7031 一.配置 仅需要在slave node上修改配置: 找到slaveof这行,参考下面的修改(填上master node的Ip和端口就完事了) slaveof 10.6.144.155 7030 另外注