背景介绍:
公司有讨论是否要把当前的数据库迁移至阿里云的Polardb-X,出于熟悉和学习PolarDB-X的目的,打算在自己的测试环境先搭建一个PolarDB-X实例。
测试环境系统信息:ubuntu 22.04,8c ,32G Mem,100G disk, Docker已提前安装好。
据官方文档https://doc.polardbx.com/quickstart/topics/quickstart.html介绍, PolarDB-X 的安装有4种方式,因本文中的测试环境不能上外网,故采取了使用Docker镜像安装PolarDB-X的方式。
一、前期准备(需在有网络环境完成)
1. 下载 PolarDB-X 镜像
在能联网的机器上拉取 PolarDB-X 镜像(以官方镜像为例), 并上传本地私有的harbor镜像库:
bash
# 1. 拉取镜像(选择合适版本,如 v2.4.1) # https://hub.docker.com/r/polardbx/polardb-x/tags 查询polardb-x的tag docker search polardbx #查找镜像源是否有polardbx的镜像 docker pull polardbx/polardb-x:v2.4.1_5.4.19-amd64 #按标签拉取想要的polardbx镜像 #查看本地Pull好的镜像,有4.46G docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE polardbx/polardb-x v2.4.1_5.4.19-amd64 5eaee7cb5f15 8 months ago 4.46GB#polardb-x:v2.4.1_5.4.19-amd64标签拆解 #PolarDB-X 产品版本:v2.4.1 是PolarDB-X分布式数据库的整体发行版版本号 #内核版本:5.4.19 这意味着该版本的PolarDB-X在语法、协议、功能上与 MySQL 5.7(5.4.x是PolarDB-X内部对MySQL 5.7兼容版本的命名惯例)高度兼容,具体兼容到小版本5.4.19。 #平台架构:amd64 表示该镜像是为x86-64(即64位Intel/AMD)架构的CPU编译的
2. 将PolarDB-X 镜像上传到本地私有的harbor镜像库:
# 1. 拉取镜像(选择合适版本,如 v2.4.1)
# 本地pull好的polardbx镜像按需重新打标签, 格式:docker tag 本地镜像名:标签 Harbor地址/项目名/镜像名:标签
docker tag polardbx/polardb-x:v2.4.1_5.4.19-amd64 harbor.xxx.com/library/polardb-x:v2.4.1
# 将Docker镜像上传到本地私有harbor镜像源,格式:docker push Harbor地址/项目名/镜像名:标签
docker push harbor.xxx.com/library/polardb-x:v2.4.1
二、离线环境操作(Ubuntu 22.04 目标机器)
1. 从本机镜像源拉取PolarDB-X 镜像
#测试机上拉取 polardb-x:v2.4.1的镜像 docker pull harbor.xxx.com/library/polardb-x:v2.4.1#查看本地pull好的polardb-x信息docker images | grep polardb-x
2. 创建一个Polardbx的启动脚本start.sh
cd /opt/ mkdir polardbx cd polardbx sudo chmod -R 755 /opt/polardbx/ vim start.sh# 确保8527端口没有被占用 netstat -tulpn | grep 8527chmod +x start.sh # 检查网络是否存在 docker network ls | grep polardbx-network# 如果不存在,创建网络 docker network create polardbx-network
在start.sh中输入如下内容:

三、验证容器启动状态
1. 查看容器是否运行
#启动容器 cd /opt/./start.sh# 查看容器状态 docker ps -a | grep polardbx
2. 查看容器日志(排查错误)
# 查看r容器日志 docker logs polardbx# 查看更详细的日志(如果有更多输出) docker logs --details polardbx # 查看最近100行日志 docker logs --tail 100 polardbx#如果宿主机没有安装mysql-client,请先在自己的环境安装mysql-client便于后面登陆测试#Ubuntu环境下安装mysql-client sudo apt update sudo apt install mysql-client -y

3. 进入容器验证数据库
# 进入polardbx容器
docker exec -it polardbx bash
mysql -h127.0.0.1 -P8527 -upolardbx_root -pTest123
4. polardb-x初体验
-- 创建测试库polarx_examplecreate database polarx_example mode='auto';-- 切换到polarx_example数据库 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; --向example数据表中插入数据 insert into example values(null,'lily',375),(null,'lisa',400),(null,'ljh',500); -- 查询example表所有数据 select * from example; --查看example数据表的分区 show topology from example; --执行如下SQL语句,检查DN和CN。 show storage; show mpp;

5. 使用Navicat连接polardb-x
-- 创建测试用户testuser01 ,需要显式地指定该用户使用传统的密码认证插件进行身份验证,否则Navicat客户端会报错,即使telnet是成功的 create USER 'testuser01'@'%' IDENTIFIED WITH mysql_native_password BY 'Test123'; GRANT ALL PRIVILEGES ON *.* TO 'testuser01'@'%'; FLUSH PRIVILEGES;#在Navicat客户端工具所在机器测试安装好的polardbx是否可达: telnet 172.xx.x.xx 8527
在polardb-x中创建新用户时需要满足它的密码要求,否则会报错。
Navicat使用testuser01l连接polardb-x连接成功,能够看到刚刚创建成功的polarx_example库及其表example

题外话:
我尝试创建本地挂载目录,并赋予挂载目录所有用户均有读写的权限,但是后台容器log显示一直有报错, 因为时间关系我没有做更多的测试,我把所有的挂载目录(start.sh 脚本中-v 的4行数据去掉),重新创建并启动polardbx容器是成功的。
bash
-v /opt/polardbx/data:/home/polarx/polardbx/build/run/polardbx-engine/data/data \
-v /opt/polardbx/conf/my.cnf:/home/polarx/polardbx/build/run/polardbx-engine/data/my.cnf \
-v /opt/polardbx/logs:/home/polarx/polardbx/build/run/polardbx-engine/data/log \
-v /opt/polardbx/mysql:/home/polarx/polardbx/build/run/polardbx-engine/data/mysql \

start.sh脚本中加入挂载目录,后台容器log报错信息部分截图

关键注意事项
- 密码规则:密码需符合 PolarDB-X 要求(6-32 字符,允许大小写字母、数字及
!@#$%^&*()_+-=特殊字符)。 - 密码认证插件:需要显式地指定该用户使用传统的密码认证插件进行身份验证, 否则Navicat客户端会报错。
- 端口占用:若 8527 端口被占用,通过
sudo lsof -i:8527查看占用进程,或修改映射端口。
通过以上步骤,即可在离线 Ubuntu 22.04 环境中快速拉起 PolarDB-X 容器并验证可用性。








