Redis之Redis主从复制
概念:
主从复制就是主机数据更新后,根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。
配置:
(1)“一主二仆”策略
准备三台redis服务器:主服务器A,从服务器B1、从服务器B2。服务器B1、B2同步A数据,A1负责写操作,B1、B2负责读操作。
A服务器IP:168.7.5.74,端口6379
B1服务器IP:168.7.5.75,端口6379
B2服务器IP:168.7.5.76,端口6379
- 使用命令
在服务器B1、B2上分别执行如下命令,成为A服务器的从库:
slaveof 168.7.5.74 6379
使用命令可查看当前库role、master_host、manter_port、connected_slaves相关配置信息:
info replication
注意:
a、当主库宕机后,从库仍是slave角色,仍负责接受读操作;
b、当主库恢复服务后,从库B1、B2继续同步主库A的数据,服务照旧;
c、当从库与master断开连接后,如果使用的是命令配置,需要重新使用命令才能连接到主库;
d、当从库连接master后,master会先一次性将当前数据全量同步到salve上,后续增量同步。
从库复制原理:
Slave 启动成功后连接到 master 后,将发送一条sync命令,master接收到命令后,在后台启动存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,master将传送整个数据文件到slave,以完成一次全量同步。只要重新连接master,将自动执行一次全量复制(完全同步)。
- 使用配置文件
在需要成为从库的redis配置文件中添加配置"replicaof 10.7.5.74 6379"即可。与命令配置不同的是,从库重启服务后将自动同步主库,无需额外操作。

(2)“薪火相传”策略
准备三台redis服务器:服务器A,服务器B、服务器C。将服务器B设置为服务器A的从库,将服务器C设置为服务器B的从库:masterA <-- slaverB <-- slaverC。
A服务器IP:168.7.5.74,端口6379
B服务器IP:168.7.5.75,端口6379
C服务器IP:168.7.5.76,端口6379
执行如下命令进行该策略配置:
在服务器B上执行:slaveof 168.7.5.74 6379
在服务器C上执行:slaveof 168.7.5.75 6379
注意:
a、服务器A的角色为 master,服务器B和C的角色为 slaver;
b、当主库A宕机后,在从库B上执行命令 slaverof no one 将从库B角色变为 salve ,从库C无需操作,将继续使用同步B;
c、当A重启服务器后,与BC库组成的体系毫无关系,需重新执行命令加入;
d、salverof no one :是当前数据库停止与其他数据库的同步,并转换为主数据库。
优点:去除“一主二仆”策略的中心化,减轻master库写的压力。
缺点:从库存在备份延迟
(3)哨兵模式
原理:在后台自动监控主机是否故障,如果故障了,根据投票自动将从库转为主库。
配置:
a、创建哨兵模式配置文件。在redis.conf目录下创建文件 sentinel.conf (名称固定),内容如下:
sentinel monitor hostname 127.0.0.1 6379 1
hostname 127.0.0.1 6379 :分别是被监控主机的主机名、IP及端口号
1指定策略:主机宕机后,slave投票决定谁接替主机
b、启动哨兵模式
redis-sentinel /usr/redis/sentinel.conf
注意:
a、若当前master宕机后,服务将在从库中选出新的master;
b、若旧master重启后,它将自动成为新的master的slave;
c、一个哨兵(sentinel)可以监控多个master。
应用:
读写分离、容灾备份
主从复制的缺点:
复制的延迟,写操作都在master上,然后同步到slave上,所以会有一定的延迟,同时slave机器数量的增加也会使延迟问题更加严重。
Redis之Redis主从复制的更多相关文章
- nginx+tomcat+redis sesson id主从复制
Redis与Memcached的区别: 内存利用率:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储, ...
- redis数据库安装 redis持久化及主从复制
----------------------------------------安装redis-5.0.4---------------------------------------- wget h ...
- 【中间件】Redis 实战之主从复制、高可用、分布式
目录 简介 持久化 主从复制 高可用 Redis-Sentinel .NET Core开发 分布式 Redis-Cluster 配置说明 常见问题 简介 本节内容基于 CentOS 7.4.1708, ...
- Redis集群主从复制(一主两从)搭建配置教程【Windows环境】
如何学会在合适的场景使用合适的技术方案,这值得思考. 由于本地环境的使用,所以搭建一个本地的Redis集群,本篇讲解Redis主从复制集群的搭建,使用的平台是Windows,搭建的思路和Linux上基 ...
- Redis全方位讲解--主从复制
前言 前面介绍了redis持久化和容灾备份,这篇会介绍redis主从复制和redis持久化在主从复制中的一些应用.因为本人没有那么多服务器或机器,所以这里主要介绍下如何在docker容器中搭建主从复制 ...
- Redis全方位讲解--主从复制(转载)
前言 前面介绍了redis持久化和容灾备份,这篇会介绍redis主从复制和redis持久化在主从复制中的一些应用.因为本人没有那么多服务器或机器,所以这里主要介绍下如何在docker容器中搭建主从复制 ...
- Redis 学习之主从复制
该文使用centos6.5 64位 redis3.2.8 主从复制 Redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进 ...
- 10分钟彻底理解Redis持久化和主从复制
在这篇文章,我们一起了解 Redis 使用中非常重要的两个机制:Reids 持久化和主从复制. 什么是 Redis 持久化? Redis 作为一个键值对内存数据库(NoSQL),数据都存储在内存当中, ...
- Redis 实战之主从复制、高可用、分布式
目录 简介 持久化 主从复制 高可用 Redis-Sentinel .NET Core开发 分布式 Redis-Cluster 配置说明 常见问题 简介 本节内容基于 CentOS 7.4.170 ...
- Redis进阶:Redis的主从复制机制
Redis进阶:Redis的主从复制机制 主从复制机制介绍 单机版的Redis存在性能瓶颈,Redis通过提高主从复制实现读写分离,提高了了Redis的可用性,另一方便也能实现数据在多个Redis直接 ...
随机推荐
- 养兔子Fibo函数优化
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Eclipse 中出现红色下划波浪线与红色感叹号
一直用eclipse写Python,老是看到一些字符串都给出红色波浪线, 看着就不舒服.弄了老半天终于消除了,原来是拼写检查 Windows->Preferences->General-& ...
- 自创open vp n windows步骤
Easy Windows Guide¶ This page contains a no-frills guide to getting OpenVPN up and running on a Wind ...
- 如何在 Azure 中的经典 Windows 虚拟机上设置终结点
在 Azure 中使用经典部署模型创建的所有 Windows 虚拟机都可以通过专用网络通道与同一云服务或虚拟网络中的其他虚拟机自动通信. 但是,Internet 或其他虚拟网络中的计算机需要终结点将入 ...
- Visual Studio 2017RC 版本相关资料
Visual Studio 2017 RC版本说明 1.社区版 Visual Studio Community 2017 RC Visual Studio Community 2017 RC 是针对个 ...
- 开闭原则(OCP)
开闭原则具有理想主义的色彩,它是面向对象设计的终极目标.因此,针对开闭原则的实现方法,一直都有面向对象设计的大师费尽心机,研究开闭原则的实现方式.后面要提到的里氏代换原则(LSP).依赖倒转原则(DI ...
- redis连接被拒绝
1,服务未启动: 执行:lsof -i :6379 isof-i命令查看是否开启进程 结果如下,证明开启 COMMAND PID USER FD TYPE DEVICE SIZE/OF ...
- IOS 对JSON解析的要求
JOSN格式的原始字符串中, 键名必须为 引号 “” 包含的字符串,值必须是数组("[]" 用中括号包起来的部分),字典("{}" 用中括号包起来的部分),数字 ...
- iOS NSRunloop的简单理解
最近学习了下NSRunloop. 作一下简单的理解: 1.runloop与线程的关系,每一个线程创建是都会有伴有一个runloop诞生,runloop用来接收事件源,让线程执行事件.当没有事件处理时, ...
- java接口实例
1.开发系统时,主体架构使用接口,接口构成系统的骨架2.这样就可以通过更换接口的实现类来更换系统的实现 public class printerDemo{ public static void mai ...