阿里云PolarDB MySQL版完全使用指南:从集群创建到SQL语法实战

apphuang2026年06月25日 16:42:502

一、认识PolarDB MySQL版:云原生数据库的新选择

阿里云PolarDB MySQL版是阿里云自研的新一代云原生数据库,在计算存储分离架构下,利用软硬件结合的优势,为用户提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。与传统自建MySQL数据库或RDS for MySQL不同,PolarDB采用计算与存储分离的架构,将计算节点和存储节点解耦,支持多副本共享存储。这种设计使其具备横向扩展能力,可动态增减计算节点以应对负载变化。

PolarDB MySQL版完全兼容MySQL 5.6、5.7和8.0版本,支持绝大多数SQL语法、存储过程和触发器。这意味着,如果您的业务目前运行在MySQL上,迁移到PolarDB几乎无需修改应用代码,可以平滑完成数据库的云原生化改造。

1.1 产品系列与版本选择

PolarDB MySQL版主要提供以下几种产品形态,您可以根据业务需求灵活选择:

  • 企业版(集群版):采用计算与存储分离的架构,一个集群由一个主节点和最多15个只读节点组成。主节点处理读写请求,只读节点仅处理读请求,所有计算节点共享PolarStore中的同一份数据。该系列适用于大中型企业的生产数据库、互联网、物联网、零售电商、物流、游戏等行业的数据库,以及对数据安全性要求非常高的金融、证券、保险行业的核心数据库。
  • 标准版:同样采用计算与存储分离的架构,数据库代理和计算节点分别在独立的ECS上进行部署,共享存储层使用ESSD云盘或分布式存储(PolarStore)。标准版的多节点架构适用于有大量流量高峰读请求和数据智能分析需求的大中型企业的生产数据库场景。单节点架构则是个人用户测试、学习的最佳选择,也可作为初创企业的入门级产品。
  • Serverless:后付费模式,无需选择固定规格的资源,集群根据系统业务负载的变化进行动态弹性扩缩容。适用于业务波动、不确定负载或不可预测的业务场景。

在计费模式上,PolarDB支持包年包月(预付费)、按量付费(后付费)和Serverless三种方式。包年包月适合业务需求长期稳定的场景,购买周期越长折扣越大。按量付费根据实际使用时长计费,适合业务需求灵活的场景。

二、快速上手:创建第一个PolarDB集群

本节将带您从零开始,完成PolarDB MySQL版集群的创建、配置和连接。整个流程包括创建集群、设置白名单、创建数据库账号、获取连接地址以及验证连接五个步骤。

需要先登录阿里云控制台,点击:阿里云控制台

2.1 创建集群

登录PolarDB控制台后,进入集群创建页面。在创建过程中,您需要配置以下关键参数:

  • 计费类型:根据业务需求选择包年包月、按量付费或Serverless。
  • 地域:选择集群所在地域。请确保PolarDB与需要连接的ECS位于同一地域,否则它们的内网无法直接互通。
  • 数据库引擎:选择MySQL 8.0.1或MySQL 8.0.2版本。快速购买页面仅支持MySQL 8.0版本,如需其他版本请选择自定义购买。
  • 产品版本:选择企业版或标准版。
  • 网络类型:配置VPC网络和交换机。如果您已有符合规划的VPC(例如已有ECS实例所在的VPC),可以直接选择。
  • 节点规格:首次测试建议选择最低配置以控制成本。

完成配置后提交订单,等待集群创建完成(通常需要几分钟时间)。

2.2 设置白名单

集群创建完成后,需要配置IP白名单,允许您的客户端IP访问数据库。在集群详情页的“数据安全性”或“白名单设置”中,添加需要访问数据库的IP地址或IP段。为了提升安全性,建议仅添加必要的IP地址,避免开放全部IP(0.0.0.0/0)。

2.3 创建数据库账号

在集群管理页面的“账号管理”中,创建一个高权限账号或普通账号。设置密码时,建议包含大小写字母、数字和特殊字符,以增强安全性。

2.4 获取连接地址

在集群详情页的“基本信息”中,找到并复制集群的主地址(集群地址)和端口号。主地址格式类似于:pc-xxxx.mysql.polardb.rds.aliyuncs.com:3306。PolarDB还提供了集群地址(读写分离地址),您连接该地址后即可对主节点和只读节点进行读写操作,读写请求被自动转发到对应节点。

2.5 连接并验证

您可以使用任何标准的MySQL客户端工具连接PolarDB集群。以MySQL命令行工具为例:

mysql -h pc-xxxx.mysql.polardb.rds.aliyuncs.com -P 3306 -u <用户名> -p

成功连接后,执行一条简单的SQL查询来验证连通性:

SELECT VERSION();

如果返回PolarDB的版本号,则代表第一个PolarDB集群已成功创建并连接。

除了命令行工具,您还可以通过DMS(数据管理服务)连接PolarDB集群,或使用各类编程语言的MySQL驱动(如Python的pymysql、Java的JDBC、Node.js的mysql2等)进行连接。

三、PolarDB MySQL版SQL语法完全指南

PolarDB MySQL版在SQL语法上与MySQL高度兼容。本节将系统梳理DDL、DML、DQL、DCL四大类SQL语句的使用方法,并重点介绍PolarDB特有的扩展语法。

3.1 DDL语句:数据库与表结构定义

DDL(Data Definition Language)用于定义数据库结构,包括CREATE、ALTER、DROP等操作。

3.1.1 CREATE DATABASE

创建数据库的语法与MySQL完全兼容。此外,PolarDB支持通过DIST_DB参数指定数据库是否支持分库模式的多主分区表:

CREATE DATABASE [IF NOT EXISTS] db_name  [DEFAULT] {CHARACTER SET [=] charset_name | COLLATE [=] collation_name | ENCRYPTION [=] {'Y' | 'N'} | DIST_DB [=] {'Y' | 'N'}}

示例:

-- 创建普通数据库 CREATE DATABASE mydb; -- 创建支持多主分区表的数据库(分库数默认为32) CREATE DATABASE mydb_dist DIST_DB='Y';

3.1.2 CREATE TABLE

创建普通表的语法与MySQL完全一致:

CREATE TABLE users (     id INT PRIMARY KEY AUTO_INCREMENT,     username VARCHAR(50) NOT NULL,     email VARCHAR(100),     created_at DATETIME DEFAULT CURRENT_TIMESTAMP );

多主分区表(PolarDB特有)

对于标识为DIST_DB='Y'的数据库,仅能创建分库模式的多主分区表。使用关键字DBDISTRIBUTION来指定多主分区表的分布方式:

CREATE TABLE [IF NOT EXISTS] tbl_name (     create_definition,... ) [table_options] DBDISTRIBUTION BY {     [LINEAR] HASH(expr) |     [LINEAR] KEY [ALGORITHM={1 | 2}] (column_list) |     RANGE{(expr) | COLUMNS(column_list)} |     LIST{(expr) | COLUMNS(column_list)} }

示例:创建按用户ID哈希分布的多主分区表:

CREATE TABLE orders (     order_id BIGINT PRIMARY KEY,     user_id INT NOT NULL,     amount DECIMAL(10,2),     order_date DATETIME ) DBDISTRIBUTION BY HASH(user_id);

3.1.3 ALTER TABLE

修改表结构的语法与MySQL完全兼容。例如,为已有分区表新增分区:

ALTER TABLE table_name ADD PARTITION partition_definition;

示例:

ALTER TABLE orders ADD PARTITION (     PARTITION p202601 VALUES LESS THAN ('2026-02-01') );

3.1.4 DROP TABLE与DROP DATABASE

DROP TABLE [IF EXISTS] table_name; DROP DATABASE [IF EXISTS] db_name;

3.1.5 EXPLAIN DDL(PolarDB特有)

PolarDB MySQL版新增提供了EXPLAIN DDL功能,您可以在执行DDL前对DDL语句进行EXPLAIN,从而获取DDL操作的执行细节,例如当前是否存在锁冲突、DDL操作是否需要重建表等:

EXPLAIN DDL ALTER TABLE users ADD COLUMN age INT;

3.2 DML语句:数据操作语言

DML(Data Manipulation Language)用于数据的增删改操作,PolarDB完全兼容MySQL的DML语法。

3.2.1 INSERT

-- 插入单条记录 INSERT INTO users (username, email) VALUES ('zhangsan', 'zhangsan@example.com'); -- 插入多条记录 INSERT INTO users (username, email) VALUES      ('lisi', 'lisi@example.com'),     ('wangwu', 'wangwu@example.com'); -- 插入并返回自增ID INSERT INTO users (username, email) VALUES ('zhaoliu', 'zhaoliu@example.com'); SELECT LAST_INSERT_ID();

3.2.2 UPDATE

-- 更新单表 UPDATE users SET email = 'newemail@example.com' WHERE id = 1; -- 多表更新(JOIN更新) UPDATE users u  JOIN orders o ON u.id = o.user_id  SET u.status = 'active'  WHERE o.amount > 1000;

3.2.3 DELETE

-- 删除单条记录 DELETE FROM users WHERE id = 1; -- 删除所有记录(谨慎操作) DELETE FROM users; -- 使用TRUNCATE快速清空表(DDL操作,不可回滚) TRUNCATE TABLE users;

3.3 DQL语句:数据查询语言

SELECT查询语法与MySQL完全兼容,PolarDB在查询优化器层面进行了深度优化,特别是在列存索引(IMCI)的加持下,分析型查询性能大幅提升。

3.3.1 基础查询

-- 简单查询 SELECT id, username, email FROM users WHERE id > 100 ORDER BY created_at DESC LIMIT 10; -- 聚合查询 SELECT      DATE(order_date) as order_day,     COUNT(*) as order_count,     SUM(amount) as total_amount FROM orders WHERE order_date >= '2026-01-01' GROUP BY DATE(order_date) HAVING total_amount > 10000 ORDER BY order_day DESC;

3.3.2 JOIN查询

SELECT      u.username,     o.order_id,     o.amount,     o.order_date FROM users u INNER JOIN orders o ON u.id = o.user_id WHERE o.amount > 500 ORDER BY o.order_date DESC;

3.3.3 子查询与窗口函数

-- 子查询 SELECT username, email FROM users WHERE id IN (SELECT DISTINCT user_id FROM orders WHERE amount > 1000); -- 窗口函数(MySQL 8.0支持) SELECT      order_id,     user_id,     amount,     ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY order_date DESC) as rn,     SUM(amount) OVER (PARTITION BY user_id) as user_total FROM orders;

3.3.4 列存索引(IMCI)加速查询

PolarDB MySQL版支持列存索引(In-Memory Column Index,简称IMCI),将表的全部或部分列按照列式存储格式在只读节点上保存一份,形成行列混合存储。在处理大规模数据集时,列存索引可以大幅提升分析型查询的性能。

创建列存索引:在创建表时,通过在COMMENT字段中添加COLUMNAR=1来启用列存索引:

CREATE TABLE sales (     sale_id BIGINT PRIMARY KEY,     product_id INT,     category VARCHAR(50),     sale_date DATE,     amount DECIMAL(10,2),     region VARCHAR(20) ) COMMENT='COLUMNAR=1';

对于已有表,可以使用内置存储过程辅助创建列存索引。

启用列存索引后,针对大表的聚合查询(如SUM、COUNT、GROUP BY等)将自动受益于列式存储的高效扫描能力。

3.4 DCL语句:数据控制语言

DCL(Data Control Language)用于权限管理,与MySQL完全兼容。

-- 创建用户 CREATE USER 'app_user'@'%' IDENTIFIED BY 'strong_password'; -- 授予权限 GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app_user'@'%'; -- 撤销权限 REVOKE DELETE ON mydb.* FROM 'app_user'@'%'; -- 刷新权限 FLUSH PRIVILEGES;

四、读写分离与集群地址配置

PolarDB的企业版集群架构天然支持读写分离。通过集群地址(读写分离地址),应用程序只需连接一个地址,写请求自动发往主节点,读请求自动分发到只读节点。

4.1 创建自定义集群地址

在PolarDB控制台的集群详情页,点击“创建自定义地址”。配置参数包括:

  • 读写模式:可选择“只读”或“可读可写(自动读写分离)”。
  • 服务节点:选择哪些节点参与该地址的读请求处理。
  • 负载均衡策略:只读模式下可选择基于连接数或基于活跃请求数。
  • 事务拆分:开启后可将事务中的读请求拆分到只读节点。
  • 一致性级别:可读可写模式下支持最终一致性(弱)、会话一致性(中)和全局一致性(强)。

4.2 一致性级别说明

PolarDB支持多种一致性级别,以满足不同场景的需求:

  • 最终一致性(弱):通过只读地址可以查看到当前只读节点上最新数据。如果在主节点和只读节点间数据同步有延迟,可能读到旧数据。适合对读延迟不敏感的场景。
  • 会话一致性(中):保证同一会话内读到的数据与自己之前写入的数据保持一致。
  • 全局一致性(强):通过只读地址可以查看到主节点上提交的最新数据,满足全局数据查询一致性。如果主备延迟过大,查询会等待。适合对数据一致性要求极高的金融、交易类场景。

五、高级特性与最佳实践

5.1 多主分区表(Limitless)

PolarDB MySQL版的多主分区表是一种全新的云原生数据库,支持自动水平拆分、混合共享存储以及shared nothing架构。它能够根据预设的拆分规则,将数据自动分散到多个数据库集群中,从而使每个节点均具备读写能力,实现真正的分布式处理能力。通过水平拆分,PolarDB能够有效地实现数据库的横向扩展,线性提升整体的并发吞吐能力。

使用多主分区表的前提条件包括:PolarDB MySQL版产品系列为多主集群(Limitless),且内核版本为8.0版本。

5.2 参数优化与性能调优

PolarDB提供了丰富的数据库参数供用户调整,以优化性能、增强安全性或满足特定功能需求。

关键参数调优建议:

  • 连接池管理:建议使用会话级连接池,最大连接数设置为PolarDB实例连接数的80%,空闲连接回收时间设置为300秒。
  • 锁系统优化:将锁系统分区数量调整为CPU核心数,减少高并发场景下的锁竞争,提升并发性能。
  • 列存索引并行度:列存索引的并行度决定了一条SQL语句可以使用的CPU资源,建议根据集群规格调整,不超过计算节点的CPU核数。

5.3 监控与告警

PolarDB对接阿里云CloudMonitor(云监控)服务,提供监控指标与告警配置功能。您可以在PolarDB控制台的“性能监控”页面查看集群的CPU使用率、内存使用率、连接数、QPS、TPS等核心指标。针对关键指标设置告警规则,例如当CPU使用率连续5分钟超过80%时触发告警。

5.4 备份与恢复

PolarDB支持全量备份(快照)和增量备份(binlog),您可以通过控制台的“备份恢复”页面进行管理。恢复方式包括:

  • 按备份集(快照)恢复:从指定的备份集恢复数据到新集群。
  • 按时间点恢复:恢复到过去任意时间点的数据状态。

恢复操作会在克隆实例页面创建新集群,原集群不受影响。

六、常见问题解答

问题1:PolarDB MySQL版与自建MySQL有什么区别?

答:核心区别在于架构设计。PolarDB采用计算存储分离的云原生架构,计算节点与存储节点解耦,支持多副本共享存储。这种设计使其具备弹性扩展能力,可以动态增减计算节点,同时存储容量最高可达上百TB。而自建MySQL受限于单机硬件,扩展性有限。

问题2:PolarDB是否完全兼容MySQL的SQL语法?

答:是的,PolarDB MySQL版完全兼容MySQL 5.6、5.7和8.0版本,支持绝大多数SQL语法、存储过程和触发器。从MySQL迁移到PolarDB通常无需修改应用代码。

问题3:如何选择PolarDB的集群规格?

答:选择规格需要综合考虑业务并发量、数据量大小和预算。测试或学习场景建议选择标准版单节点最低配置。生产环境建议选择企业版集群版,根据读写比例配置合适数量的只读节点。如果业务负载波动较大,可以考虑Serverless模式。

问题4:PolarDB的读写分离是如何实现的?

答:PolarDB提供了集群地址(读写分离地址),应用程序连接该地址后,写请求自动发往主节点,读请求自动分发到只读节点。您可以在控制台创建自定义集群地址,配置负载均衡策略、事务拆分和一致性级别。

问题5:如何降低PolarDB的使用成本?

答:可以从以下几个方面控制成本:选择标准版而非企业版(如果功能满足需求);对于测试环境使用后及时释放资源;包年包月模式下购买周期越长折扣越大;合理设置只读节点数量,按需扩展。

问题6:PolarDB支持哪些连接方式?

答:PolarDB支持多种连接方式:MySQL命令行工具、DMS数据管理服务、各类编程语言的MySQL驱动(JDBC、pydantic、Node.js mysql2等)、阿里云CLI以及SDK和API。

相关文章

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

最近总有朋友问我:“腾讯云有返点吗?腾讯云服务器能拿佣金不?返佣比例到底有多少?” 作为一个在腾讯云代理行业摸爬滚打了 10 年的 “老人”,今天就来跟大家好好…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS、对象存…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

01一、阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS…

阿里云代理商有哪些?阿里云代理返点是真的么?

阿里云代理商有哪些?阿里云代理返点是真的么?

一,阿里云代理商基本介绍阿里云代理商通俗一点,就是指从事阿里云云服务器,云数据库等阿里云公有云产品销售的代理商,每销售一件阿里云公有云产品出去,阿里云给予该代理商一定比例的提成。在阿里云官方定义中,这…

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

一、阿里云五级代理体系:权益阶梯与合作价值1. 五级代理的核心权益差异阿里云构建了多层次的代理生态体系,涵盖全国总代理、区域核心代理、行业ISV(独立软件开发商)、金牌/银牌认证代理及标准代理五大核心…

2026年阿里云代理商政策深度解析:战略级代理引领AI时代上云

2026年阿里云代理商政策深度解析:战略级代理引领AI时代上云

核心摘要本文全面解读阿里云2026年合作伙伴政策升级,聚焦新增「战略级代理」梯队的核心权益、「三维返点体系」的激励逻辑,以及从「销售驱动」到「AI价值驱动」的战略转型。结合上海汪远信息科技有限公司作为…