开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

PolarDB-X中polarm的redo做主从是怎么做到的,redo放在了 共享存储上?

PolarDB-X中polarm的redo做主从是怎么做到的,redo放在了 共享存储上?

展开
收起
十一0204 2023-08-08 23:58:22 154 0
5 条回答
写回答
取消 提交回答
  • 十分耕耘,一定会有一分收获!

    楼主你好,阿里云PolarDB-X中polarm的redo做主从是通过共享存储实现的。在PolarDB-X的架构中,polarm进程是一个分布式存储引擎,它负责处理数据的存储和读取。当PolarDB-X的主节点发生数据更新时,polarm会将更新操作记录在redo日志中,然后将redo日志写入共享存储中。从节点上的polarm进程会监控共享存储中的redo日志,当发现有新的redo日志时,会将其读取到本地的内存中进行重放,保证从节点和主节点的数据是同步的。

    因为共享存储可以被多个节点访问,所以polarm进程可以方便地将redo日志写入共享存储并在从节点上进行读取和重放,从而实现主从同步。而且,由于共享存储通常具有高可靠性和高可用性,所以polarm进程可以保证数据的一致性和可靠性。

    2023-09-14 18:44:52
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    PolarDB-X 中的 Polarm 基于 RocksDB 存储引擎,采用分布式事务的方式实现主从同步。在 PolarDB-X 中,主库将 Redo Log 写入本地磁盘,同时也会将 Redo Log 同步到共享存储上。从库在启动时会从共享存储上读取 Redo Log,然后基于这些 Redo Log 进行数据恢复。
    具体来说,PolarDB-X 中的 Polarm 主从同步过程包括以下几个步骤:

    1. 主库将 Redo Log 写入本地磁盘。
    2. 主库将 Redo Log 同步到共享存储。
    3. 从库启动时,从共享存储上读取 Redo Log。
    4. 从库根据读取到的 Redo Log 进行数据恢复。
    2023-09-06 19:31:45
    赞同 展开评论 打赏
  • PolarDB的主从节点 共享同一个PolarFS(分布式文件系统),复用数据文件和log文件。
    PolarDB采用基于redo log的异步物理复制的方式来实现主从节点的数据同步。
    在主库有数据修改时, 主库更新后,相关的更新会通过redo log apply到只读库,具体的延迟时间与写入压力有关,一般在ms通过。这样实现了最终一致性 - 实现主库和只读库之间的最终数据一致。
    为了解决最终一致性会出现的查询不一致,PolarDB利用自身物理复制速度快的优点,将查询发给已经更新了数据的只读节点。这样实现会话读一致性。

    Primary和replica节点共享同一个PolarFS(分布式文件系统),复用数据文件和日志文件。Replica节点直接读取PFS上的redo Log,并进行解析,将其修改应用到自己buffer Pool中的page上,这样当用户的请求到达replica节点后,就可以访问到最新的数据了。同时replica和primary节点间也会保持RPC通信,用于同步replica当前日志的apply位点,以及ReadView等信息。

    Standby节点部署在其他region中,拥有独立的PolarFS集群,拥有独立的数据和日志文件。Standby会向primary节点建立连接,用于读取primary节点上的redo log,并回发到standby节点,Standby节点会将redo log保存自己本地,并解析这些redo log,将其完全在自己的buffer pool中进行回放,并通过周期性的刷脏操作将数据持久化到磁盘,最终实现数据同步。
    image.png

    2023-09-06 00:10:58
    赞同 展开评论 打赏
  • PolarDB-X是阿里巴巴集团自主研发的大规模分布式关系型数据库,它采用了分布式SQL引擎和分布式存储引擎的设计理念,实现了高可用性、高扩展性和高性能的目标。

    073dadbfbff5464fdbac5840c77f0153_qjdn6ii4nizke_a246b65347c842e987b8b94dfed345bb.png

    在PolarDB-X中,Redo Log(重做日志)是用于实现事务持久性的重要机制。每个事务在执行过程中都会产生一系列的Redo Log,这些Log记录了事务修改数据的指令。当事务提交时,Redo Log会被写入到磁盘上的Redo Log Buffer(重做日志缓冲区)中。然后,后台的Checkpoint进程会周期性地将Redo Log Buffer中的内容刷新到磁盘上的Redo Log File(重做日志文件)中。这样,即使在数据库崩溃或意外关闭的情况下,也能通过回滚未完成的事务来保证数据的一致性。
    030729902fd5cd3bcebe6443a028de39_p359107.png

    至于Redo Log是如何在主从复制中使用的,我们可以从以下几个方面来理解:

    1. Master(主节点):Master负责接收客户端的请求并执行相应的SQL语句。在执行过程中产生的Redo Log会首先写入到本地的Redo Log Buffer中。

    2. Slave(从节点):Slave会定期向Master发送心跳包,以检测Master是否处于正常状态。同时,Slave也会接收并执行来自Master的Redo Log。这样,即使Master出现故障,Slave仍然可以继续执行未完成的事务,从而保证数据的一致性。

    3. 共享存储:PolarDB-X使用了分布式的Shared Storage(共享存储)来存储Redo Log。这样,无论是在Master还是在Slave上,都可以通过访问Shared Storage来获取最新的Redo Log,从而提高了数据同步的效率。
      fff3f0fd1d0ec0eea936f5f10d3b98e3_p374173.png

    总的来说,PolarDB-X通过将Redo Log写入Shared Storage,并在Master和Slave之间传输Redo Log,实现了主从复制的功能。这种设计不仅提高了数据的可靠性,还简化了数据同步的过程。

    2023-09-05 10:57:33
    赞同 展开评论 打赏
  • 全栈JAVA领域创作者

    PolarDB-X 的 PolarM 支持基于 redo log 的主从复制,可以将一个 PolarDB-X 实例作为主节点,将另一个实例作为从节点,通过主从复制实现数据同步。在主从复制中,主节点负责写操作,从节点负责读操作,并通过 redo log 实现数据同步。
    在主从复制中,PolarDB-X 将 redo log 存储在共享存储上,以便主从节点之间可以通过共享存储来实现数据同步。具体来说,PolarDB-X 将 redo log 存储在一个名为“redo log group”的共享存储上,主节点和从节点都可以访问该共享存储,从而实现数据同步。
    需要注意的是,在主从复制中,主节点和从节点需要配置相同的参数,例如用户名、密码、数据库名称、端口等。同时,您还需要确保主从节点之间的网络连接正常,以便主节点能够将 redo log 同步到从节点上。

    2023-09-04 17:41:02
    赞同 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about

相关产品

  • 云原生分布式数据库 PolarDB-X
  • 相关电子书

    更多
    PolarDB-X分布式数据库解决方案 立即下载
    PolarDB-X 2.0 全局 Binlog 与备份恢复能 立即下载
    分布式数据库DRDS全新升级 立即下载