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

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 快速学习 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-X
《PolarDB-X 动手实践》系列第一期,体验如何一键安装部署 PolarDB-X。
相关文章
|
1月前
|
Docker 容器 关系型数据库
【PolarDB-X从入门到精通】 第四讲:PolarDB分布式版安装部署(源码编译部署)
本期课程将于4月11日19:00开始直播,内容包括源码编译基础知识和实践操作,课程目标是使学员掌握源码编译部署技能,为未来发展奠定基础,期待大家在课程中取得丰富的学习成果!
【PolarDB-X从入门到精通】 第四讲:PolarDB分布式版安装部署(源码编译部署)
|
5天前
|
关系型数据库 Linux 分布式数据库
源码编译实现PolarDB-X部署安装的体验报告
本文档记录了编译安装PolarDB-X的步骤,包括设置CentOS开发环境、从GitHub获取源码、编译(耗时较长)、解决依赖和权限问题、安装部署及测试验证。作者建议优化文档细节、减少编译时间、改进错误提示,并提议提供一键安装依赖脚本、新手视频教程及加强社区支持。整个过程虽有挑战,但具有成就感。
16 0
|
5天前
|
运维 监控 Linux
如何在Linux上部署1Panel运维管理面板并远程访问内网进行操作
如何在Linux上部署1Panel运维管理面板并远程访问内网进行操作
12 0
如何在Linux上部署1Panel运维管理面板并远程访问内网进行操作
|
14天前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用合集之关于在Docker环境中部署和维护PolarDB-X,有相关文章可以参考吗
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
14天前
|
消息中间件 运维 监控
基于SaaS云部署、云计算的区域医院云HIS系统源码(运维管理+运营管理+综合监管)
医院云his系统采用主流成熟技术开发,B/S架构,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问,前后端分离,多服务协同,服务可拆分,功能易扩展。多医院统一登录患者主索引建立、主数据管理,统一对外接口管理。
30 1
|
26天前
|
关系型数据库 MySQL 分布式数据库
【PolarDB-X从入门到精通】 第五讲:PolarDB集中式版安装部署(源码编译部署)
4月18日本周四晚19:00,一站式学习源码编译PolarDB-X标准版(集中式),各位敬请期待,我们不见不散!
【PolarDB-X从入门到精通】 第五讲:PolarDB集中式版安装部署(源码编译部署)
|
1月前
|
运维 Kubernetes 监控
构建高效自动化运维系统:基于容器技术的持续集成与部署策略
【4月更文挑战第4天】在数字化转型的浪潮中,企业对于软件交付的速度和质量要求越来越高。传统的运维模式已无法满足敏捷开发和快速迭代的需求。本文旨在探讨如何利用容器技术构建一个高效的自动化运维系统,实现软件开发生命周期中的持续集成(CI)与持续部署(CD)。通过分析容器技术的核心优势,结合DevOps文化和微服务架构,我们提出了一套系统的构建策略和实践步骤。文章将详细阐述从环境搭建到流程优化的全过程,以及在此过程中可能遇到的挑战和解决方案,为运维专业人员提供参考和指导。
|
2月前
|
SQL 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB-X部署三台失败如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
2月前
|
存储 Kubernetes 分布式数据库
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
129 0
|
8月前
|
缓存 运维 Linux
Linux(CentOS)运维脚本工具集合
Linux(CentOS)运维脚本工具集合
155 2