跟我学:PolarDB-X Replica原理和使用

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 本文整理自阿里云数据库高级工程师佘志伟,在PolarDB-X动手实践系列的分享。

跟我学:PolarDB-X Replica原理和使用

摘要:本文整理自阿里云数据库高级工程师佘志伟,在PolarDB-X动手实践系列的分享。

本篇内容主要分为六个部分:

  1. 动手实践系列介绍
  2. 环境准备
  3. 演示
  4. 原理
  5. 扩展
  6. 用户问答


一、动手实践系列介绍

image.png

PolarDB-X采用Shared-nothing与存储分离计算架构进行设计,系统由4个核心组件组成。PolarDB-X社区版围绕开源PolarDB-X,对应商业2.0版本。PolarDB-X社区版主要面向应用开发者、架构师、DBA等。

image.png

PolarDB-X是一款基于云架构理念,同时支持在线事务处理与在线分析处理融合型分布式数据库产品专注解决海量数据存储、超高并发吞吐、大表瓶颈以及复杂计算效率等数据库瓶颈难题,助力企业加速完成业务数字化转型。


二、环境准备

image.png

在搭建环境之前,用户需要确定系统是CentOS 7或8;macOS;Ubuntu在18以上;Windows 10以上。相关配置需要大于等于8C64G。搭建环境需要的软件有:Docker&K8S;PolarDB-X 2.1.0。

image.png

PolarDB-X 支持与 MySQL 体验一致的 Replication 能力,称为 Replica。Replica可以在不停机的情况下,一个MySQL里的数据迁移到另一个MySQL。


三、演示

image.png

如上图所示,是一些基本的操作命令通过在原端执行DDLDML,验证整条链路的有效性。CHANGE MASTER TO是建立一条链路。


CHANGE REPLICATION FILTER配置链路的过滤。START SLAVESTOP SLAVERESET SLAVE分别是开始链路,暂停链路,以及删除链路。

image.png

一共有三台机器。第一台部署MySQL三两台部署PolarDB-X。第一台作为主PolarDB-X Replica作为备用机,然后从主拉数据,建立链路

image.png

TPCC是一个用来验证OLTP性能的一个场景,在端建立一个PolarDB-XPolarDB-X的一个同步链路,然后并且在远端跑TPCC测试用来验证的性能。

image.png

接下来,建立一个转账一致性测试的链路通过PolarDB-X建立转账测试,然后验证其一致性。最后,确定余额有没有改变。

image.png

远端最新的位点是018和18850385,建立链路。然后,储备延迟开始下降,变成22在没有数据时,PolarDB-X Replica的log心跳是30秒一次。然后进行转账测试。


在目标端验证转账测试事务一致性以及余额总是否改变。开启转让测试脚本建立bjbank库一条sql,计算所有的账户的余额之和,验证事务一致性。可以看到余额之和是1000万。


转账测试一共运行两分钟。转账测试是模拟金融级的场景。1000仓的数据,总量大概接近1亿行。经过转账测试的检验实际TBC测试可以跑到每秒1.7万行。

image.png

接下来,建立双向同步场景。选择两个都是活跃状态节点,它们分别为一部分用户提供服务。多活容灾的解决方案是两边提供一部分服务把变更的数据通过资料复制,以Replica的方式同步到另一侧。但这种方式,形成环形的复制结构,数据可能不断复制,一直循环。

image.png

为了解决这个问题,PolarDB-X兼容了Mysql的解决方案。每一个DML变更、DBL变更,都要带上server ID,然后配置一个同步链路在建立链路时,只要过滤server ID就能保证业务端的写入不会在复制链路中被自己接收。成功解决环状复制的问题。


四、原理

image.png

接下来,讲一讲Replica运行时的架构左边利用数据中心做分布式协调,Replica的任务发现等。右边是Replica进程内部的运行架构分为一个抽取器和写入应用器。抽取器通过不同的写入源解析写入,ring buffer用来解耦。写入器基于性能和业务场景用不同的策略写入目标端的数据库。

image.png

Extractor按照远端类型划分,用来屏蔽远端的不同细节。未来,也可能会接入一些异构数据的导入前置一套kb缓存,用来支撑业务的高并发查询后置PolarDB-X支持写入,数据持久化。

image.png

为了解决用户对复制性能和一致性不同需求。Replica Applier支持事务级,行级复制。Transaction Applier可以保持原数据库事务的完整性,但串行,性能较差。


Split Applier不能保持原数据库事务完整性,但可以保持原binlog变更类型,

并行的性能中等。


Merge Applier不能保持原数据库事务完整性,但可以对UPDATE事件进行改写,并行的性能优秀。

image.png

接下来,简单讲一下Merge Applier算法事件有三种,insert,delete和update。先初始化两个map,delete map和insert map。然后,通过流式处理insert、delete、update的事件


执行的每张表,将会得到一条delete sql和一条insert sql,并行执行完所有的delete sql,再并行执行insert sql。Merge Applier算法对应模块已经开源大家可以看源码里以及源码对应的文档。

image.png

目前,很多用户有事物完整性的要求。但是性能太差,TPS有时候比较高。所以需要在保持事务完整性的基础上做更快的加速。


MySQL有基于Gtid并行事物复制,兼顾性能和一致性。接下来,阿里也会进行碰撞检测。比如两个事物没有对同一个key对应的值进行操作。所以,可以把它认为是两个并行事物,然后在下游执行,从而加快事务完整性的的速度。


因为MySQL binlog是单条流所以很多时候单条流解析以及下游应用的这限制,法做到太高的tps。目前,阿里开始做多个可并行的流,从而突破单流的性能极限,通过横向水平扩展支撑更高的tps。


为了降低用户使用的心理负担、心智负担,阿里会替用户处理复杂的分布式协调技术细节,降低工具的使用门槛。


五、扩展

image.png

过去,同学在做迁移时,需要关注每一步结果,手动操作下一步。目前,用户可以利用任务发现,流处理框架。把迁移流程做成单命令,然后直接给一致数据备库。


借助binlog流式的应用叫Replica+。功能已经在公有云上线,未来会进行开源,功能叫做一键导入,提升用户的体验感。


六、用户问答

问:mysql单表通过replica迁移到polardbx是单表还是公布式表?

答:目前都是单表,如果有简便的方法能够绕过这个限制,可以先在目标端把表建好,然后在目标端建一个分布式表。保证库名表名能够对得上,且下游能够正常写入,就能从单表同步到分布式表。


问:主要支持的场景是tp还是ap?

答:PolarDB-X Replica主要还是以tp为主。Replica是一个比较单纯的数据复制,更多需要关注tp的一致性。如果备库用来做tp需求,一致性要求就会更高。如果备库需要做一些ap需求,那对性能的要求更高。在链路类型选择,建表方式等要做一些调整。


问:TSO和Binlog有什么关系?

答:TSO也是全局Binlog得以实现的基础,它是全局Binlog对事务进行排序的依据,所以,在事务提交阶段,需要将TSO记录到各个DN的物理Binlog,供全局Binlog对事务进行归并排序。

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
6月前
|
运维 关系型数据库 分布式数据库
PolarDB产品使用问题之列存索引的原理是什么
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
存储 关系型数据库 分布式数据库
PolarDB的降本增效原理
PolarDB的降本增效原理
67 0
|
分布式数据库 调度 数据库
直播预告 | PolarDB-X 备份恢复原理与实践
备份恢复是生产级数据库必不可少的功能,而PolarDB-X 作为一款分布式数据库,备份数据的全局一致也是最基本的要求。本期分享将介绍PolarDB-X 开源版备份恢复功能的背景与原理,以及如何使用 PolarDB-X Operator 实现备份调度。
直播预告 | PolarDB-X 备份恢复原理与实践
|
关系型数据库 MySQL 测试技术
PolarDB-X replica原理和使用
《PolarDB-X 动手实践》系列第九期,体验如何用PolarDB-X Replica将PolarDB-X作为不同上游数据库的备库。
|
关系型数据库 MySQL 测试技术
PolarDB-X replica 原理和使用
《PolarDB-X 动手实践》系列第九期,体验如何用 PolarDB-X Replica 将 PolarDB-X 作为不同上游数据库的备库。
|
SQL Kubernetes Cloud Native
云原生数据库PolarDB分布式版(PolarDB-X)原理导读
由于PolarDB-X相关文档比较丰富,知识点分布广泛,因此我专门整理一篇导读文章帮助大家更有节奏有方向的学习。本文所推荐文章会按照由浅入深的顺序,并且每个知识点前都会进行提问,大家可以带着问题进入章节学习。最后希望大家都能领会到分布式数据库的魅力。
|
存储 AliSQL 关系型数据库
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL高可用原理(上)
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL高可用原理(上)
193 0
|
7月前
|
安全 druid Java
Seata 1.8.0 正式发布,支持达梦和 PolarDB-X 数据库
Seata 1.8.0 正式发布,支持达梦和 PolarDB-X 数据库
629 10
Seata 1.8.0 正式发布,支持达梦和 PolarDB-X 数据库
|
7月前
|
存储 DataWorks 监控
DataWorks,一个 polar db 有上万个数据库,解决方案
DataWorks,一个 polar db 有上万个数据库,解决方案
|
SQL 存储 Web App开发
PolarDB-X 分布式数据库中的外键
外键是关系型数据库中非常便利的一种功能,它通过一个或多个列为两张表建立连接,从而允许跨表交叉引用相关数据。外键通过约束来保持数据的一致性,通过级联来同步数据在多表间的更新和删除。在关系数据库系统中,大多数表都遵循外键的概念。

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB