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。
相关文章
|
21天前
|
关系型数据库 分布式数据库 PolarDB
开源PolarDB-X 部署安装全过程
本文介绍了开源PolarDB-X的部署安装步骤:首先,下载并解压PXD工具,配置至系统路径;然后,使用PXD工具进行部署,选择模式,输入参数,并等待部署完成;最后,验证集群状态。在遇到问题时,参考官方文档、社区支持或进行排查。建议包括优化文档、增强错误处理和建立用户反馈机制。
|
10天前
|
Ubuntu 关系型数据库 分布式数据库
开源PolarDB -X 部署安装
本文记录了在Ubuntu 20.04上部署阿里云分布式数据库PolarDB-X的步骤,包括环境准备、安装依赖、下载源码、编译安装、配置启动,并分享了遇到的配置错误、依赖冲突和日志不清等问题。作者建议官方改进文档细节、优化代码质量和建立开发者社区。安装历史记录显示了相关命令行操作。尽管过程有挑战,但作者期待产品体验的提升。
165 6
|
17天前
|
Kubernetes 关系型数据库 分布式数据库
【PolarDB开源】PolarDB在混合云环境下的部署策略与挑战
【5月更文挑战第29天】PolarDB,阿里云的高性能分布式数据库,应对混合云环境的部署策略包括:灵活的架构选择(如Kubernetes)、跨云平台数据实时同步及内置安全特性保障数据安全。然而,也面临复杂性、成本优化和运维难度等挑战。示例展示了使用Kubernetes StatefulSet部署PolarDB的基本配置。
223 3
|
22天前
|
关系型数据库 MySQL 数据库
测试部署PolarDB-X 分布式与集中式
在本文中,作者详述了在CentOS 7.9上部署测试PolarDB-X分布式与集中式数据库的过程。PolarDB-X作为阿里云优化的分布式数据库,提供高稳定性和与MySQL的兼容性,是应对单体数据库扩展性和性能瓶颈的解决方案,同时也符合国产化需求。文章介绍了部署环境准备,包括关闭防火墙和SELinux,设置系统参数,安装Python3和Docker,以及配置MySQL客户端。接着,通过PXD工具部署了PolarDB-X的集中式和分布式版,遇到的问题包括阿里云镜像源异常导致的部署失败以及指定版本安装的困扰。最后,作者进行了初步的压力测试,并对文档完善、生态工具建设以及提供更多使用案例提出了建议。
47711 9
测试部署PolarDB-X 分布式与集中式
|
22天前
|
监控 关系型数据库 MySQL
基于AnolisOS8.6+PolarDB-X部署ZABBIX6.0
在AnolisOS-8.6-x86_64-minimal虚拟环境中,使用VirtualBox配置2 vCPU,4G RAM和60 vDisk,下载并安装PolarDB-X,包括libaio和ncurses-devel依赖。创建polarx用户,设置权限和目录结构,编写my.cnf配置文件,然后初始化并启动PolarDB-X。接着安装ZABBIX 6.0,创建数据库、用户及权限,导入数据,并编辑Zabbix配置文件以匹配PolarDB-X。最后,重启相关服务,启用并检查状态,通过指定IP访问Zabbix Web界面,注意初始账号密码为Admin / zabbix。
|
23天前
|
存储 弹性计算 固态存储
*PolarDB-PG开源版本 基于ECS+ESSD云盘共享存储的部署测评**
PolarDB-PG在阿里云ECS与ESSD云盘的组合下展现优秀性能,简化部署流程,提供高并发写入时低延迟稳定性。ESSD的高性能IOPS和读取速度优化了数据库表现,只读节点实现近乎实时数据访问。分布式部署保证高可用性,即使面对故障也能快速切换。尽管ESSD初期成本较高,但长期看能降低总体拥有成本,尤其适合高并发、大数据量场景。此解决方案平衡了性能、可用性和成本,是企业级应用的理想选择。
|
24天前
|
自然语言处理 算法 关系型数据库
postgresql 全文检索 SCWS和zhparser部署
UPDATE report_content SET content_tsv = to_tsvector('testzhcfg',content);
31 8
|
1月前
|
存储 关系型数据库 分布式数据库
数据管理的艺术:PolarDB开源版详评与实战部署策略(二)
PolarDB-PG是阿里云的一款云原生关系型数据库,100%兼容PostgreSQL,支持Oracle语法,采用Shared-Storage存储计算分离架构,提供极致弹性、毫秒级延迟的HTAP能力。具备高可用、高可靠和弹性扩展特性,支持单机、存储计算分离和X-Paxos三节点等多种部署形态。通过Docker可快速部署实例,包括单节点、一主一备和HTAP(一主两备)实例。此外,文章还介绍了在ECS上使用ESSD云盘搭建PolarDB-PG的详细步骤,适合开发和测试环境。
222694 22
|
1月前
|
运维 监控 Java
开源PolarDB-X部署安装评测报告
在部署PolarDB-X时,需先准备符合要求的OS环境和安装JDK等依赖库。遇到的问题包括`protobuf`版本不兼容、`cmake`参数配置错误和启动服务时的配置挑战。文档更新滞后和错误信息不明确增加了安装难度。建议优化文档、提升错误信息引导性、提供自动化安装脚本、加强社区支持和产品功能。尽管安装过程复杂,但产品潜力值得认可,期待改进以提升用户体验。
134 8
|
1月前
|
存储 关系型数据库 MySQL
数据管理的艺术:PolarDB开源版详评与实战部署策略(一)
PolarDB-X是阿里巴巴自研的高性能云原生分布式数据库,基于共享存储的Shared-nothing架构,支持MySQL生态,具备金融级高可用、分布式水平扩展、HTAP混合负载等能力。它通过CN(计算节点)和DN(存储节点)实现计算与存储分离,保证数据强一致性,并支持全局二级索引和多主多写。PolarDB-X开源版提供更高程度的定制化和控制权,适合追求技术自主性和成本优化的开发者。部署方式包括RPM包、PXD工具和Kubernetes,其中PXD工具提供了一键部署的便利性。
233627 22

热门文章

最新文章