当前位置:   article > 正文

Polardb MySQL 产品架构及特性

Polardb MySQL 产品架构及特性

一、产品概述;
1、产品族
在这里插入图片描述
参考:https://edu.aliyun.com/course/3121700/lesson/341900000?spm=a2cwt.28120015.3121700.6.166d71c1wwp2px
2、polardb mysql架构优势
在这里插入图片描述
1)大容量高弹性:最大支持存储100T,最高超1000核CPU,可扩展到16个计算节点,预期5分钟完成只读实例和升降配置,支持临时升级弹性伸缩应对业务高峰
2)高可靠高可用:基于分布式共享存储,数据3副本,多可用区部署,主节点故障后30s内切换到任意只读节点,秒级备份,可按时间点快速恢复数据,全球数据库,实现高效异地容灾,
3)高性能低延迟:分布式共享存储确保主从数据毫秒延迟,提高超高I/O吞吐能力,通过多个计算节点自动读写分离,高并发性能是自建开源数据库的5-6倍,内置原生并行查询parallel Query,充分利用多核CPU,10倍提升大表并行查询能力
4)安全可控:黑白名单设置访问权限,SSL加密确保数据传输链路安全,TDE对数据存储过程进行加密和解密,数据库、表、和列可设置动态脱敏查询,一键SQL洞察,对SQL进行健康诊断,设别高危SQL

3、支持版本:Mysql 5.6、5.7、8.x
4、部署架构
在这里插入图片描述
1、可抵御机房级故障2、默认双可用区部署3、主可用区故障时,可手工进行主备可用
区切换 4、每个可用区3副本,两个可用区共6副本

二、特性
连接访问
PolarDB集群的连接地址(又称为Endpoint)分为主地址、集群地址(又称为默认集群地址)和自定义地址三种类型。其中,默认集群地址和自定义地址都是通过数据库代理来实现的,即这两类地址的请求是经过代理节点,而主地址的请求不经过代理节点。在连接PolarDB集群时,您可以填写PolarDB集群的上述三种地址,推荐使用默认集群地址
在这里插入图片描述
在这里插入图片描述
参考:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/connection-address?spm=a2c4g.11186623.0.0.7621eb655wRGbM

一致性
最终一致性:不保证实时读到最新的数据,但是最终数据是一致的。
会话一致性: 保证同一个会话内,一定能查询到最新的数据。
全局一致性:保障不同会话间,也一定能查询到最新的数据。

分布式共享存储
在这里插入图片描述
社区Mysql:1、通过逻辑日志进行主从库同步,主从节点延迟大, 2、 添加只读节点,社区mysql增加只读节点与数据量强相关,需要完整复制数据,耗时很长(小时级) 3、主从切换故障切换(分钟级),不能保障RPO = 0 4、涉及Mysql一般建议表500万-1000万记录,6T以内存储空间
Polardb mysql:1、数据文件和物理日志均实时写入共享存储,主从节点毫秒级低延迟2、添加只读节点,无需拷贝数据,5分钟快速提供服务3、30秒内主备故障切换(Failover),只读节点均可以从存储中获取最新的物理日志,确保RPO=0 4、polardb单表亿级别,100T存储空间 5、RO节点毫秒级延迟,基于redo的物理复制,redo日志传输同步实时进行,无需等待事务结束,RW节点向共享存储写redo日志,redo通过网路或共享存储发送给RO节点,RO节点拿到redo日志解析应用,通过redo信息更新buffer pool配置状态,还有一些cache,逻辑事务状态更新,传统的逻辑复制事务开始,一定会等到commit才会生成一个binlog,然后传到备库应用,如果事务比较大,备库延迟会比较大

参考:https://edu.aliyun.com/course/3121700/lesson/341900000?spm=a2cwt.28120015.3121700.6.166d71c1wwp2px

三、高级特性
1、安全性
访问安全:通过白名单和安全组控制
数据传输安全:SSL加密,SSL在传输层对网络连接进行加密提升通信的安全性和完整性
数据安全:透明数据加密TDE,对数据文件执行实时I/O加密和解密,数据写入磁盘之前进行加密,从磁盘读入内存时进行解密
数据脱敏:当应用程序发起数据查询请求时,系统会在数据库内部对脱敏数据进行变换后再返回给应用程序,开始查询前,仅需指定需要进行脱敏查询的数据库账号,以及需要脱敏的数据库、表即可
安全审计:sql审计记录业务执行的sql,方便硕源问题

参考:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/data-security-and-encryption/?spm=a2c4g.11186623.0.0.1bb7264fnt7ujG

2、备份恢复
在这里插入图片描述
PolarDB支持数据备份和物理日志备份。数据备份即将某个时间点上集群的全量数据生成一个备份集(快照),即全量备份;物理日志备份即记录生成备份集后的增量数据,即增量备份。通过一个完整的数据备份以及后续一段时间的Redo日志备份,就可以将整个PolarDB集群或特定库表恢复到任意时间点。

一级备份采用ROW(Redirect-on-Write)快照的方式,直接保存在PolarDB分布式存储系统上。每次保存时,一级备份并没有真正复制数据,当数据块有修改时系统会将其中一个历史版本的数据块保留给快照,同时生成新的数据块被原数据引用(Redirect)。因此无论数据库容量多少,都可以做到秒级备份。

PolarDB集群备份和恢复功能均采用多线程并行处理,并通过其他技术创新,预计10分钟内(开启热备集群后恢复时间将加倍)即可完成从备份集(快照)恢复到一个新的集群。具体耗时与数据库的数据量大小等因素有关。

二级备份是指一级备份压缩后保存在其他离线存储介质上的备份数据。保存成本较低,但使用二级备份恢复数据的速度较慢。

开启二级备份后,若一级备份超出您设置的保留时间,将会被自动转存为二级备份,转存速度约为150 MB/秒。

二级备份支持同地域备份和跨地域备份

备份原理:采用Redirect-on-Write 机制,每次创建快照并没有真正Copy数据,只有建立快照索引,当数据块后期有修改(Write)时才把历史版本保留给Snapshot,然后生成新的数据块,被原数据引用(Redirect)

恢复:
1)闪回
闪回查询、实例回收站支持特定表或记录快速回退至某一历史时刻,可以快速恢复应对误操作
粒度:记录级回滚
时间范围:3天内
恢复耗时:秒级或分钟级

参考:
https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/flashback-queries?spm=a2c4g.11186623.0.0.7fa67f07kKaTyZ

https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/restore-a-released-cluster?spm=a2c4g.11186623.0.0.5a47539eaSXHZJ

2)库表恢复
粒度:单库 单表 完整实例
实现:快照+redo log
恢复耗时:和数据量相关

3)按时间点恢复

3、GDN(全球数据库)

在这里插入图片描述
适用场景

异地多活

如果业务部署在多个地域,传统网络下,数据库在主地域,其它地域的应用需要跨地域访问主地域的数据库,网络延迟会导致数据库性能低下,带来不良的用户体验。通过全球数据库网络的跨地域低延迟同步、跨地域读写分离、本地就近读取等特性,可以确保各地域的应用访问数据库时的延迟小于2秒。

异地灾备

不论业务部署在一个或多个地域,都能通过全球数据库网络实现异地容灾。当主集群出现地域级别的故障时,您只需要手动将您的业务切换到从集群。

请求路由
GDN中每个集群的读写请求路由,是由对应集群的Cluster vip(Endpoint)配置决定。例如Cluster vip2配置为可读可写,并且主库接受读,那么读请求就会路由到主集群的主节点,这时请求延迟可能会较大;如果Cluster vip3配置为只读,那么读请求只会路由到从集群的只读节点,不会路由到主集群和从集群的主节点。

4、DDL
传统的Mysql与Polardb的DDL影响比较:
传统的依赖binlog同步复制数据到备库,binlog只有在事务结束的时候数据才会写入binlog文件,传输到从节点应用binlog,主从延迟是由应用binlog决定的。对于dml没有太大问题,DML本身执行时间不会太长,没有问题,但是DDL执行时间一般会时间比较久,会导致从库延迟比较大

polardb共享存储,共享ibd及同一份元信息,PolarDB采用物理复制方式进行同步,主库DDL变更过程会不断地将redo日志会实时传入从节点进行应用,主库语句结束的时候,从节点会立即感知到新的表结构
从节点毫秒级延迟,,

PolarDB DDL执行流程
1: RW节点持有X锁之后,写redo通知RO(RW动元数据的时候,是要求RO不能访问的,通过MDL锁实现的)
2: RO节点解析redo,获取MDL锁,同时进行cache的清理(内存有旧的表结构,需要清理)
3: RO发送同步MDL成功与否信息到RW

preoare和commit会拿MDL锁

参数:
lock_wait_timeout (RW 锁超时时间)
replica_lock_wait_timeout 默认50s(RO从拿锁到等待50秒抛错)

Polardb DD能力:
1、并行DDL
传统单线程 DDL :大表上的 DDL 操作往往需要数小时甚至数天的时间,严重影响了后续相关操作;
并行 DDL:需要单线程多的通过多线程实现,利用并行 Scan/build Index,和高度优化的并行
merge sort,可以将 DDL耗时降低到原来的 1/17

参数 :支持版本:57、801、802
innodb_polar_parallel_ddl_threads 并行线程数(限制上限为16) 默认是1
innodb_polar_use_sample_sort sample sort优化功能开关
innodb_polar_use_parallel_bulk_load 并行bulk load优化功能开关

官网文档:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/parallel-ddl?spm=a2c4g.11186623.0.0.4d10578bPBcPjJ

2、秒级DDL
1)大表加列问题

1.需要重建表空间/索引,所有数据行需要改变长度用于 存放新增的数据;
2. DDL操作时间久,并且占用大量系统资源,影响系统吞吐;
3. 一旦crash,恢复时间非常长

基本原理:
通过维护一个系统表,记录新加列的default值,访问老数据,新加列的值从系统表获取,而对于新插入的数据则可以直接获取,这样无需动老数据从而实现了秒级的结构变更。
支持版本:5.6、57、801、802
5.6需要通过申请开通支持;
5.7需开启参数loose_innodb_support_instant_add_column

2)大表改列
1.除了大表加列的固有问题,绝大多数改列DDL都是锁表的(Copy DDL);
2.使用DMS无锁变更对于大表来说,耗时非常久。

秒级改列的核心思想是:
当用户进行改列操作后,我们将更改前后表的元信息都记录下来。此后新生成的record中新增一个version字段,这样,后续就可以根据rec中的version字段,正确的选择元信息对该记录进行解析

官网文档:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/instant-add-column?spm=a2c4g.11186623.0.0.76a7412a6eQqmA

3、异步并行MDL同步
官网文档:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/async-metadata-lock-replication?spm=a2c4g.11186623.0.0.419a7de6vWlwQP

4、RO语句级MDL锁+抢占式DDL
防止只读节点上长事务阻塞DDL操作:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/prevent-long-running-transactions-on-read-only-nodes-from-blocking-ddl-operations?spm=a2c4g.11186623.0.0.1cd01f2dMyfm0e
抢占式DDL:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/preemptible-ddl?spm=a2c4g.11186623.0.0.aee55dc69PKaj8

5、在线分区维护:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/online-partition-maintenance?spm=a2c4g.11186623.0.0.6383675cinfGNc

6、
非阻塞DDL:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/nonblocking-ddl-statements?spm=5176.28426678.J_HeJR_wZokYt378dwP-lLl.1.72c651814ympzE&scm=20140722.S_help@@%E6%96%87%E6%A1%A3@@436462.S_BB2@bl+RQW@ag0+BB1@ag0+os0.ID_436462-RL_%E9%9D%9E%E9%98%BB%E5%A1%9EDDL-LOC_searchUNDhelpdocUNDitem-OR_ser-V_3-P0_0

7,表回收站:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/table-recycle-bin?spm=a2c4g.11186623.0.0.3ec9591eL14lfK

5、并行查询 8.0
https://help.aliyun.com/zh/polardb/polardb-for-mysql/performance-test-results-in-parallel-query-scenarios?spm=a2c4g.11186623.0.i12

https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/overview-22?spm=a2c4g.11186623.0.i15#concept-1563422

6、列索引

7、性能诊断(DAS)

8、数据同步

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/395443
推荐阅读
相关标签
  

闽ICP备14008679号