暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用Docker镜像在测试环境快速拉起一个PolarDB-X

原创 依米花开 2025-08-27
1124

背景介绍:

       公司有讨论是否要把当前的数据库迁移至阿里云的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 8527 chmod +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

如果在polardbx容器后台log中发现如下信息,那么恭喜你可以尝试登陆polardb-x了!

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报错信息部分截图

关键注意事项

  1. 密码规则:密码需符合 PolarDB-X 要求(6-32 字符,允许大小写字母、数字及 !@#$%^&*()_+-= 特殊字符)。
  2. 密码认证插件:需要显式地指定该用户使用传统的密码认证插件进行身份验证, 否则Navicat客户端会报错。
  3. 端口占用:若 8527 端口被占用,通过 sudo lsof -i:8527 查看占用进程,或修改映射端口。


通过以上步骤,即可在离线 Ubuntu 22.04 环境中快速拉起 PolarDB-X 容器并验证可用性。

最后修改时间:2025-08-28 10:54:06
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论