当前位置: 首页 > news >正文

docker上部署 PolarDB-X v2.4.2数据库

在这里插入图片描述
2025年09月开源PolarDB-X正式发布v2.4.2版本,重点完善周边生态能力,包含:新增客户端驱动(PolarDB-X Connector)、新开源polardbx-proxy组件,同时面向数据库运维和稳定性优化,提供在千亿大表场景下的实践验证,包含DDL在线变更、数据库扩缩容、数据TTL等的多项问题修复。PolarDB分布式版(简称“PolarDB-X”)是阿里云自主研发的云原生集中式和分布式一体化数据库产品,整体采用了基于存储计算分离的Shared-Nothing系统架构,支持水平扩展、分布式事务、混合负载等能力,具备金融级高可用、高吞吐、大存储、低延时、易扩展、高度兼容MySQL系统及生态等特点。
在这里插入图片描述
PolarDB具备多种产品输出形态:公共云、专有云、DBStack、轻量版(纯软输出)。不同产品输出形态采用同一套内核版本,充分发挥公有云产品管理和迭代优势,保障客户云上云下业务兼容,降低数据库管理成本。

2021年10月,阿里云宣布对外开源云原生分布式数据库PolarDB-X,采用全内核开源的模式,开源内容包含计算引擎、存储引擎、日志引擎、列存引擎等,

通过docker镜像,可以一键拉起 polardbx-proxy

wget https://raw.githubusercontent.com/polardb/polardbx-proxy/refs/heads/main/polardbx-proxy/quick_start.shquick_start.sh -e backend_address=127.0.0.1:3306 -e backend_username=appuser -e backend_password=appuser -e memory=4294967296

backend_address: 数据库地址(格式:ip:port,leader或者follower的地址);
backend_username: 数据库用户名;
backend_password: 数据库密码(必须有密码,必须使用 mysql_native_password);
memory: Proxy使用内存(单位B,请正确配置,否则可能会导致OOM,推荐 16GB,最少 4GB);

无需过多配置,可以直接访问,默认为3307端口。

mysql -Ac -h127.1 -P3307 -uappuser -pappuser

整体的效果和直连PolarDB-X标准版体验基本一致,可以无缝适配数据库的用户名和schema等,polardbx-proxy仅支持对接一个polardbx 实例(多个副本),不支持挂载不同的polardbx实例。

比较实用的管理指令:

  1. show cluster (查询PolarDB-X后端Paxos集群信息)
  2. show rw / show ro (查询proxy的链接池情况)
  3. show properties(查询proxy配置参数)

Java
https://repo1.maven.org/maven2/com/alibaba/polardbx/polardbx-connector-java

GO
https://github.com/polardb/polardbx-connector-go

C++
https://github.com/polardb/polardbx-connector-cpp

简单maven使用例子:

<dependency><groupId>com.alibaba.polardbx</groupId><artifactId>polardbx-connector-java</artifactId><version>2.2.10</version>
</dependency>

JDBC URL样例:

jdbc:polardbx://111.16.60.147:6991/test

驱动包名:com.alibaba.polardbx.Driver

协议标志头:polardbx

ip端口指定:
标准版三节点其中一个IP:port或者VIP:port,或者多个IP0:port0,IP1:port1(必须为同一集群中的节点,以英文逗号分隔),建连时会被路由到 leader 节点。
企业版其中一个IP:port或者VIP:port,或者多个IP0:port0,IP1:port1(必须为同一集群中的节点,以英文逗号分隔),建连时会负载均衡到集群中随机一个读写节点。

  1. 直接使用驱动连接PolarDB-X
Class.forName("com.alibaba.polardbx.Driver");try (final Connection conn = DriverManager.getConnection("jdbc:polardbx://127.0.0.1:3306/", "root", "*****");final Statement stmt = conn.createStatement()) {try (final ResultSet rs = stmt.executeQuery("select 1")) {for (int i = 0; i < rs.getMetaData().getColumnCount(); ++i) {System.out.print(rs.getMetaData().getColumnName(i + 1) + "\t");}System.out.println();while (rs.next()) {for (int i = 0; i < rs.getMetaData().getColumnCount(); ++i) {System.out.print(rs.getObject(i + 1) + "\t");}System.out.println();}}
}
  1. 使用Druid连接池

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><property name="driverClassName" value="com.alibaba.polardbx.Driver" /><!-- 基本属性 URL、user、password --><property name="url" value="jdbc:polardbx://ip:port/db?autoReconnect=true&rewriteBatchedStatements=true&socketTimeout=30000&connectTimeout=3000" /><property name="username" value="root" /><property name="password" value="123456" /><!-- 配置初始化大小、最小、最大 --><property name="maxActive" value="20" /><property name="initialSize" value="3" /><property name="minIdle" value="3" /><!-- maxWait 获取连接等待超时的时间 --><property name="maxWait" value="60000" /><!-- timeBetweenEvictionRunsMillis 间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="60000" /><!-- minEvictableIdleTimeMillis 一个连接在池中最小空闲的时间,单位是毫秒--><property name="minEvictableIdleTimeMillis" value="300000" /><!-- 检测连接是否可用的 SQL --><property name="validationQuery" value="select 'z' from dual" /><!-- 是否开启空闲连接检查 --><property name="testWhileIdle" value="true" /><!-- 是否在获取连接前检查连接状态 --><property name="testOnBorrow" value="false" /><!-- 是否在归还连接时检查连接状态 --><property name="testOnReturn" value="false" /><!-- 是否在固定时间关闭连接。增加此参数可以均衡后端服务节点参数 --><property name="phyTimeoutMillis" value="600000" /><!-- 是否在固定SQL使用次数之后关闭连接,增加此参数可以均衡后端服务节点参数--><property name="phyMaxUseCount" value="10000" /></bean>

Go驱动
polardbx-connector-go安装

go get github.com/polardb/polardbx-connector-go

使用例子:

import (_ "github.com/polardb/polardbx-connector-go"
)
db, err := sql.Open("polardbx", "user:password@tcp(ip:port)/dbname")
if err != nil {panic(err)
}db.SetConnMaxLifetime(time.Minute * 3)
db.SetMaxOpenConns(10)
db.SetMaxIdleConns(10)

需要 “一键执行”部署(可选)可创建 run_polardbx.sh 文件,内容如下

#!/bin/bash
# 一键启动 polardbx-proxy(自动适配 Linux/macOS)# 1. 获取本地IP
if [ "$(uname)" = "Darwin" ]; thenLOCALHOST=$(echo "show State:/Network/Global/IPv4" | scutil | grep PrimaryInterface | awk '{print $3}' | xargs ifconfig | grep inet | grep -v inet6 | awk '{print $2}')PORTS="-p 3307:3307 -p 8083:8083"NET_MODE=""
elseLOCALHOST=$(ip route get 1 | awk '/src/ {for(i=1;i<=NF;i++) if($i=="src") print $(i+1)}')PORTS=""NET_MODE="--net=host"
fi# 2. 检查端口(可选,避免占用)
for PORT in 3307 8083; doif [ -n "$PORTS" ] && (nc -z -w 1 127.0.0.1 $PORT || telnet -z 127.0.0.1 $PORT); thenecho "Error: Port $PORT is occupied!"exit 1fi
done# 3. 启动容器
docker run -d -it \-h $LOCALHOST \-e node_ip=$LOCALHOST \-e backend_address=127.0.0.1:3306 \-e backend_username=appuser \-e backend_password=appuser \-e memory=4294967296 \--name=polardbx-proxy \$NET_MODE \$PORTS \polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-proxyecho "Container 'polardbx-proxy' started! Local IP: $LOCALHOST"

保存后赋予执行权限并运行:

chmod +x run_polardbx.sh
./run_polardbx.sh

在这里插入图片描述

http://www.dtcms.com/a/565033.html

相关文章:

  • 待办事项全栈实现:Vue3 + Node.js (Koa) + MySQL深度整合,构建生产级任务管理系统的技术实践
  • 【Solidity 从入门到精通】前言
  • 天硕工业级SSD深度解析:NVMe性能分层的根源与高可靠选型指南
  • 人证查验一体机:公安安全检查的智能新助手
  • Python 查找并高亮显示指定 Excel 数据
  • 如何把xmind里的一整段文字变成独立主题的方法
  • 免费CDN
  • 【Java】流程控制
  • 公司网站开源源码现在pc端网站开发用的什么技术
  • 【weblogic】JND注入漏洞
  • 简单建设一个网站的过程安徽建设工程协会网站
  • Spring Security权限认证机制详解 实战
  • java每日精进 11.03【基于Spring AOP和事件驱动的资源操作消息处理流程(类似于若依框架的@Log注解)】
  • Spring 从 0 → 1 保姆级笔记:IOC、DI、多配置、Bean 生命周期一次讲透
  • SpringBoot 项目基于责任链模式实现复杂接口的解耦和动态编排
  • Java 入门核心知识点分类学习
  • 叫人做网站后不提供源码商机网创业好项目
  • 【2052】范围判断
  • (1)pytest+Selenium自动化测试-序章
  • 用Python来学微积分29-原函数与不定积分完全指南
  • JavaSE---文件(File)、IO流(基础)
  • 论坛类网站备案吗红色专题网站首页模板
  • 网页设计师主要是做什么的呢深圳seo
  • C++多线程之 安全日志系统
  • 哪里有做效果图的网站wordpress文章内模板
  • Nof1:探索大语言模型作为量化交易者的极限(翻译)
  • 做网站整理信息的表格免费有效的推广网站
  • 基于ASM1042A系列芯片的CAN协议扩展方案在汽车座椅控制器中的应用探讨
  • 超越金融:深入解析STC的“绿色算力网络”与参与机制
  • 【大模型 Tokenizer 核心技术解析】从 BPE 到 Byte-Level 的完整指南