PolarDB-X 的部署与运维(三)| 学习笔记

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习 PolarDB-X 的部署与运维。

开发者学堂课程【PolarDB-X 开源分布式数据库进阶课程 :PolarDB-X 的部署与运维(三)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1202/detail/18163


PolarDB-X 的部署与运维  


五、企业级运维能力

v2.2这个版本所支持的相关的企业级的运维能力主要包括四部分,分别是日志采集,(SQL 审计)、强一制备份恢复、备库重搭以及参数模板和参数设置。

1.日志采集

V2.2版本支持三种日志的自动采集,那分别是 sql.log,记录的全量 SQL 信息,基于这个日志我们便可以构建全量的审计的功能。slow.log,记录慢 SQL 列表,基于此可以帮助我们有效的监控 polarDB-X 上是否具有慢 SQL 或者存在问题。error.log ,也就是错误日志,可以帮助我们判断是否存在业务上的异常或者系统上的异常。

那这些日志文件是如何被采集的呢?下面是一张具体的一个架构图,采用 filebeats 和 logstash 的开源解决方案。首先 filebeats 会以 beatset 的方式部署在 K8s 的每一个节点上,定时拉取相关的日志文件,同时将其投递到 logstash 的集群中。logstash负责将这些日志的文本进行解析,提取出相应的索引字段,同时发送给下游的存储系统。这里默认推荐采用 Elastic search 的方式进行存储,然后通过 kilbana 的方式做可视化查询展现。

image.png

下面是一张在 kilbana 里面查询 polarDB-X  SQL 日志截图,

image.png

可以方便的利用它的查询语言帮助定位一些问题 SQL 或者高危 SQL 。如果采用 logstash 解决方案,也可以充分利用到它的多种 outputping 的能力,因为它可以支持不同的 outputping。即可以通过自己的定制将 SQL 日制或慢日志投递到不同的存储系统构建自己的实际业务。例如 mangoDB 等都是支持的,可以直接去在课后进行体验。同时那为了能够更深入的了解、体验日志采集的功能,我们提供了一个云起实验室《如何采集 polarDB-X SQL 到Elasticsearch》,可以在课后直接在实验室上去进行体验。

2.强一致备份恢复

首先 Polo dx 的备份流程分为下面几个步骤。

第一步对每一个 dn 节点进行物理并行的物理备份,等所有的 dn 都备份完成后,会根据一致性的算法在每个 dn 的增量至里面寻找一致性的位点。下面通过经典的转账场景演示,存在一张账户信息表,分为一共有四个账户A、B、C、D,他们均匀的分布在 dn 1 和 dn 2 上。AB 在 dn1上,CD 在 dn 2上,账户总金额加起来是200元。在某一个时刻 A 向 D 转账,然后 C 又向 B 来进行转账,那恰好在这个时候进行备份,之后备份完成。现在要基于之前的备份集来对数据进行恢复,这种情况下,恢复出的数据存在两笔转账都没发生或都发生了两种情况,不应该存在只有一笔转账发生而另一笔没发生的情况。即四个账户的总金额要始终保持200不变,这才能保证全局数据的一致性。第三个表格是一个反例,A 账号已经完成了转账,就是金额账户金额从100变成了50,但是转到转到50元还没有到 D 的账户中。那最终就会导致四个账户之间的总金额变成了110,这对于我而言是不可接受的。因此需要计算出一个一致性的位点来保证我恢复的时刻。有了理智性的位点后,便会对增量的那个日志进行裁剪,备份这份增加日志。最后一步是元数据的备份。 polarDB-X 备份集的构成是原数据,包括 polarDB-X 的账号密码源、拓步信息等。最后 dn 节点的全量物理备份,会为每一个 dn 节点配增加一个增量的备份日志。增量的备份日志会保证他们统一,所有的点都恢复全局一致的位点,保证恢复出的数据的一致性。目前 polarDB-X 备份集支持多种的存储方式,例如 oss、sftp 等,那未来我们也会支持更多的方式。

image.png

云起实验:《如何对 polarDB-X 进行备份恢复》

在上 ECS 创建一个 kubectl 集群。首先第一步输入 Kubectl get nodes 命令,加载出具体信息,这些信息中可以看到它是有两个节点组成的集群。通过提前创造好的 polarDB-X 实例,这个实例是由一个 cn 节点两个 dn 节点组成。接下来进行一个转账测试,来真实模拟转账流量。

首先输入  kubectl apply -f transfer.yaml,打开提前准备好的文件,里面有转账测试的工具。之后输入 kubectl get job ,创建新的 job。再输入 kubectl get pods,查看 pods 的情况。等所有 pods 进入 running 状态即可。之后输入  kubectl logs transfer-test-polan rdbx-wn6tb 查看日志情况。命令运行后可以看到已经开启了一个整个业务流量。之后登陆到 polarDB-X 查看数据情况。首先通过 kubectl get secret polardb-x -o jsonpatth="{.datal'polardbx_root']}" | base  命令,获取刚才创建的 polarDB-X 的密码。之后通过 kubectl port-forward sv c/polardb-x3306 命令转换端口。在这一端口中连接我的 polarDB-X。连接成功后输入 show Database,之后可以看到有一个 transfer test 数据库。再输入 use Transform_ test, 进行运行。之后再输入 show tables,运行后可以看到有一个 accomts 的表,输入 select * from accounts limit 5;可以查看数据运行情况,运行后可以看到每个账户的ID、账户余额。输入 Select Sum(balance)form accountants; 查看账户的总金额,之后多次进行查询,总金额数量是不变的,可以证明 polarDB-Xx 具有强一致性。

对 x 进行备份以及对备份出的数据进行验证。首先选择备份方式,目前 polarDB-X 备份仅支持 oss、sftp 两种。今天以sftp 的方式进行备份。首先,输入命令 cat backup-storage-patch.yami 打开提前准备好的 sftp  的 yami 文件。

image.png

这里面包含了sftp的名字。以及运行主机的 IP、Port、用户密码等。之后输入 kubect! -n polerdbx-operator-system patch configmap polardbx=hpfs=config 命令使存储生效,之后输入 kubectl -n polardbx-operator-system rollou it restart daemonsets polardbx-hp 重启组件。之后输入命令 cat polardb-x-backup:yaml 打开提前准备好的对应 的备份级 yaml 文件。 之后通过 kubectl apply -f polardb-x-backup. yaml 进行备份。之后可以通过 kubectl get pxb -w 观察运行情况。当备份对象变成finished的状态,表示备份已经完成。

之后对 polarDB-X 进行删除,然后根据刚才创建的备份集对对象进行恢复。^Cigalaxykube@iZuf660p6384azsfnl2cc87Z ~$ 执行这一命令,把整个测试和 polarDB-X 删除。

cat polardbx-restore.yaml 通过这一命令打开提前准备好的 yaml 文件,里面包含恢复数据的规格信息。

image.png

在这一文件中,通过制定一个

restore:

backupset: polardb -x-backup

[galaxykube@izuf660p634azsfnl2cc87Z~$

来进行恢复,之后输入

kubectl apply -f polardbx-restore.yaml,创建新的实例,对之前实例进行恢复。

可以通过  kubectl get polardbxCluster polardb-x restore -o wide -w 命令,观察实例状态,可以看出数据已经恢复。

之后观察数据内容是否满足要求。可以通过 kubectl get secret polardb-x-restore -o jsonp path="{.datal'polardbx_root']} 查看密码,之后通过 kubectl port-forward sv c/polardb-x3306 命令转换端口,之后在下面进行连接,之后和上述同样步骤来查看数据库情况,输入 show Database,之后可以看到有一个 transfer test 数据库。再输入 use Transform_ test, 进行运行。之后再输入 show tables,运行后可以看到有一个 accomts 的表,输入select * from accounts limit 5;可以查看数据运行情况,运行后可以看到每个账户的ID、账户余额。输入 Select Sum(balance)form accountants;查看账户的总金额,和原数据相同。

3.备库重搭(高可用)

备库重组是另一项重要的保证数据高质量的设定。polarDB-X 的 DN 节点是通过 XPacksouce`来实现的。一个三副本里面包括 leader、follower、logger、Learner。任意节点的宕机不会影响 polarDB-X 整体可用性。举个例子,如果leader 宕机,follower 会自动成为 leader,对外提供服务,如果 follower 宕机,leader 不会受到到影响,依旧对外提供服务。但是如果 follower 所在的主机彻底宕机,已经无法恢复。那这种情况下的话,dn 节点只有 leader 和logger 在运行。如果此时再宕机一个节点,这样的情况下我们的服务便会受到影响,因此需要一种办法将原来的follower 迁移到另外一个不同的节点上运行,重新恢复到三副本的状态。另外一种场景假如一台宿主机需要去做下线或者迁移,那么这台机器上的dn节点该怎么办?对于像 cn 还有 cdc 这样的无状态的节点,可以直接从负载均衡上摘除。但是 dn 这样的有数据的节点应该如何处理?那就是备库承担功能所使用的应用的场景啊。它可以将 follower 、logger 还有 learner 节点在另外节点上进行重建,然后加入 Packsouce 集群。但是不支持 leader 节点,因为 lerder 节点如果直接重建的话便会影响服务,因此如果想重建的节点的话,需要通主备切换的方式来将 follower 变成 leader,将 leader 降为 follower,即可做重建。同时假如机器能够恢复,又不想增加额外资源,也支持本地传达恢复。这边也对备库重搭提供了一个云起实验《如何对 polarDB-X  的存储节点发起备库重搭》帮助了解如何在副本数据损坏的情况下进行修复。

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
5月前
|
SQL 关系型数据库 Docker
开源PolarDB-X部署体验:挑战与反思
本文记录了部署开源PolarDB-X的体验及挑战。PolarDB-X是一款云原生分布式SQL数据库,具备高性能和可扩展性。部署中遇到的问题包括依赖冲突、文档不清晰及官方文档无法访问等。建议改进文档准确性、增强错误提示和支持、简化部署流程,如采用Docker简化快速入门。尽管部署未成功,但仍对PolarDB-X未来发展持乐观态度。
|
5月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB 开源部署体验评测
PolarDB 开源部署体验评测
113 3
|
1月前
|
存储 运维 关系型数据库
开源新发布|PolarDB-X v2.4.1 增强企业级运维能力
PolarDB-X 是阿里云推出的云原生分布式数据库,自2021年10月开源以来,持续迭代升级,至2024年4月发布的v2.4.1版本,重点增强了企业级运维能力,如无锁变更、物理扩缩容、数据TTL等,提供金融级高可用、透明分布式、HTAP一体化等特性。PolarDB-X 支持集中式和分布式一体化形态,兼容MySQL生态,适用于金融、通信、政务等行业。
|
2月前
|
存储 关系型数据库 MySQL
阿里云PolarDB解决游戏行业全球部署高并发问题
阿里云PolarDB解决游戏行业全球部署高并发问题
|
3月前
惊世骇俗!开源 PolarDB-X 部署安装大冒险,全程心跳与惊喜不断!
【9月更文挑战第8天】作为技术爱好者的我,近期成功完成了开源 PolarDB-X 的部署安装。尽管过程中遇到不少挑战,但通过精心准备环境、下载安装包、配置参数及启动服务等步骤,最终顺利实现部署。本文将详细介绍部署全过程及可能遇到的问题,为您的 PolarDB-X 探索之旅提供参考与启发,希望能让大家在技术海洋里畅游得更加顺利!
178 2
|
3月前
|
Kubernetes 关系型数据库 分布式数据库
PolarDB在混合云环境下的部署策略与挑战
【9月更文挑战第5天】随着云计算技术的发展,混合云成为众多企业首选,以满足数据管理和业务扩展需求。阿里巴巴自研的PolarDB是一款高性能云原生数据库,在混合云中可通过多种方式部署,如Kubernetes,实现资源弹性伸缩及自动化管理,并支持跨平台数据同步与金融级高可用性。然而,混合云环境下也带来了复杂性、成本优化及运维难度等挑战,企业需综合考虑平台兼容性、安全性和资源投入比例等问题。
123 5
|
4月前
|
Kubernetes 关系型数据库 分布式数据库
PolarDB在混合云环境下的部署策略与挑战
随着云计算的发展,混合云成为企业优选架构。PolarDB作为阿里云原生数据库,具备高可用、水平扩展和HTAP能力,在混合云中通过多种部署方式(如Kubernetes)实现资源弹性管理与数据实时同步。面对复杂性、成本优化及运维挑战,PolarDB提供解决方案确保数据安全与业务连续性。
113 4
|
4月前
|
存储
惊世骇俗!开源 PolarDB-X 部署安装大冒险,全程心跳与惊喜不断!
【8月更文挑战第8天】作为技术爱好者的我近期完成了开源PolarDB-X的部署安装,过程虽具挑战,但终获成功。现分享全过程:先确保服务器配置达标(内存、存储及网络)。接着下载官方最新稳定版,解压至指定目录。配置参数需细心调整以适配需求,如设置端口及数据路径。最后启动服务并留意可能的问题,如下载中断或配置错误等,可通过日志排查解决。部署完成后,见到服务正常运行时的喜悦难以言表。尽管PolarDB-X部署稍显复杂,但按部就班即可达成。期待与大家共同探讨学习!
229 1
|
4月前
|
监控 Oracle 关系型数据库
PolarDB 在多云环境下的部署与管理
【8月更文第27天】随着云计算的普及和发展,越来越多的企业开始采用多云策略来分散风险、优化成本并提高业务灵活性。阿里云的 PolarDB 是一种兼容 MySQL、PostgreSQL 和 Oracle 的关系型数据库服务,它提供了高性能、高可用性和自动化的管理功能。本文将探讨如何在多云环境下部署和管理 PolarDB 实例,并提供一些实用的代码示例。
106 0
|
4月前
|
Kubernetes Cloud Native 关系型数据库
k8s 部署polardb-x集群
k8s 部署polardb-x集群
179 0

热门文章

最新文章