当前位置: 首页 > 后端技术 > Java

[版本更新]PolarDB-X v2.2.1 生产级关键能力开源升级

时间:2023-04-01 15:53:33 Java

【版本更新】PolarDB-Xv2.2.1生产级关键能力开源升级能够全面提升PolarDB-X对数据库生产环境的易用性和安全性,如提供快速数据导入、性能测试验证、生产部署建议等架构介绍PolarDB-X采用Shared-nothing和存储分离计算架构设计。该系统由5个核心组件组成。PolarDB-X架构计算节点(CN,ComputeNode)计算节点是系统的入口,采用无状态设计,包括SQL解析器、优化器、执行器等模块。负责数据分布式路由、计算和动态调度,负责分布式事务2PC协调、全局二级索引维护等,提供SQL限流、三权分离等企业级特性。存储节点(DN,DataNode)存储节点负责数据的持久化。基于多数Paxos协议,提供高数据可靠性和强一致性保证,通过MVCC维护分布式事务的可见性。元数据服务(GMS,GlobalMetaService)元数据服务负责维护全局一致的Table/Schema、Statistics等系统元信息,维护账户、权限等安全信息,提供全局定时服务(即TSO)。日志节点(CDC,ChangeDataCapture)日志节点提供完全兼容MySQLBinlog格式和协议的增量订阅能力,提供兼容MySQLReplication协议的主从复制能力。列存储节点(Columnar)列存储节点负责提供列存储数据。基于行列混合存储+分布式计算节点构建HTAP架构,预计今年底或明年初正式开源。地址:https://github.com/polardb/polardbx-sqlreleasenotes梳理PolarDB-X的开源脉络:2021年10月,云栖大会上,阿里云正式开源云原生分布式数据库PolarDB-X、采用全内核开源模式,开源内容包括计算引擎、存储引擎、日志引擎、Kube等。2022年1月,PolarDB-X正式发布2.0.0版本,这是继2021年10月20日云栖大会正式开源后的第一个版本更新,更新内容包括新增集群扩缩容、binlog生态兼容等。功能,兼容maxwell和debezium增量日志订阅,以及许多其他新功能和错误修复。2022年3月,PolarDB-X正式发布2.1.0版本,包含四大核心特性,全面提升PolarDB-X的稳定性和生态兼容性,包含基于Paxos的三副本共识协议。2022年5月,PolarDB-X正式发布2.1.1版本,重点引入冷热数据新特性,可支持业务表数据根据数据特性存储在不同的存储介质上,如存储冷数据在阿里云OSS对象上存储。2022年10月,PolarDB-X正式发布2.2.0版本。这是一个重要的里程碑版本。重点介绍符合分布式数据库金融标准的企业级和国产ARM适配。包含8大核心特性,全面提升PolarDB。-X分布式数据库在金融、通信、政务等行业的普适性。2023年3月,PolarDB-X正式发布2.2.1版本。在分布式数据库金融标准能力的基础上,着力强化生产级关键能力,全面提升PolarDB-X对数据库生产环境的易用性和安全性。例如:提供快速数据导入、性能测试验证、生产部署建议等。01内核稳定性和高性能PolarDB-X2.2.1版本专注于生产级部署需求,优化数据库实例的稳定性和性能,提供生产部署的相关最佳实践。1.最低部署规格(推荐>=2c8g)组件CPU内存盘类型最少网卡数量CN2核心8GB+SSD,200GB+10G网卡2DN2核心8GB+SSD,1TB+推荐2块10G网卡2.5(见下文说明)GMS2核心8GB+SSD,200GB+10千兆网卡2.5(详见下文)CDC2核心8GB+SSD,200GB+10千兆网卡2(可选)GMS和DN2.5倍资源描述:GMS和DN是基于多数Paxos协议的高可靠存储服务,所以一个GMS(DN)会包含三个角色的节点:Leader,Follower,Logger。Leader和Follower对资源要求相同,保证高可用切换后的服务质量,而Logger节点只存储日志,不回放日志,固定为2核4GB资源规格,可以满足常见的百万级TPS要求。因此,一个GMS(DN)需要2.5倍的资源,其中2是Leader和Follower的资源,0.5是Logger的资源。可以参考文档:PolarDB-XServerRecommendedConfiguration2.在线/离线安装部署PolarDB-X2.2.1用于很多离线用户的POC测试。由于现场网络条件的限制,需要提供离线部署安装的能力,例如:从3台裸机开始,从0到1安装PolarDB-X。PolarDB-X提供一键下载离线安装包功能,请参考文档:PolarDB-X软件包下载#下载x86_64架构的PXD离线安装包pxddownload-envpxd-archamd64-repo》registry:5000"-dest~/-iimages.list#下载ARM64架构的PXD离线安装包pxddownload-envpxd-archarm64-repo"registry:5000"-dest~/-iimages.list#下载x86_64架构的k8s离线安装包pxddownload-envk8s-archamd64-repo"registry:5000"-dest~/-iimages.list#下载ARM64架构的k8s离线安装包pxddownload-envk8s-archarm64-repo"registry:5000"-dest~/-iimages.list同时结合生产部署的稳定性要求,提供系统和环境配置,包括系统OS参数、磁盘配置等,请参考文档:PolarDB-X系统及环境配置3.PolarDB-X整体性能提升2.2.1选择公有云标准ECS进行性能测试调研。与结合各种优化的2.2.0版本相比,性能有了明显的提升。测试资源:组件名称型号描述OPS机器ecs.g7.4xlarge安装部署计算节点(CN)ecs.hfg7.4xlarge*316c64g,主机单价:2324元/月存储节点(DN)+元数据节点(GMS)ecs.i4.4xlarge*316c128g+3.5TB存储,主机单价:3776元/月sysbench测试:Sysbench场景2.2.1版本800并发2.2.1版本2000并发2.2.0版本800并发2.2.0版本2000并发性能提升point_select368768.08401115.95357033.85383850.57+3~5%read16_only164.17175842.29132726.85139712.47+20?25%read_write106222.37122152.4277727.5782000.08+35?50%write_only47657.7161934.61934.6139341.6139171.12466697.96+20?30%tpc-c-ccccccccccccccccccccc.1000tpclyllytpccclylytpccccccc.100tpccccccccc.100tpc。.03148623.13+19%可以参考性能白皮书:PolarDB-Xsysbench测试报告PolarDB-XTPC-C测试报告4.分布式1024节点PolarDB-X分布式数据库最大的特点是线性扩展,有许多分布式数据库被称为超大规模线性扩展,但理论和实践仍然需要结合。通过面向用户、可验证的方式,体验PolarDB-X在分布式1024节点下的稳定性。PolarDB-X提供了一个基于k8s的生态系统。构建的polardbx-operator组件,基于k8s分布式容器技术,可以快速构建PolarDB-X1024个节点。考虑到用户体验成本,采用虚拟化压缩部署方式,选择分布式1024个超大节点在24台ECS主机上完成。标准节点部署已通过近百万TPS的稳定性验证。PolarDB-X1024节点主机资源说明:PolarDB-X采用存储和计算分离的架构。CN和DN可以独立部署。实验设计部署了1024个DN节点。规模节点可支持1024*3TB=3PBDN节点选择最小的1C8GB(1024个节点也需要8TB内存),使用k8s多租户cgroup技术部署24个高端ECS。单台ECS平均需要承载40+个PolarDB-XCN/DN节点。本次实验所需的测试资源成本为24台ECS每小时288元,测试时间约为1天。预计费用为7000元。参考文档:分布式1024节点!1天玩转PolarDB-X超大规模集群02分布式CDC架构升级Binlog是MySQL记录变更数据的二进制日志。可以看做是一个消息队列,在MySQL中按顺序存储详细的增量变化信息。下游系统或工具通过消费队列中的变化项,实现与MySQL的实时数据同步。这种机制也称为CDC(ChangeDataCapture,增量数据捕获)。PolarDB-X是一款兼容MySQL生态的分布式数据库。通过实例中PolarDB-X的CDC组件,可以提供兼容MySQLbinlog格式的变更日志,对外隐藏实例扩缩容、分布式事务、全局索引等分布式特性,让您可以获取与单机MySQL数据库一致的数据。使用PolarDB-X2.2.1版本后,提供了两种形式的binlog日志消费和订阅能力,两种形式可以同时存在。单流模式:单流binlog日志(也叫Globalbinlog),将所有DNbinlog合并到同一个全局队列中,提供保证事务完整性和顺序的日志流,可以提供更高强度的数据一致性保证。比如在转账场景下,下游基于Globalbinlog连接PolarDB-X的MySQL可以随时查询一致余额。多流形式:即多流binlog日志(也称为Binlog-X),不是将所有DNbinlog合并到一个全局队列中,而是将数据进行哈希处理,分发到不同的日志流中,在一定程度上牺牲了事务的完整性,但是扩展性大大提高,可以解决大规模集群中单流binlog的单点瓶颈问题。CDC单流形式:PolarDB-XCDC单流形式CDC多流形式:PolarDB-XCDC多流形式多流binlog提供3种形式的数据拆分级别,多流业务时可设置激活以满足不同场景下的使用需求。库层根据数据库的名称计算Hash值并进行分发。即同一个库对应的binlog数据总是会按顺序路由到同一个binlog数据流中。适用于单个PolarDB-X实例上有多个数据库的场景。如果事务不涉及跨数据库操作。在这种策略下,不仅可以具备多流能力,还可以保证交易的完整性。表级根据数据表的名称计算Hash值并进行分发,即同一张表对应的binlog数据总是会按顺序路由到同一个binlog数据流,适用于具有大量表和单表(如DML、DDL等)在binlog日志流中保持排序的场景。记录级根据数据行的主键计算Hash值并进行分发,即同一数据行对应的binlog数据总是会按顺序路由到同一个binlog数据流,适合那些谁想把数据完全打散,不要求日志数据按数据库排序或者按表维护排序的场景,这个策略要求数据表必须有主键,表中的数据没有主键主键将被直接丢弃。使用示例:#查看binlog多流流列表SHOWBINARYSTREAMS;返回示例:+--------+----------------+----------------------------+----------+|集团|流|文件|位置|+--------+----------------+---------------------------+--------+|第1组|group1_stream_0|group1_stream_0#binlog.000001|3625148||第1组|#binlog.000001|3625148||第1组|group1_stream_3|group1_stream_3#binlog.000001|3625148|+--------+----------------+------------------------------+------------+MySQL相关命令经验:#不加WITH子句,可以查看单流服务的全局binlog文件列表。#添加WITH子句可以查看多流服务中某个流下的binlog文件列表。参数stream_name表示流名称SHOWMASTERSTATUS[WITHstream_name]SHOWBINLOGEVENTS[WITHstream_name]SHOWBINARYLOGS[WITHstream_name];##单流返回示例+---------------+------------+|登录名称|FILE_SIZE|+----------------+------------+|二进制日志.000001|4|+------------+------------+##多流返回示例+------------------------------+------------+|登录名称|FILE_SIZE|+--------------------------+---------+|group1_stream_0#binlog.000001|3626808|+----------------------------+------------+PolarDB-XCDC引入多流形式,可以在满足binlog兼容性的同时,结合业务场景提高分布式增量日志变更的吞吐量。同时,CDC的多流形式,为了更好的兼容现有的binlog开源生态,与alibabacanal合作,提供多流兼容消费的能力,参考PR:增加对polardbx的支持multibinlogstreams#4660canal使用示例:#canal一键拉起PolarDB-X多流binlogshrun.sh-ecanal.auto.scan=false-ecanal.instance.master.address=pxc-xxxx.polarx.xxxx.rds.aliyuncs.com:3306-ecanal.instance.dbUsername=tpcc-ecanal.instance.dbPassword=xxxx-ecanal.instance.connectionCharset=UTF-8-ecanal.instance.tsdb.enable=true-ecanal.instance.gtidon=false-ecanal.instance.multi.stream.on=false-ecanal.destinations.expr=group1_stream_{0-7}参考文档:CDC单流性能解读,Sysbench30wQPS/TPC-C100wtpmC,增量数据延迟时间<1秒CDC高位解读可用架构,可满足各种故障条件下20~45秒的RTO。CDC多流形式,以及如何创建CDC节点03时间点恢复(PITR)PolarDB-X2.2.0版本,我们正式提供了静态全量备份集的恢复能力。通过PolarDB-XBuckup工具(基于XtraBuckup改造),我们基于DN的物理备份方式,结合分布式并行提高备份吞吐量,备份速度可达GB/s,同时提供一致的分布式备份集。用户在使用阿里云数据库为用户服务的过程中,经常会遇到用户误删除数据,希望通过备份恢复的方式找回数据。对时间点恢复有强烈的需求。因此,在PolarDB-X2.2.1开源版本中,我们提供了增量日志备份+时间点恢复的完整能力,以满足用户数据库的安全需求。总体工作原理:PolarDB-X指定时间点恢复工作原理图:全量备份集,指定定时全量备份的调度规则,参考文档:PolarDB-X备份调度表02**1,4周一周四发起2点增量日志备份,近实时备份增量日志数据。备份的实时性决定了数据可以恢复的最晚时间点。参考文档:PolarDB-X增量日志备份启动时间点恢复(PITR),找到距离恢复时间点最近的全量备份集,然后找到全量备份集时间点和恢复之间的增量日志从增量备份的时间点,进行全量+增量物理恢复,参考文档:PolarDB-X指定时间点恢复示例:apiVersion:polardbx.aliyun.com/v1kind:PolarDBXClustermetadata:name:polardb-x-clone#恢复后的集群名称spec:topology:#集群规格nodes:cn:template:image:polardbx/polardbx-sql:latestdn:template:image:polardbx/polardbx-engine:latestrestore:#指定创建集群通过restoringfrom:clusterName:polardb-x#源PolarDB-X集群名time:"2023-03-24T11:11:11Z"#恢复时间点04MySQL一键导入PolarDB-X开源MySQL主从复制协议,主要支持增量日志的同步和消费。从MySQL8.0开始,内核中加入了ClonePlugin。全量通过物理文件复制,结合增量日志的同步和消耗,提供克隆实例的效果。PolarDB-X作为一个分布式数据库,在物理数据分布和文件格式上与开源的MySQL略有不同。为了方便用户体验类似MySQL8.0的ClonePlugin效果,PolarDB-X2.2.1提供了类似ClonePluginImport能力的一键式功能,通过DDL命令,可以迁移股票的表结构MySQL,对存量数据进行全量迁移,最终保持持续的增量数据同步工作原理:PolarDB-X一键导入工作原理示例://配置MySQLReplication关系,PolarDB-XCHANGEMASTERTOMASTER_HOST='10.0.0.1',MASTER_USER='root',MASTER_PASSWORD='xxxxxx',MASTER_PORT=3306,MASTER_LOG_FILE='mysql_bin.000001',MASTER_LOG_POS='58050130',SOURYCE_HOST_Tmysql,Mode='IMAGE';//指定模式为镜像镜像复制模式//设置需要同步的数据库表,不配置默认整个实例CHANGEREPLICATIONFILTERREPLICATE_DO_DB=(tpcc);//启动任务STARTSLAVE;//整个操作体验查看任务SHOWSLAVESTATUS\G,最大程度兼容MySQLDBA的运维体验。基于通用的主从复制管理方式,非常方便的实现单机MySQL到PolarDB-X的分布式一键迁移。如果考虑数据割接后的回滚链路,可以反向配置PolarDB-X到MySQL的主备复制链路。参考文档:PolarDB-X一键导入更详细的ChangeLogPolarDB-X各组件开源地址,欢迎访问githubgithub.com/polardb/polardbx-sql存储节点polardbx-enginehttps://github.com/polardb/polardbx-engine日志节点polardbx-cdchttps://github.com/polardb/polardbx-cdck8s算子组件polardbx-operatorhttps://github.com/polardb/polardbx-operatorrpc组件polardbx-gluehttps://github.com/polardb/polardbx-glue备份工具polardbx-backuphttps://github.com/polardb/polardbx-backup常用工具polardbx-toolshttps://github.com/polardb/polardbx-tools文档polardbx-operator-docshttps://github.com/polardb/polardbx-operator-docs完PolarDB-X是阿里自主研发的原生MySQL分布式数据库,坚持全内核开源的方式,保持开源的不断迭代。本次发布升级版V2.2.1,着重强化生产级关键能力,全面提升PolarDB-X面向数据库生产环境的易用性和安全性。期待PolarDB-X未来成为国内原生MySQL分布式数据库的开源领导者,继续做好开源!本文来源:PolarDB-X知乎