专栏首页AustinDatabasesredis 复制很简单? 树上qi个猴,一枪还剩几个猴

redis 复制很简单? 树上qi个猴,一枪还剩几个猴

相对比使用RDS ,NOSQL 数据库的虽使用,但被忽视的不少,相对于数据库之间的复制,(物理复制, 逻辑复制),redis 的复制,不少人认为还是比较简单的。那下面有一些问题

1 redis 复制对对于内存有什么要求

2 redis 复制到底是推数据还是拉数据

3 如果两台 redis 拥有同样的replicationID 和 offset 是否能他们的数据一致。

4 redis 可以拥有两个复制ID吗?

首先有几个facts 需要别列出来

1 复制是异步的

2 复制不会阻止master 服务器的上的工作

3 master 上可以连接多个slaves

4 复制是可控的

5 Slave 都是只读的

6 副本可以是master ,也就是具有级联的概念

复制的配置很简单,只要在从库配置了 replicaof 信息,以及master 认证,初步的复制就会工作了。

在Master 和 replica 之间建立复制的关系后,,由master发送指令给replica,并且将所发生的操作,键值过期以及处理,等信息发送给replica。

当master和replica主键由于某些原因断开后,进行重新连接后进行重新的同步,将replica中没有的数据,从主同步到replica,当这样的复制方式不能进行正常的同步,则要在主中先进行snapshot 当前所有的数据发送给replica然后在将后续复制过程中,master操作的数据在复制并重放到replica.

问题1

redis 在复制中内存比单机的redis要考虑的更多,通常redis 被分配的内存的60% 用于主要的工作,而剩下的是需要为bgsave 和后期的数据同步服务的。

最后一句话的意思是,reids 的复制其实的数据是要灌入到内存中,而不是和传统数据库要进行落盘的操作,在进行数据的硬化。所以redis的数据复制是依赖于内存的,并且内存预留的越大,则复制的速度也越快,所以预留足够的内存给REDIS 对加速复制是有好处的。

问题2 redis 的数据应该是属于推的方式

这个问题其实我也查过一些资料,但特别清晰的定义数据是 pull 还是push 的并没有。但下面的一段官方的文字或许可以回答这个问题。当 replica 连接到主后, 会发送psync命令到主,其中包含如果之前已经有主,并且有复制的话,则发送他目前拥有的主以及复制的offset 偏移量,然后主就会根据这个信息,将他目前的偏移量进行比对,如果可以进行数据的发送则开始发送数据。 如果副本引用的历史记录(复制ID)不再已知,则会发生完全重新同步:在这种情况下,副本将从头获得数据集的完整副本。

所以根据这段文字我认为redis复制的方式是 从主推送数据。

问题 3

复制ID基本上标记了给定的数据集历史。每当一个实例作为主实例从头开始,或者一个副本被提升为主副本时,都会为这个实例生成一个新的复制ID。连接到主服务器的副本将在握手后继承其复制ID。因此,具有相同ID的两个实例之间存在关联,因为它们拥有相同的数据,但可能在不同的时间。对于保存最新数据集的给定历史记录(复制ID),偏移量作为需要理解的逻辑时间。所以具有相同的复制ID 以及 OFFSET 偏移量的两个REDIS 数据是同步的。

问题 4

Redis实例有两个复制id的原因是将副本提升到主副本。故障转移之后,提升的副本仍然需要记住它以前的复制ID,因为这样的复制ID是以前的主副本ID。这样,当其他副本将与新主副本同步时,它们将尝试使用旧主副本ID执行部分重新同步。这将像预期的那样工作,因为当副本被提升为主ID时,它将把它的辅助ID设置为主ID,记住这个ID切换发生时的偏移量。稍后,它将选择一个新的随机复制ID,因为一个新的历史记录开始了。在处理连接的新副本时,主副本将使用当前ID和辅助ID匹配它们的ID和偏移量(为安全起见,最大偏移量为给定偏移量)。简而言之,这意味着在故障转移之后,连接到新提升的主服务器的副本不必执行完全同步。所以一个REDIS 在进行故障转移后,并且还要挂载其他的新的replica的情况下,是拥有两个replica ID的。

本文分享自微信公众号 - AustinDatabases(AustinDatabases),作者:carol11

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PostgreSQL 逻辑复制数据不一致,导致主库wal log 无限增大

    1 灵活: 逻辑复制对比物理复制来说,可以单表进行数据的复制,物理复制则是不可以的,并且大部分时间对于ETL的功能需求来说,物理复制太重了,需要的磁盘,网络,等...

    AustinDatabases
  • MYSQL 多源复制,过滤复制与应用场景

    Mysql的使用中,会伴随着一个其他数据库中很少被提到的问题,数据融合。ORACLE ,SQL SERVER ,PG 你可以去分区表,MYSQL 中遇到这样的问...

    AustinDatabases
  • PostgreSQL 流复制搭建和原理理解

    最近随着学习PostgreSQL 的深入,越发的喜欢这个数据库,之前曾经写过关于PostgreSQL 关于模糊查询的文字,在我使用的时候,的确是惊艳到了,ORA...

    AustinDatabases
  • 25000个神经元,2000万个突触,谷歌等机构耗时十年重建突触级果蝇半脑

    生物科学家研究基因网络,社会科学家研究社会网络,那神经科学家自然研究神经网络。研究复杂系统的「网络」是描述系统的基本方式。

    机器之心
  • Android TabLayout设置指示器宽度的方法

    anroid 5.0 Design v7 包中引用了TabLayout 简单快速的写出属于自己的Tab切换效果 如图所示:

    砸漏
  • 盘点国外社交网络:大数据意义究竟何在?

    “别说忙,没工夫看书。。。你那刷FB/朋友圈的工夫腾出来,保证每周啃下一本”,小编身边总充斥着这样的‘训话’。。。 额,奈何我每天的工作离不开从社交媒体中获取信...

    小莹莹
  • 社交大佬们的数据‘大’在哪里?

    大数据文摘
  • 应用执行慢的问题排查路径

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    bisal
  • MySQL8.0.19的InnoDB ReplicaSet

    MySQL8.0.19里面推出了一个新功能,InnoDB ReplicaSet,我暂且管它叫做叫做复制集。那么这个复制集是做什么用的呢?为何要推出这样一款产品呢...

    MySQLSE
  • phpMyAdmin 渗透利用总结

    (注意区分大小写) 就可以看到 phpmyadmin 的相关版本信息了,这个方法也是通杀的,只要管理员不把他们删掉。

    黑白天安全

扫码关注云+社区

领取腾讯云代金券