Redis——集群之复制

  • 配置
    在主从数据库结构中,数据库分为两个角色,一 master(主数据库),一 slave(从数据库).master可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从数据库。而slave一般是只读的,并接受主数据库同步过来的数据。一个master 会拥有多个slave, 一个slave只能拥有一个master
    115846_HUmE_2302550.png
    在Redis中使用复制功能非常容易,只需要在从数据库配置文件中添加“slaveof 主数据库地址 主数据库端口”即可,主数据库无需任何配置。
    145247_z9lp_2302550.png
  • 原理
    了解Redis 复制的原理对日后运维有很大的帮助,包括如果规划节点,如果处理节点故障等。
    当一个salve 启动后,会向master发送SYNC命令。同时主数据库接收到SYNC命令后会开始在后台保存快照(即RDB持久化的过程),并将保存快照期间接收到的命令缓存起来。当快照完成后,Redis 会将快照文件和所有缓存的命令发送给从数据库。从数据看接收到命令后,会载入快照文件并执行收到的缓存的命令。以上过程称为复制初始化。复制初始化后,主数据库每当接收到写命令时就会将命令同步给从数据库。从而保证主从数据库的一致性。
    Redis 采用了乐观复制(optimistic replication) 的复制策略,容忍在一定时间内主从数据库的内容是不同的,但是两者的数据最终会同步。
  • 读写分离与一致性
    通过复制可以实现读写分离,以提高服务器的负载能力。在常见的场景中(如电子商务网站),读的频率大于写,当单击的Redis无法应付大量的读的请求时(如:SORT 命令等)可以通过复制功能建立多个从数据库节点,主数据库只经行写操作,而从数据库群负责读操作。
  • 从数据库持久化
        另一个相对耗时的操作是持久化,为了提高性能,可以通过复制功能建立一个或N个从数据库,并在从数据库中启用持久化,同时在主数据库禁用持久化。当从数据库崩溃重启后主数据库会自动将数据同步过来,所以无需担心数据丢失。
        然后当主数据库崩溃时,情况就稍微复杂了,手工通过从数据库数据恢复主数据库数据时,需要严格按照以下两步经行。
        1,在从数据库使用 slaveof no one 命令将从数据库提升成主数据库继续服务。
        2,启动之前崩溃的主数据库,然后使用slaveof 命令将其设置成新的主数据库的从数据库,即可将数据同步回来。
        上述情况来看,手工维护从数据库或者主数据库的重启以及数据恢复都相对麻烦,好在Redis提供了一种自动化方案哨兵(sentinel)来实现这一过程。
  • 无硬盘复制
    前面介绍复制是基于RDB方式的持久化实现的,这样实现的优点是可以显著的简化逻辑,复用已有的代码,缺点也很明显:
       1,当主数据库禁用RDB快照时(即删除了所有的配置文件中的save语句),如果执行了复制初始化操作,Redis依然会生成RDB快照,所以下次启动后主数据库会以快照恢复数据。因为复制发生的时间不能确定,这使得恢复的数据可能是任何时间点的。
       2,复制初始化是需要在硬盘上创建RDB快照文件,如果硬盘性能很慢时这一过程对性能产生影响。因此从2.8.18 版本开始Redis引入了无硬盘复制选项,开启选项时,Redis 在与从数据库进行复制初始化时不会将快照内容存储到硬盘上,而是直接通过网络发送给从数据库,避免了硬盘的性能瓶颈。
        配置: repl-diskless-sync yes
  • 增量复制
    上面介绍复制原理时提到当主从数据库连接断开后,从数据库会发送SYNC 命令来重新进行一次完整复制操作。这样即使断开期间数据库的变化henx很小(甚至没有),也需要将数据库中的所有数据重新快照一次。在正常的网络环境中,这种是想爱你方式显然不太理想。Redis2.8更新实现了主从断线重连的情况下的增量复制。

转载于:https://my.oschina.net/u/2302550/blog/1586403

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值