PolarDB 开源部署体验评测
引言
非常荣幸受邀参与PolarDB 开源部署评测,以下是参与评测过程中的安装过程、遇到的问题以及改进的建议。
PolarDB-X作为 PolarDB的分布式版本, 是由阿里巴巴设计的高性能、云原生数据库。采用存储计算分离的无共享架构, 支持集中式与分布式模式, 提供金融级数据的高可用性、可扩展性及混合负载支持, 同时保持MySQL兼容性, 实现高吞吐、大存储、低延迟及易扩展的服务。
PolarDB-X采用双层架构,CN用于SQL处理,DN用于分布式事务和高可用性存储。它还包括用于元数据管理和安全的GMS,以及用于MySQL Binlog兼容和复制功能的CDC。
操作前的准备工作
首先, 确保你的操作系统环境符合要求 (例如 CentOS 7.x 或 Ubuntu 18.04)。根据官方文档,需准备适当的硬件与软件资源,包括 JDK、GFlags、Glog、Protobuf 和 GTest 等依赖库。本指南采用源码编译方式进行安装,这有助于深入理解系统的内部运作。在准备系统环境的过程中可能耗时较久,需要耐心等待。
由于PolarDB-X 支持通过 PXD 工具在本地一键安装,因此这里我们采用通过 PXD 工具安装。
安装过程
首先通过 PXD 工具部署 PolarDB-X 数据库需要先安装 Python3 和 Docker。
1、检查Python3是否安装正确
yum update -y
yum install -y python3
2、检查Docker是否安装正确
docker ps
3、安装 MySQL 命令行工具
sudo apt-get install mysql-shell
4、安装 PXD
注意: 推荐使用 virtual environment 安装 PXD 工具
python3 -m venv venv
source venv/bin/activate
安装前建议先执行如下命令升级 pip
pip install --upgrade pip
执行如下命令安装 pxd:
pip install pxd
注: 部分国内用户从 pypi 下载包的速度较慢, 可以使用如下命令从阿里云的镜像安装:
pip install -i https://mirrors.aliyun.com/pypi/simple/ pxd
执行如下命令验证 pxd 是否安装成功:
pxd version
注意:如果执行上述命令报了如下错误:
Click discovered that you exported a UTF-8 locale but the locale system could not pick up from it because it does not exist.
请执行如下命令后重试:
export LC_ALL=en_US.utf-8
export LANG=en_US.utf-8
5、部署 PolarDB-X
部署 PolarDB-X 企业版集群
PolarDB-X 企业版是分布式架构集群,支持更大数据量,面向具备企业级超高并发、大规模数据复杂查询、加速分析的业务场景。
直接运行 pxd tryout 命令会创建一个最新版本的 PolarDB-X 企业版集群,其中 GMS, CN, DN, CDC 节点各 1 个:
pxd tryout
如果需要创建指定版本的实例,您可以通过如下命令获取 PolarDB-X 各个组件的最新镜像tag:
curl -s "https://polardbx-opensource.oss-cn-hangzhou.aliyuncs.com/scripts/get-version.sh" | sh
输出内容如下所示(以 PolarDB-X V2.4.0 版本为例):
CN polardbx/polardbx-sql:v2.4.0_5.4.19
DN polardbx/polardbx-engine:v2.4.0_8.4.19
CDC polardbx/polardbx-cdc:v2.4.0_5.4.19
通过如下命令,指定 CN,DN, CDC 节点的个数以及版本:
pxd tryout -cn_replica 1 -cn_version v2.4.0_5.4.19 -dn_replica 1 -dn_version v2.4.0_8.4.19 -cdc_replica 1 -cdc_version v2.4.0_5.4.19
tryout 模式创建的 GMS 和 DN 默认采用单副本模式,如果您想创建基于 Paxos 的三副本的集群,使用如下命令:
pxd tryout -leader_only false
注:三副本模式需要 pxd版本>=0.3.0
PolarDB-X 数据库创建完成后,会输出对应的连接信息:
注意:PolarDB-X 管理员账号的密码随机生成,仅出现这一次,请注意保存。
通过 MySQL Client 即可连接,执行如下 SQL 初步体验 PolarDB-X 的分布式特性。PolarDB-X SQL 详情请参考:SQL 概述
检查GMS
select * from information_schema.schemata;
创建分区表
create database polarx_example partition_mode='partitioning';
use polarx_example;
create table example (
id
bigint(11) auto_increment NOT NULL,
name
varchar(255) DEFAULT NULL,
score
bigint(11) DEFAULT NULL,
primary key (id
)
) engine=InnoDB default charset=utf8
partition by hash(id)
partitions 8;
insert into example values(null,'lily',375),(null,'lisa',400),(null,'ljh',500);
select * from example;
show topology from example;
检查CDC
show master status ;
show binlog events in 'binlog.000001' from 4;
检查DN和CN
show storage ;
show mpp ;
6、部署 PolarDB-X 标准版集群
PolarDB-X 标准版采用一主一备一日志的三节点架构,性价比高,通过多副本同步复制,确保数据的强一致性。面向具备超高并发、复杂查询及轻量分析的在线业务场景。
注:标准版集群创建依赖 pxd版本>=0.6.0
• 执行如下命令会创建一个最新版本的 PolarDB-X 标准版集群,其中 GMS, CN, CDC 个数为0,仅包含一个DN节点。
• pxd tryout -t standard
• tryout 模式创建的集群采用单副本模式,如果您想创建基于 Paxos 的一主一备一日志的三节点集群,使用如下命令:
• pxd tryout -t standard -leader_only false
PolarDB-X 数据库创建完成后,会输出对应的连接信息:
注意:PolarDB-X 管理员账号的密码随机生成,仅出现这一次,请注意保存。
通过 MySQL Client 即可连接。执行如下 SQL 体验PolarDB-X 标准版三节点架构的特性:
查询三节点的拓扑信息与状态
select * from information_schema.alisql_cluster_global;
查询三节点的延迟信息
select * from information_schema.alisql_cluster_health;
查看 PolarDB-X 状态
执行如下命令,查看当前环境的 PolarDB-X 列表:
pxd list
7、清理 PolarDB-X
执行如下命令,即可清理本地环境所有的 PolarDB-X:
pxd cleanup
8、非 root 用户如何获取 docker 权限
1.创建 docker 用户组,其实 docker 安装时会自动创建一个名为 docker 的用户组,可以通过查看 /etc/group 确认 docker 用户组的存在,如若不存在则手动创建 docker 用户组
sudo groupadd docker
2.添加当前非 root 用户到 docker 用户组中
sudo gpasswd -a ${USER} docker
3.将当前非 root 用户的 group 切换到 docker 用户组或者退出后重新登录
newgrp docker
4.执行 docker ps 验证
PolarDB-X 端口占用说明
目前本地测试模式,CN,DN,GMS 节点各会占用一个端口,该端口随机生成,如果因为端口冲突导致 PolarDB-X 创建失败,请执行 pxd cleanup 或者 pxd delete {集群名} 清理后重新创建即可。
部署过程体验:
本次部署流程顺畅,阿里云文档详尽清晰,新手也能快速掌握。通过控制台轻松完成ECS实例创建与ESSD云盘挂载。PolarDB-PG安装脚本自动化水平高,简化集群配置与初始化,尤其优化了读写分离配置过程,减少手动设置的复杂度。
性能评估:
ESSD云盘以卓越的IOPS和吞吐量超越普通云盘,对数据库等I/O密集型应用至关重要。压力测试显示,PolarDB-PG在高并发写入时表现出低且稳定的延迟,证实ESSD显著提升性能。此外,仅读节点得益于ESSD的高速读取能力,实现了近乎实时的数据访问。
高可用性验证:
在部署过程中,重点关注了PolarDB-PG的高可用性设计。通过利用ECS的可用区特性,实现了读写节点和只读节点的分散部署。模拟故障后,PolarDB-PG能快速自动切换到备用节点,保障服务连续性。ESSD云盘则加强了数据的持久性和可靠性,提升了整体系统健壮性。
总结:
综上,采用阿里云ECS+ESSD部署PolarDB-PG读写/只读节点,在性能、高可用性和成本效益间取得理想平衡,特别适合追求高性能与成本控制的企业应用。随PolarDB-PG社区发展,其开源领域竞争力将进一步提升。