PolarDB-X开源分布式数据库实战进阶.pdf
《PolarDB-X开源分布式数据库实战进阶.pdf》由会员分享,可在线阅读,更多相关《PolarDB-X开源分布式数据库实战进阶.pdf(133页珍藏版)》请在咨信网上搜索。
1、封面页(此页面将由下图全覆盖,此为编辑稿中的示意,将在终稿 PDF 版中做更新)目录 PolarDB-X 的部署与运维.4 PolarDB-X 数据导入导出.25 对 PolarDB-X 进行 TP 负载测试.45 PolarDB-X 分区管理.71 PolarDB-X 的 TTL 表的使用和原理.92 PolarDB-X 冷热数据归档.107 PolarDB-X 读写分离和 HTAP 场景的实践.121 PolarDB-X 的部署与运维 4 PolarDB-X 的部署与运维 作者:吴迪,阿里云 PolarDB-X 技术专家 一、PolarDB-X 简介 PolarDB-X 是一款面向超高并发
2、、海量存储、复杂查询场景设计的云原生分布式数据库系统。其采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,具备企业级、云原生、高可用、高度兼容 MySQL 系统及生态等特点。PolarDB-X 最初为解决阿里巴巴天猫“双十一”核心交易系统数据库扩展性瓶颈而生,之后伴随阿里云一路成长,是一款经过多种核心业务场景验证的、成熟稳定的数据库系统。PolarDB-X 采用 Shared-nothing 与存储计算分离架构进行设计,系统由 4 个核心组件组成。计算节点(CN,Compute Node)计算节点是系统的入口,采用无状态设计,包括 SQL 解析器
3、、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务 2PC 协调、全局二级索引维护等,同时提供 SQL 限流、三权分立等企业级特性。PolarDB-X 的部署与运维 5 存储节点(DN,Data Node)存储节点负责数据的持久化,基于多数派Paxos协议提供数据高可靠、强一致保障,同时通过 MVCC 维护分布式事务可见性。元数据服务(GMS,Global Meta Service)元数据服务负责维护全局强一致的 Table/Schema,Statistics 等系统 Meta 信息,维护账号、权限等安全信息,同时提供全局授时服务(即 TSO)。日志节点(CDC,Cha
4、nge Data Capture)日志节点提供完全兼容 MySQL Binlog 格式和协议的增量订阅能力,提供兼容MySQL Replication 协议的主从复制能力。二、课程介绍 经过几个月的迭代,PolarDB-X 在近期推出了 V2.2 里程碑式的版本。该版本支持了国产化的适配,满足分布式数据库金融级标准特性的企业级能力:国产化适配:能够全面支持 ARM 架构芯片。PolarDB-X 的部署与运维 6 性价比优化:提供了更小的起步规格,同时通过优化 RPC 协议、单分片读写场景下的事务处理以及存储引擎 GCN 缓存等,使性能相对于 2.1 有了 60%的提升。云原生 HTAP:支持只
5、读集群,能够方便地使业务通过读写分离的方式实现在线业务与离线业务的资源强隔离。同时,只读集群的节点默认可参加 MPP 的并行计算,提高复杂查询的处理能力。MySQL 生态兼容性:兼容 MySQL 的存储过程 UDF 函数,同时兼容 MySQL Auto Increment,能够提供全局唯一单调递增的有序序列。数据库安全:支持全量 SQL 审计,支持误删数据后可快速恢复的 Flashback Query 能力。分布式数据管理:对 PolarDB-X 的分区表管理能力做了进一步加强,支持了基于 locality 的亲和性调度。另外,针对冷热数据,能够按照不同的存储进行分离式调度,降低使用成本。开源
6、配套工具:开源了很多配套生态工具,比如专门支持 DN 备份的 Polardbx-backup,压测工具 benchmark-boot,导入导出工具 batch-tool。轻量化部署和运维:推出了众多企业级特性,比如强一致备份恢复、参数模板的管理、容灾部署以及备库重搭等保障数据高可靠的能力。上图为本次课程相关资源 PolarDB-X 的部署与运维 7 PolarDB-X 目前支持多种部署方式,本次课程主要基于 PolarDB-X Operator 的部署方式进行介绍。PolarDB-X Operator 是 PolarDB-X 在 K8s 上的自动化运维系统,也是我们推荐的生产级部署方式。基于
7、K8s 的底层基础设施,可以在 K8s 集群上快速运维和管理PolarDB-X 集群。比如基于 K8s 的 deployment 管理无状态的 CN、CDC 节点,基于 StatefulSets 等方式管理有状态的 GMS 和 DN 节点。除了基本的生命周期管理能力外,PolarDB-X Operator 还支持弹性伸缩、高可用、安全可信、监控审计等运维能力。比如在本次 V2.2 版本中,重点支持了国产化的适配、全量的备份恢复、SQL 审计、参数模板和参数设置、备库重搭以及只读集群。未来,我们也会对 PolarDB-X 做进一步的改造和完善。比如目前的很多运维操作依赖于黑屏化的方式进行。未来,
8、我们会提供 PolarDB-X dashboard,可以通过白屏化的方式管理 PolarDB-X 集群。同时,对于备份能力也会进一步完善,比如实现自定义的备份策略,帮助用户定期自动备份,同时支持增量备份以及任意时间点的恢复能力。目前,PolarDB-X Operator 的调度更多依赖于 K8s scheduler 进行。在异构集群或对 IO 能力更敏感的集群上的调整能力还不够细粒度,未来也会进一步优化。PolarDB-X 的部署与运维 8 三、国产 ARM 支持 目前,市场上对于国产化服务器的需求较为强烈,PolarDB-X V2.2 版本已经全面兼容 X86 和 ARM 架构两种平台。不仅
9、包括内核(计算节点 CN、存储节点 DN、日志节点 CDC),也包括了生态工具,例如 K8s 上的集群运维管理平台 PolarDB-X Operator、压测工具 benchmark-boot、导入导出工具 batch-tools 都已完成 ARM架构的适配。上图给出了 PolarDB-X 在 Docker hub 上的几个重要镜像。基于 docker manifest 的方式,将两种不同架构的镜像通过相同的 tag 进行打包,用户在不同平台上部署时可以使用相同的方式,大幅减少了运维复杂度。Demo 演示:如何在 ARM 平台部署 PolarDB-X 进入阿里云官网-开发者社区-云起实验室-实
10、践系列课-PolarDB-X 开源分布式数据库进阶,点击实验 1 的查看详情-再次实验,即可进入实验页面。PolarDB-X 的部署与运维 9 在实验页面点击“创建资源”,系统会自动创建 ECS。创建完成后,ECS 的终端页面的云产品资源会列出相关实验的信息,包括云服务器的基本信息、IP、用户账号等。切换到实验手册 tab 页,按照步骤进行实验。首先,安装 Docker、Kubectl、minikube 和 helm3,在此基础之上安装 PolarDB-X Operator。PolarDB-X 的部署与运维 10 通过 uname 命令查看 ECS 架构。通过上图两条命令安装 Docker。安
11、装完成后,通过 systemctl 命令启动 Docker 服务。下载 kubectl 安装包,通过 chmod 命令,为文件赋予可执行权限,并将其移动到系统目录下,即可直接使用命令。安装 minikube,它可以帮助我们快速在 ECS 上创建一个虚拟的 K8s 集群,然后安装 PolarDB-X Operator 和创建 PolarDB-X 集群。先下载 minikube 安装包并进行安装,然后安装 helm3,完成解压安装后将其移动到系统目录下,即可直接使用。最后,安装 MySQL client,能够让方便地连接到创建好的 PolarDB-X 集群上。第一步,创建 K8s 集群,并在部署好
12、的 PolarDB-X Operator 上创建 PolarDB-X。首先,通过 minikube 创建 Kubernetes 集群。执行上图命令,切换到 galaxykube 账号下,执行 su galaxykube,切换到主目录下。PolarDB-X 的部署与运维 11 通过创建 K8s 集群,系统会帮助我们创建一个包含两个 4C12G 节点的 K8s 集群,集群版本为 1.23.3。K8s 集群安装完成后,通过上图命令查看集群基本信息。接下来,开始部署 PolarDB-X Operator。如上图,通过kubectl命令创建PolarDB-XOperator system命名空间,添加P
13、olarDB-X Operator 的 Helm 仓库,然后一键安装 PolarDB-X Operator。PolarDB-X Operator 安装完成后输出信息如上图所示。PolarDB-X 的部署与运维 12 部署 PolarDB-X 集群。首先通过 vm polardb-x.yaml 打开 YAML 文件,将对应步骤中给出的 YAML 文本内容粘贴到 YAML 文件。执行上图 kubectl apply-f polardb-x.yaml 命令,即可一键创建 PolarDB-X 集群。PolarDB-X 的部署与运维 13 创建过程中会产生上述 pod。其中 dn-0-cand-0 和
14、dn-0-cand-1 是 DN 节点中的leader 和 follower 角色,dn-0-log-0 为 log 节点。基于 Paxos 的三副本结构,每一个 DN 都会有三个 pod 来保障数据的高可靠。下一步:连接 PolarDB-X 集群。通过上图命令获取 PolarDB-X 集群的登录密码,然后通过 port-forward 命令将PolarDB-X service 的 3306 端口转发到本台 ECS 上。点击实验页面右上角“+”,创建新的终端号,通过上图命令连接 PolarDB-X。接下来,通过 create database 的方式创建 sysbench 数据库,并在 Pol
15、arDB-X 上通过 sysbench OLTP 的场景模拟真实业务流量。PolarDB-X 的部署与运维 14 首先执行 create database sysbench_test,然后输入 exit,退出连接。切换到galaxykube 主账号。创建一个 sysbench-prepare.yaml 文件,复制对应实验步骤中的文本,粘贴到 YAML文件中。保存 yaml 文件,执行上述命令,一键准备数据。PolarDB-X 的部署与运维 15 数据准备完成后,启动 OLTP 场景压测流量。首先创建 sysbench-oltp.yaml 文件,复制对应步骤中的 YAML 信息到文件中,执行 k
16、ubectl apply-f sysbench-oltp.yaml开启 sysench 的 oltp 压测流量。通过 kubectl get pods 查看当前 pod,结果如上图所示。通过 kubectl logs-f 命令查看当前的压测效果。结果显示,sysbench oltp 已经正常稳定运行,目前 QPS 约 1500-2000,RT 约 500毫秒。四、企业级运维能力 PolarDB-X Operator 在 2.2 版本支持的企业级运维能力包括日志采集(SQL 审计能力)、强一致备份恢复、备库重搭以及参数模板和参数设置四项能力。PolarDB-X 的部署与运维 16 PolarDB
17、-X 2.2 版本支持三种日志的自动采集,分别是:sql.log,记录全量的 SQL 信息,基于日志便可以构建全量的 SQL 审计功能。slow.log,记录慢 SQL 列表,可以帮助有效地监控 PolarDB-X 上是否存在慢SQL 或问题 SQL。error.log,即错误日志,可以帮助判断是否存在业务上的异常或系统上的异常。日志文件的采集采用了 Filebeats+Logstash 的开源解决方案。首先,Filebeats 会以 daemonSet 的方式部署在 K8s 的每个节点上,定时拉取相关日志文件,并将其投递到 Logstash 集群中。Logstash 负责对日志文本进行解析,
18、提取索引字段,同时将其发送给下游存储系统,默认推荐采用 Elasticsearch 的方式进行存储,通过Kibana 的方式做可视化的查询展现。上图展示了 Kibana 查询 PolarDB-X SQL 日志的截图,可以简单地利用查询语言,帮助定位问题 SQL 或高危 SQL。另外,采用 Logstash 的解决方案可以充分利用其多种 output plugin 的能力,将SQL 日志或慢日志投递到不同的存储系统中,比如 MongoDB、Datadog 或Clickhouse,构建自己的分析业务。PolarDB-X 的部署与运维 17 PolarDB-X 的备份流程分为几个步骤:对每一个 DN
19、 节点进行并行的物理备份,所有 DN 都备份完成之后,在增量日志里寻找一致性位点。然后,对增量的 binlog 日志进行裁剪,备份增量日志,进行元数据备份。为什要寻找一致性的位点?以经典的转账场景为例来说明:如上图,有一张账户信息表,一共有 4 个账户 a、b、c、d,其中 a、b 分布在 DN1,c、d 在 DN2 上。账户总金额为 200 元。在某一时刻,发生了 a 向 d 转账以及 c 向 b 转账。而此时恰好正在进行备份,且备份完成。如果要基于之前的备份集对数据进行恢复,则恢复出的数据应该只存在两种情况:两笔转账在 DN1 和 DN2 上都没发生或都发生了,不应该存在诸如 DN1 上发
20、生而 DN2 上没发生的情况。即四个账户的总金额始终要保持 200,保证全局数据的一致性。而如果没有保证全局数据的一致性,如上图下方所示,a 账号已经完成了转账,账户金额从 100 变为 50,但是该 50 元还未到 d 账户中,c 和 b 的情况类似,则会导致四个账户的总金额变成为 110,这对于业务而言是不可接受的结果。因此,我们需要找出一致性的位点,保证恢复的时刻所有该提交的事务都已完成提交,所有该回滚的事务都已全部被回滚。备份完成之后,PolarDB-X 备份集的构成如下:PolarDB-X 的账号、密码、元拓扑信息等元数据;每一个 DN 节点的全量物理备份,同时我们会为每一个 DN
21、节点配 PolarDB-X 的部署与运维 18 备增量的备份日志,保证所有 DN 都恢复到全局一致的位点,保证恢复出的数据的一致性。PolarDB-X 的备份集目前支持多种存储方式,包括 OSS、SFTP、NAS 等,未来也会支持 S3 等更多方式。Demo 演示:如何对 PolarDB-X 进行备份恢复 首先,在 ECS 创建 K8s 集群,集群由两个节点组成。创建 PolarDB-X 的实例,由一个 CN 节点和两个 DN 节点组成。本次实验将会初始化 100 个账户,在 100 个账户中进行并发的随机转账,验证PolarDB-X 实例的数据一致性。准备 K8s job,里面有转账测试的工
22、具。创建 job,查看 job 和 pod 的情况,如上图。执行上图命令查看日志输出。PolarDB-X 的部署与运维 19 登录到 PolarDB-X 实例,查看数据情况。首先,获取实例密码,将 PolarDB-X 实例的 service 转发到本台机器,在下面端口中连接 PolarDB-X 实例。执行 show database 查看数据情况,如上图。PolarDB-X 的部署与运维 20 查看其中的 accounts 表,如上图,统计全部账户总金额,显示为 10 万。过程中重复多次查询总金额,结果均为 10 万,证明 PolarDB-X 在正常的转账测试场景下能够保证全局数据一致性。我们
23、将在业务流量的场景下,对 PolarDB-X 实例进行备份,并恢复,同时对恢复的实例验证数据一致性。开启备份前,首先需要配置 PolarDB-X 备份集的存储方式。PolarDB-X 开源版本备份集存储方式默认支持两种,分别是阿里云的 OSS 以及 SFTP。本次实验采用 SFTP的方式。准备 SFTP 的配置文件,如上图所示。通过上图的 kubectl patch 命令使备份集的存储配置生效,再执行第二条命令重启HPFS 组件。上图为提前准备好的 PolarDB-X backup 的 YAML 文件。下面对 PolarDB-X 集群进行备份。PolarDB-X 的部署与运维 21 通过 ap
24、ply 的方式创建 PolarDB-X backup 对象即可进行备份。然后通过 kubectl get pxb-w 观察备份进度,如下图所示。备份完成后,删除创建的 PolarDB-X 集群,模拟数据丢失的情况。PolarDB-X 的部署与运维 22 上图为提前写好的 YAML 文件,定义了 PolarDB-X 恢复实例的规格以及相关属性。此处需要指定 restore 字段,指明通过前文创建的 PolarDB-X backup 备份集进行恢复。通过上图中 kubectl apply 命令创建实例,对原数据进行恢复。恢复完成后,统计账户总金额,结果显示依然为 10 万,满足数据的一致性要求。P
25、olarDB-X 的部署与运维 23 PolarDB-X 的 DN 是通过 Paxos 实现的 3 副本,包括的角色有 leader、follower、logger 以及只读的 learner 节点。任意节点的宕机都不会影响 PolarDB-X 整体的可用性。如果 leader 故障,follower 会自动成为 leader 对外提供服务。如果 follower故障,leader 依然可以对外提供服务。但如果 follower 所在主机故障,且无法恢复,DN 只剩 leader 和 logger 工作,如果此时再有主机或者节点出现故障,服务便会受到影响。因此需要将原先的 follower 从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PolarDB 分布式 数据库 实战 进阶
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【Stan****Shan】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【Stan****Shan】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。