
大多数团队在阿里云上搭建业务时,都会面对同一个判断:数据库是直接在 ECS 上自装 MySQL,还是用 RDS?两条路都能跑起来,但背后的运维负担和风险完全不一样。
在 ECS 上自装 MySQL,你需要自己处理数据备份、主从复制、故障切换、版本升级、监控告警——这些工作本身不复杂,但任何一个环节出问题都可能导致数据丢失或服务中断。阿里云 RDS(ApsaraDB RDS)把这些基础运维工作全部托管:自动备份、主备高可用切换、存储自动扩容、慢 SQL 监控,都由 RDS 负责,你只需要关注数据库的使用层面。
RDS 和自建数据库的核心差别
自建数据库需要你自己管理所有层面的工作:软件安装和升级、定时备份脚本、主从复制配置、主库故障时的手动切换、磁盘空间监控、慢查询排查。这些工作在团队规模小、没有专职 DBA 的情况下尤其容易出问题——定时备份脚本失效无人发现、主库磁盘打满导致写入失败、主从延迟积累没有告警,都是真实发生过的事故。
RDS 的全托管模式解决的正是这些问题:备份由 RDS 自动执行,高可用版默认有主备架构,主库故障时自动切换到备库(通常在 30 秒以内),存储空间支持配置自动扩容,慢 SQL 和连接数超限都有内置监控。代价是成本比自建高,且 RDS 不提供操作系统层面的访问权限,也不授予数据库的 SUPER 权限,对某些有特殊权限需求的场景是限制。
什么情况选 RDS: 正式业务、团队没有专职 DBA、数据对业务连续性至关重要、不想承担数据库运维的工作量。
什么情况选自建: 需要 SUPER 权限或特殊数据库插件、成本极度敏感的测试环境、数据库版本或配置有特殊定制需求、已经有成熟的 DBA 团队和运维体系。
支持的数据库引擎怎么选
阿里云 RDS 支持 MySQL、PostgreSQL、SQL Server 和 MariaDB 四种引擎,以及阿里云自研的 PolarDB(不在 RDS 体系内,但常被一起讨论)。
MySQL 是绝大多数业务的默认选择,也是 RDS 上功能最完整、文档最丰富的引擎。版本建议选 8.0,8.0 在性能、JSON 支持、窗口函数和事务性 DDL 上都优于 5.7,且阿里云已对 RDS MySQL 8.0 做了内核层面的优化。5.7 版本将逐步进入生命周期终止阶段,新项目不建议选择。
PostgreSQL 适合需要复杂查询、地理信息处理、JSON 数据操作或 OLAP 分析的场景。价格和 MySQL 基本持平,支持全系列实例和计费模式。如果现有技术栈依赖 PostgreSQL 特有功能,选 PG 是自然的,不需要强行迁移到 MySQL。
SQL Server 是商业数据库,需要支付版权费用,整体价格比 MySQL 高 30%–50%。只支持高可用版和集群版,不支持基础版。适合依赖 Windows 生态或企业内部有 SQL Server 使用规范的团队。如果没有明确的 SQL Server 依赖,不建议选择。
MariaDB 是 MySQL 的分支,API 高度兼容,适合有存量 MariaDB 应用的迁移场景。
PolarDB 是阿里云自研的云原生数据库,兼容 MySQL 和 PostgreSQL 语法,在大并发和读扩展场景下性能高于 RDS,但基础成本也更高。适合对数据库性能要求极高、预算充足的业务。中小型业务从 RDS MySQL 起步,性能遇到瓶颈时再评估是否迁移到 PolarDB,是更稳妥的路径。
三种实例系列
RDS 提供基础版、高可用版和集群版三种系列,核心差别在于可用性架构和数据保护能力。
基础版是单节点架构,没有备用实例,数据库故障时需要等待实例重启或迁移,无法保证业务连续性。存储空间上限也低于其他系列,计算成本是三者中最低的。基础版只适合开发测试环境,正式对外提供服务的业务不应使用基础版。
高可用版是生产环境的标准选择,采用一主一备架构,主备实例之间自动同步数据,主库出现故障时备库自动提升为主库,切换时间通常在 30 秒以内,可用性保证达到 99.95%。高可用版支持开启存储空间自动扩容,当存储使用率超过设定阈值时,RDS 自动扩容 5GB 或当前存储量的 15%(取两者中的较大值),避免因存储打满导致数据库被锁定写入。
集群版适合对数据库可用性要求最高的业务,支持一主一备或一主两备的多节点架构,开启 MGR(MySQL Group Replication)后可以实现 RPO=0(即主库故障时零数据丢失)。集群版支持添加只读节点,配合数据库代理实现自动读写分离,适合读多写少、需要横向扩展读性能的场景。
| 实例系列 | 节点架构 | 可用性 | 适合场景 |
| 基础版 | 单节点 | 无保障 | 开发测试 |
| 高可用版 | 一主一备 | 99.95% | 大多数生产环境 |
| 集群版 | 一主多备 | 99.99% | 核心业务、需读扩展 |
创建 RDS 实例的关键配置
地域选择
地域选择是创建 RDS 实例时最重要的决定,因为实例创建后地域不支持更改。
如果业务应用运行在 ECS 上,RDS 实例必须和 ECS 实例在同一地域,两者才能通过内网地址互相访问。不同地域的 ECS 访问 RDS 只能走公网,不仅延迟更高,也绕过了内网的安全隔离。选错地域意味着要重新创建实例迁移数据,代价较高。
如果还没有 ECS 实例,根据目标用户所在区域选节点:面向大陆用户选香港节点(延迟最低),面向东南亚选新加坡,面向北美选美国节点。关于阿里云各节点的延迟和适用场景,可以参考 阿里云国际版机房选择 的完整分析。
引擎版本与实例规格
引擎版本建议选 MySQL 8.0,不选 5.7。实例规格的选择依据是业务的 CPU 和内存需求:
通用型规格是 CPU 和内存共享型,和同一物理机上的其他实例共享 CPU 资源,适合非核心业务和开发测试;独享型规格独占 CPU 资源,性能更稳定,适合对数据库响应时间有要求的生产业务;倚天版规格基于 ARM 架构,性价比优于 x86 实例,功能支持和 x86 版本一致,是 2026 年的推荐选择。
对于大多数中小型业务,2 核 4GB 或 4 核 8GB 的高可用版高性能规格是合理的起点,后续可以在线升级规格,不需要停机。
存储类型
存储类型决定了数据库的 IOPS 上限,直接影响读写密集型业务的性能。ESSD 云盘是主流选择:PL0 适合低频读写场景,PL1 是大多数业务的默认选择,PL2 和 PL3 适合高并发数据库场景。
选择 ESSD PL1 的存储,实际 IOPS 上限受存储容量影响——存储容量越大,可达到的 IOPS 越高。生产环境的数据库存储建议至少预留 2 倍当前数据量,为数据增长留出空间,同时开启自动扩容设置上限,避免存储打满。
VPC 网络和交换机
RDS 实例必须创建在 VPC(专有网络)内,不支持经典网络。创建时选择和 ECS 相同的 VPC 和可用区,这样两者走同一内网段,内网延迟最低。
如果 ECS 和 RDS 分别在不同的 VPC 中(比如 ECS 在 VPC-A,RDS 在 VPC-B),需要通过 VPC 对等连接或 Transit Router 打通两个 VPC 的内网通信,配置成本增加。建议在规划阶段就把数据库和应用服务器放在同一 VPC 内,避免后期改造。
从 ECS 连接 RDS
RDS 实例创建完成后,连接前需要完成两步配置:创建数据库账号和设置 IP 白名单。
创建账号和数据库
在 RDS 控制台的「账号管理」页面创建一个高权限账号(不同于 SUPER 权限,高权限账号是 RDS 内的最高权限账号,可以创建和管理普通账号)。在「数据库管理」页面创建数据库,指定字符集(建议 utf8mb4,支持 emoji 和特殊字符)。
配置 IP 白名单
RDS 默认拒绝所有 IP 连接,必须在「数据安全性 → 白名单设置」中添加允许访问的 IP 地址。从 ECS 连接时,将 ECS 的内网 IP 加入白名单;如果需要从本地开发机连接,添加本地公网 IP。
不要将白名单设为 0.0.0.0/0(允许所有 IP),这会使 RDS 暴露在公网扫描风险中。正确做法是只添加实际需要访问的 IP,生产环境中只允许应用服务器的内网 IP 访问。
内网连接方式
在同一 VPC 内,ECS 通过 RDS 的内网连接串访问数据库。内网连接串格式通常为 rm-xxxx.mysql.rds.aliyuncs.com,端口默认 3306。
用 MySQL 命令行连接:
mysql -h rm-xxxx.mysql.rds.aliyuncs.com \
-P 3306 \
-u your_account \
-p your_password \
your_database
用 Python 连接(以 PyMySQL 为例):
import pymysql
conn = pymysql.connect(
host=’rm-xxxx.mysql.rds.aliyuncs.com’,
port=3306,
user=’your_account’,
password=’your_password’,
database=’your_database’,
charset=’utf8mb4′
)
cursor = conn.cursor()
cursor.execute(‘SELECT VERSION()’)
result = cursor.fetchone()
print(f”MySQL 版本:{result[0]}”)
conn.close()
连接失败的最常见原因是白名单未配置、ECS 和 RDS 不在同一 VPC、或者安全组规则阻断了 3306 端口。关于 ECS 安全组的配置方法,可以参考 阿里云 ECS 完整教程中的安全组配置部分。
关于 SUPER 权限的限制
RDS 不提供 SUPER 权限,这意味着部分数据库操作在 RDS 上无法执行,包括:CHANGE MASTER TO(需要 SUPER)、修改 global 级别的系统变量(部分变量可通过参数配置页面调整)、安装某些需要 SUPER 权限的插件。从自建 MySQL 迁移到 RDS 前,应先确认业务是否依赖这些操作。
备份与高可用配置
自动备份
RDS 默认开启自动备份,在控制台的「备份恢复」页面可以配置备份频率(建议每天一次)、备份保留时长(默认 7 天,最长 730 天)和备份时间窗口(建议设置在业务低峰时段)。
备份存储有免费额度:免费备份空间为实例存储空间的 200%。例如实例存储为 100GB,则每月有 200GB 的免费备份存储,超出部分按 ¥0.2/GB/月 收费。开启跨地域备份可以在主实例所在地域发生灾难时从备份恢复,跨地域备份单独计费。
主备切换原理
高可用版和集群版的主备实例之间通过同步复制保持数据一致。主库出现故障时,RDS 检测到异常后自动将备库提升为新主库,这个过程中应用的数据库连接会断开,需要应用层有重连机制。
实际切换时间受网络状态和业务负载影响,通常在 30 秒以内完成。如果应用不支持自动重连,主备切换会导致这段时间内的请求失败,生产环境的应用代码应配置数据库连接的自动重连逻辑。
计费方式与成本控制
RDS 的月度账单由实例规格费和存储费构成,高可用版还会叠加备库的规格费用(主备共同计费)。
三种计费模式:
包年包月适合长期稳定运行的生产数据库,年付可享受 4.1–5.9 折的阶梯折扣,是三种模式中长期使用成本最低的。按量付费按小时计费,灵活性最高,适合短期测试或流量不确定的场景,但长期使用单价高于包年包月。Serverless 模式计算资源随业务负载自动弹性伸缩,按 RCU(RDS 计算单元)计费,官方数据显示可比固定规格降低最高 70% 成本,适合流量波动明显(如有明显的业务峰谷)的场景。
存储费的注意事项:
存储费按实际配置的存储空间计费,不是按实际使用量。配置了 200GB 存储但只用了 50GB,仍然按 200GB 收费。因此存储空间应按实际需求配置,开启自动扩容设置上限,不要一开始就配置过大的存储空间。集群版实例的规格参考价格是单节点价格,一主两备的集群共 3 个节点,总价是单节点价格的 3 倍,购买前需要注意确认。
关于阿里云各产品价格的完整构成和折扣机制,可以参考 阿里云海外服务器价格 与折扣机制的说明。
账号开通与代理充值
使用阿里云 RDS 需要有效的阿里云国际版账号。对于没有海外信用卡或需要 USDT、对公转账付款的团队,通过 阿里云国际代理商 渠道开户更直接:免实名、免绑卡,支持多种付款方式,充值享额度赠金($100 充值到账 $110,$500 到账 $600,$1000 到账 $1250),账号权重更高,RDS 实例创建和资源申请更顺畅。



