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分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
2月前
|
SQL 关系型数据库 Docker
开源PolarDB-X部署体验:挑战与反思
本文记录了部署开源PolarDB-X的体验及挑战。PolarDB-X是一款云原生分布式SQL数据库,具备高性能和可扩展性。部署中遇到的问题包括依赖冲突、文档不清晰及官方文档无法访问等。建议改进文档准确性、增强错误提示和支持、简化部署流程,如采用Docker简化快速入门。尽管部署未成功,但仍对PolarDB-X未来发展持乐观态度。
|
19天前
|
存储 运维 Shell
运维.Linux.bash学习笔记.数组及其使用
运维.Linux.bash学习笔记.数组及其使用
23 0
|
2月前
|
关系型数据库 测试技术 数据库
开源PolarDB-X部署体验:探索与反馈
在 cloud DB 技术发展中, PolarDB-X 凭借高性能和可扩展性备受瞩目。本文分享了其部署体验!
282 6
开源PolarDB-X部署体验:探索与反馈
|
2月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用问题之如何基于Docker进行PolarDB-X单机模拟部署
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之如何基于Docker进行PolarDB-X单机模拟部署
|
23天前
|
存储
惊世骇俗!开源 PolarDB-X 部署安装大冒险,全程心跳与惊喜不断!
【8月更文挑战第8天】作为技术爱好者的我近期完成了开源PolarDB-X的部署安装,过程虽具挑战,但终获成功。现分享全过程:先确保服务器配置达标(内存、存储及网络)。接着下载官方最新稳定版,解压至指定目录。配置参数需细心调整以适配需求,如设置端口及数据路径。最后启动服务并留意可能的问题,如下载中断或配置错误等,可通过日志排查解决。部署完成后,见到服务正常运行时的喜悦难以言表。尽管PolarDB-X部署稍显复杂,但按部就班即可达成。期待与大家共同探讨学习!
67 1
|
29天前
|
运维 安全 网络安全
自动化运维:使用Python脚本实现批量部署
【8月更文挑战第2天】在现代IT基础设施管理中,自动化运维成为提升效率、减少人为错误的关键。本文将通过一个实际的Python脚本示例,展示如何实现服务器的批量部署,包括环境准备、代码实现及执行过程。文章旨在为运维工程师提供一种简化日常任务的方法,同时强调安全性和可维护性的重要性。
|
30天前
|
运维 安全 测试技术
自动化运维的利剑:Ansible在企业级部署中的应用与挑战
本文深入探讨了Ansible,这一领先的IT自动化工具,如何在企业级部署中扮演关键角色。我们将通过实际案例分析,揭示Ansible在简化配置管理、加速应用部署和提高运维效率方面的优势。同时,文章也将不回避Ansible实施过程中可能遇到的技术挑战与限制,并提供针对性的解决策略。阅读本文后,您将获得一个全面的视角,理解Ansible在现代企业运维中不可或缺的地位,以及如何克服其面临的主要问题。
36 1
|
11天前
|
Kubernetes Cloud Native 关系型数据库
k8s 部署polardb-x集群
k8s 部署polardb-x集群
|
2月前
|
存储 Ubuntu 关系型数据库
PolarDB-X部署测评
7月更文挑战第1天
|
1天前
|
运维 监控 应用服务中间件
自动化运维:打造高效、稳定的系统环境
【8月更文挑战第30天】本文将探讨如何通过自动化运维技术,提升系统的稳定性和效率。我们将从基础概念出发,逐步深入到实践应用,分享一些实用的工具和技术,以及如何将这些工具和技术融入到日常的运维工作中。无论你是运维新手,还是有一定经验的老手,都能在这篇文章中找到有价值的信息。让我们一起探索自动化运维的世界,提升我们的工作效率,让系统运行得更加平稳。

热门文章

最新文章

下一篇
云函数