使用阿里云国际站部署网站、跨境电商、SaaS或海外App时,很多项目一开始会直接在ECS上自行安装MySQL。这样做虽然灵活,但也意味着需要自己负责数据库备份、主从复制、版本升级、故障恢复和安全维护。
如果团队没有专职DBA,使用ApsaraDB RDS for MySQL通常更加省心。本文介绍如何在阿里云国际站创建并连接一台RDS MySQL实例。
一、创建前需要准备什么?
开始之前,建议先准备:
- 一个已经完成注册的阿里云国际站账号;
- 一台ECS应用服务器;
- 一个VPC专有网络;
- 已规划好的数据库版本;
- 应用需要使用的数据库名称和账号;
- 大致的数据量、连接数及读写规模。
如果使用RAM用户创建RDS实例,官方文档显示,该RAM用户通常需要具备AliyunRDSFullAccess和AliyunBSSOrderAccess权限。
生产环境不建议直接使用阿里云主账号进行日常操作,应创建独立RAM用户并按照最小权限原则授权。
二、选择计费方式
创建RDS时,首先需要选择计费方式。
1. 包年包月
适合长期、稳定运行的生产业务。
优点是:
- 预算比较固定;
- 长期使用通常比按量付费便宜;
- 不容易因为测试流量增加导致计算资源费用突然上涨。
缺点是需要预付费用,提前释放时应关注退款规则。
2. 按量付费
适合:
- 测试环境;
- 短期项目;
- 数据迁移中转;
- 无法确定最终配置的业务。
按量付费通常按小时结算,不再使用时需要及时释放实例,否则会继续产生费用。
3. Serverless
适合业务访问量变化大、存在明显空闲时段的系统。Serverless根据实际消耗的RDS Capacity Unit计费,并可以在设定范围内自动扩缩。
需要注意,Serverless的功能限制、支持地域和最低资源消耗应以购买页面为准。长期保持稳定高负载时,固定规格实例可能更容易控制成本。
三、选择地域和VPC
RDS和访问它的ECS最好部署在:
- 同一个地域;
- 同一个VPC;
- 网络可达的交换机中。
如果ECS与RDS位于同一个地域和VPC,可以通过内网地址连接,通常具有以下优势:
- 延迟更低;
- 网络更加稳定;
- 不需要将数据库暴露到公网;
- 同地域内网通信通常更容易控制成本。
需要特别注意:创建后不能简单地将RDS实例直接移动到另一个地域。地域选错后,一般需要创建新实例并迁移数据。
海外业务应根据主要用户和应用服务器位置选择地域。例如:
- 东南亚业务可以评估新加坡;
- 日本业务可以评估东京;
- 欧洲业务可以评估法兰克福;
- 美国业务可以评估弗吉尼亚或硅谷;
- 中国香港及周边业务可以评估中国香港地域。
真正影响数据库访问速度的,首先是应用服务器与数据库之间的距离,而不是最终用户与数据库之间的距离。
四、选择MySQL版本
创建时应根据应用兼容性选择MySQL版本。
新项目通常优先评估当前受支持的MySQL 8.0,但不要仅因为版本较新就直接选择。上线前应确认:
- ORM是否兼容;
- 字符集和排序规则是否兼容;
- SQL模式是否兼容;
- 驱动程序是否兼容;
- 存储过程和触发器是否兼容;
- 旧系统是否依赖已废弃语法;
- 从旧MySQL迁移时执行计划是否变化。
已有系统迁移前,应先在测试实例中执行兼容性验证。
五、创建数据库和应用账号
实例创建完成后,不建议让应用程序使用高权限账号。
可以按照用途创建不同账号:
app_rw:应用读写账号;app_ro:只读查询账号;migration_user:数据迁移账号;monitor_user:监控账号;dba_admin:数据库管理员账号。
应用账号只应获得指定数据库的必要权限。不要把数据库管理员账号直接配置在网站环境变量中。
六、配置IP白名单
RDS不会允许任意来源直接连接。使用客户端或ECS访问前,需要把来源IP加入白名单。
如果应用通过内网连接,通常应添加:
- ECS私网IP;
- 应用服务器所在安全网段;
- NAT后的固定出口地址。
不要为了测试方便长期保留:
0.0.0.0/0
这相当于允许任意公网地址尝试连接数据库,会显著增加暴力破解和漏洞攻击风险。
七、获取连接地址
RDS一般提供:
- 内网连接地址;
- 公网连接地址。
生产应用应优先使用内网连接地址。只有开发者电脑、第三方服务或外部系统确实需要访问时,才考虑申请公网地址,并配合严格的白名单和SSL连接。
MySQL客户端连接示例:
mysql \
-h rm-example.mysql.rds.aliyuncs.com \
-P 3306 \
-u app_rw \
-p \
--ssl-mode=REQUIRED
登录后可以执行:
SELECT VERSION();
SHOW DATABASES;
SELECT NOW();
如果能够返回版本、数据库列表和时间,说明基本连接正常。
八、上线前检查清单
正式上线前至少完成:
- 删除
0.0.0.0/0白名单; - 为应用创建最小权限账号;
- 开启自动备份;
- 确认日志备份和时间点恢复设置;
- 设置CPU、连接数、存储空间和IOPS告警;
- 检查字符集和时区;
- 使用内网连接地址;
- 为公网连接启用SSL;
- 测试备份恢复;
- 记录实例ID、地域、VPC及到期时间;
- 设置余额和资源到期提醒。
创建数据库只是第一步,真正的生产可用还依赖权限、备份、监控和恢复能力。
参考资料:创建RDS MySQL实例、连接RDS MySQL
第二篇:阿里云国际站RDS MySQL连接失败怎么办?白名单、VPC和账号排查指南
RDS MySQL创建完成后,最常见的问题不是SQL错误,而是“连接不上”。
常见报错包括:
ERROR 2003 (HY000): Can't connect to MySQL server
ERROR 1045 (28000): Access denied for user
Connection timed out
面对这些错误,不要反复修改密码。正确做法是按照网络、白名单、地址、端口和账号的顺序排查。
一、先区分网络错误和认证错误
如果报错是:
Connection timed out
或:
Can't connect to MySQL server
通常优先检查:
- RDS连接地址;
- 端口;
- IP白名单;
- VPC;
- 公网地址;
- ECS路由;
- 客户端出口IP。
如果报错是:
Access denied for user
说明网络大概率已经到达MySQL服务端,应重点检查:
- 用户名;
- 密码;
- 数据库账号状态;
- 账号授权;
- 密码中是否有特殊字符;
- 应用是否读取了旧配置;
- 连接池是否仍保存旧密码。
二、检查连接地址是否选对
RDS通常同时提供内网地址和公网地址。
内网地址
适用于同地域、同VPC或已经打通网络的ECS。
使用内网地址时,应确认:
- ECS和RDS地域相同;
- ECS和RDS的VPC相同;
- 如果VPC不同,是否通过CEN、VPN或其他方式建立网络;
- DNS是否能解析RDS内网地址。
可以在ECS执行:
nslookup rm-example.mysql.rds.aliyuncs.com
然后测试端口:
nc -vz rm-example.mysql.rds.aliyuncs.com 3306
Windows环境可以使用:
Test-NetConnection rm-example.mysql.rds.aliyuncs.com -Port 3306
公网地址
本地电脑、其他云厂商服务器或外部系统不能直接使用RDS内网地址时,可以申请公网连接地址。
申请公网地址后仍然需要:
- 将客户端公网出口IP加入白名单;
- 确认本地网络允许访问3306端口;
- 建议启用SSL;
- 避免开放所有来源。
三、检查白名单中的IP是否正确
白名单应填写RDS实际看到的来源IP。
如果客户端位于家庭网络、公司网络、NAT网关或其他云厂商,RDS看到的通常不是电脑的局域网IP,而是公网出口IP。
例如,电脑的地址可能是:
192.168.1.20
但真正需要加入白名单的可能是:
203.0.113.10
如果ECS通过内网访问RDS,应填写ECS私网IP或合理的私网CIDR。
为了快速判断问题是否由白名单引起,可以临时增加当前测试IP,但测试结束后应立即收紧。不要长期使用0.0.0.0/0。
四、检查端口
MySQL默认端口是3306,但RDS实例可能使用其他端口。
客户端命令中需要显式指定:
mysql -h <endpoint> -P 3306 -u <username> -p
注意:
-P大写表示端口;-p小写表示提示输入密码;- 不要把端口写入主机名;
- 应用连接字符串中的端口也要保持一致。
五、检查数据库账号
账号问题可以从以下几个方面检查:
- 账号是否已经创建成功;
- 账号是否被锁定;
- 密码是否正确;
- 账号是否有目标数据库权限;
- 应用是否引用了正确的环境变量;
- 密码中的
@、&、#等字符是否在URL中正确编码; - 是否误把阿里云账号密码当作MySQL密码。
JDBC连接示例:
jdbc:mysql://rm-example.mysql.rds.aliyuncs.com:3306/appdb
?useUnicode=true
&characterEncoding=utf8
&useSSL=true
&serverTimezone=UTC
如果密码直接写入URI,需要对特殊字符进行URL编码。更推荐通过独立配置项或密钥管理系统传入密码。
六、检查SSL配置
如果服务端要求SSL,而客户端没有正确加载证书,可能出现握手失败。
命令行可以先测试:
mysql \
-h <endpoint> \
-P 3306 \
-u app_rw \
-p \
--ssl-mode=REQUIRED
生产环境如果需要验证服务端身份,应下载正确的CA证书并使用更严格的验证模式,而不是为了连接成功直接关闭证书校验。
七、连接成功后立即执行的检查
成功登录后,可以执行:
SELECT USER(), CURRENT_USER();
SELECT @@hostname;
SELECT @@port;
SELECT @@version;
SELECT @@character_set_server;
SELECT @@time_zone;
其中:
USER()显示客户端提交的用户和来源;CURRENT_USER()显示MySQL实际用于权限判断的账号;@@hostname有助于确认连接到正确实例;@@character_set_server用于检查字符集;@@time_zone用于检查数据库时区。
八、推荐的排查顺序
出现连接问题时,按照以下顺序最快:
- 确认实例状态为运行中;
- 确认地域;
- 确认使用内网还是公网地址;
- 解析域名;
- 测试3306端口;
- 检查白名单;
- 检查账号和密码;
- 检查数据库权限;
- 检查SSL;
- 检查应用连接池和旧配置。
不要一开始就重置密码,因为很多连接失败其实与密码无关。
参考资料:连接RDS MySQL实例、RDS数据安全最佳实践
第三篇:阿里云国际站RDS MySQL备份怎么设置?自动备份、日志备份与PITR详解
数据库真正的安全,不是“已经开启自动备份”,而是发生误删除后能够在可接受的时间内恢复到正确状态。
ApsaraDB RDS for MySQL提供数据备份、日志备份、时间点恢复、库表恢复和跨地域备份等能力。本文介绍如何设计一套适合生产环境的备份策略。
一、数据备份和日志备份有什么区别?
数据备份
数据备份可以理解为某个时间点的完整数据副本。
适合:
- 实例级恢复;
- 创建新实例;
- 大范围数据损坏;
- 系统迁移;
- 长期归档。
日志备份
日志备份主要保存MySQL二进制日志中的增量变化。
数据备份与日志备份结合后,可以实现PITR,也就是Point-in-Time Recovery,将数据库恢复到保留期内某个具体时间点。
例如,管理员在上午10:35误删除了订单表,可以尝试把数据库恢复到10:34:59附近,而不是只能恢复到凌晨的全量备份。
阿里云官方文档显示,RDS MySQL的数据备份默认开启且不能完全关闭;日志备份默认开启,但可根据实例条件调整。数据与日志备份结合后,可用于保留期内的时间点恢复。RDS MySQL备份指南
二、备份周期怎么设置?
普通业务建议至少:
- 每周进行多次数据备份;
- 备份时间选择业务低峰期;
- 开启日志备份;
- 保留不少于7天;
- 核心业务保留14~30天;
- 重要变更前手动创建备份。
如果业务具有明显的低峰时段,例如每天凌晨02:00到05:00,可以把全量备份窗口设置在该时段。
虽然云数据库备份经过优化,但大规模备份仍可能带来一定的I/O和性能影响,所以应尽量避开大促、报表统计或批处理时间。
三、哪些操作前必须手动备份?
建议在以下操作前创建手动备份:
- 发布涉及数据库结构的版本;
- 批量更新数据;
- 删除大表;
- 修改字段类型;
- 执行数据清理;
- 调整关键数据库参数;
- 数据迁移;
- 版本升级;
- 大规模导入;
- 切换主从架构。
手动备份应使用明确名称或工单记录,注明:
- 操作人;
- 变更内容;
- 创建时间;
- 预计保留时间;
- 回滚条件。
四、备份保留多久合适?
不同业务可以采用不同策略。
测试环境
- 数据备份:7天;
- 日志备份:视需求开启;
- 不保留长期归档;
- 定期清理不再使用的实例。
普通生产环境
- 数据备份:14~30天;
- 日志备份:14~30天;
- 重要发布前创建手动备份;
- 每季度执行一次恢复演练。
金融、订单和核心业务
- 数据备份:30天或更长;
- 开启时间点恢复;
- 配置跨地域备份;
- 额外保存逻辑备份;
- 定期将备份复制到独立账号或OSS;
- 进行月度或季度恢复演练。
保留时间越长,备份存储费用通常越高。备份策略不能只追求“越久越好”,应根据RPO、RTO、监管要求和预算确定。
五、如何处理误删数据?
发现误删后,首先不要立即在原库继续执行大量写操作。
推荐流程:
- 记录误操作的大致时间;
- 暂停相关应用写入;
- 确认受影响的数据库和表;
- 选择恢复到新实例或临时实例;
- 恢复到误操作前的时间点;
- 对比原库与恢复库;
- 导出需要找回的数据;
- 将数据合并回生产库;
- 验证业务;
- 记录事故原因并补充权限控制。
除非整个实例已经不可用,否则通常不建议未经验证就直接覆盖生产数据。恢复到新实例后进行差异比对更加安全。
六、释放实例后备份会不会消失?
RDS MySQL支持为部分实例配置释放后的备份保留策略。
常见选项包括:
- 保留最后一个备份;
- 保留全部备份;
- 不保留备份。
阿里云官方说明,部分云盘实例释放后默认可能保留最后一个备份;备份在释放后的前一段时间可能免费,之后继续保留会产生存储费用。具体策略和费用应以实例类型、购买时间及控制台显示为准。已释放实例备份保留策略
释放数据库前,应先确认:
- 是否需要保留备份;
- 是否已经下载归档;
- 是否会产生后续存储费;
- 是否能够恢复到新实例;
- 业务是否已经彻底迁移。
七、最重要的是恢复演练
没有经过恢复验证的备份,只能算“可能可用”。
恢复演练至少应验证:
- 能否创建新实例;
- 能否恢复到目标时间点;
- 数据库账号是否正确;
- 表数量和行数是否正常;
- 应用能否连接;
- 字符集和时区是否一致;
- 实际恢复耗时是否符合RTO;
- 恢复点是否满足RPO。
建议把恢复步骤写成内部Runbook,而不是事故发生后临时查文档。
参考资料:RDS MySQL备份指南、自动与手动备份配置
第四篇:RDS MySQL读压力过高怎么办?只读实例与读写分离实践
很多数据库性能问题不是因为写入能力不足,而是大量列表查询、报表统计、商品搜索和后台分析占用了主实例资源。
当业务呈现“写少读多”的特征时,可以使用RDS MySQL只读实例分担查询压力。
一、什么是只读实例?
只读实例是主实例数据的只读副本。
主实例负责:
- INSERT;
- UPDATE;
- DELETE;
- DDL;
- 事务写入。
只读实例主要负责:
- SELECT;
- 商品列表;
- 搜索查询;
- 统计报表;
- 数据分析;
- 读取型API。
主实例上的数据变化会同步到关联的只读实例。
二、适合使用只读实例的场景
1. 商品和内容读取量很大
例如跨境电商的商品详情、库存展示、分类列表和内容页面,可以将部分查询分流到只读实例。
2. 后台报表影响线上业务
复杂报表可能扫描大量行、创建临时表并消耗IOPS。将报表查询放到只读实例,可以降低对交易库的影响。
3. 高峰期主库CPU过高
如果慢查询优化后,主实例仍然承受大量读取,可以通过增加只读实例水平扩展读取能力。
4. 需要隔离分析任务
运营分析、数据导出和内部查询可以使用独立只读实例,避免误操作生产主库。
三、只读实例不是实时强一致副本
主库数据同步到只读实例需要时间,因此可能存在复制延迟。
如果业务执行:
- 用户提交订单;
- 主库写入成功;
- 立即从只读实例查询订单;
此时只读实例可能还没有完成同步,应用会短暂查不到刚创建的订单。
因此,以下查询通常应该继续访问主库:
- 写入后立即读取;
- 支付状态确认;
- 库存扣减验证;
- 强一致性要求高的查询;
- 事务内查询;
- 依赖最新余额的数据。
而以下查询更适合只读实例:
- 商品列表;
- 历史订单;
- 内容页面;
- 报表;
- 非实时统计;
- 搜索索引构建;
- 数据导出。
四、如何实现读写分离?
常见有两种方式。
方式一:应用自行分流
应用分别配置:
- 主库连接地址;
- 只读库连接地址。
写入访问主库,允许延迟的查询访问只读库。
优点是控制精细,缺点是应用改造成本较高。
伪代码示例:
writeConnection -> primary endpoint
readConnection -> read-only endpoint
方式二:使用数据库代理
数据库代理可以提供统一连接地址,并根据SQL类型将请求转发到主实例或只读实例。
优点包括:
- 应用改造较少;
- 可以统一配置权重;
- 支持连接管理;
- 便于增加或删除只读节点。
但数据库代理可能产生额外费用。阿里云当前提供通用型和独享型数据库代理,不同类型的计费方式不同,启用前应查看控制台报价。RDS数据库代理计费说明
五、只读实例的注意事项
- 只读实例不能承担正常写入;
- 不应把只读实例当作独立备份;
- 数据库账号通常从主实例同步;
- 创建时可能继承主实例白名单,但后续白名单可能独立维护;
- 只读实例也会产生计算和存储费用;
- 需要监控复制延迟;
- 主实例释放时,关联只读实例可能被处理或释放;
- 报表SQL仍然需要优化,不能依靠无限增加只读实例解决;
- 只读实例不替代跨地域灾备。
阿里云官方文档也指出,只读实例主要用于扩展读能力,自动备份和数据恢复仍以主实例为中心。RDS MySQL只读实例说明
六、什么时候不应该立即增加只读实例?
出现CPU高或查询慢时,先检查:
- 是否缺少索引;
- 是否出现全表扫描;
- 是否一次返回过多数据;
- 是否存在N+1查询;
- 是否有连接未释放;
- 是否有大事务;
- 是否有缓存击穿;
- 是否有批处理任务;
- 是否可以通过Redis缓存热点数据。
如果问题来自低效SQL,把同样的SQL复制到更多只读实例,只是扩大成本,并没有消除根因。
第五篇:RDS MySQL慢查询怎么排查?从CPU、索引到事务的完整思路
线上数据库出现响应变慢时,最常见的错误是立即升级实例配置。
升级CPU和内存确实可能暂时缓解问题,但如果根因是缺少索引、大事务或连接泄漏,升级后问题很可能再次出现。
一、先确认慢在哪里
排查前需要回答:
- 是所有SQL都慢,还是某一类SQL慢?
- 是持续变慢,还是某个时间段变慢?
- CPU是否接近100%?
- IOPS是否达到上限?
- 连接数是否耗尽?
- 存储空间是否不足?
- 是否存在锁等待?
- 是否刚刚发布新版本?
- 是否执行了数据导入或定时任务?
RDS性能趋势页面可以查看:
- CPU和内存;
- 磁盘使用率;
- IOPS;
- 网络流量;
- 活跃会话;
- 连接数;
- QPS和TPS;
- 慢查询;
- InnoDB Buffer Pool命中率;
- 行锁和事务指标。
二、检查慢查询日志
可以重点关注:
- SQL执行次数;
- 平均执行时间;
- 最大执行时间;
- 扫描行数;
- 返回行数;
- 是否使用临时表;
- 是否发生排序;
- 是否命中索引。
如果扫描100万行只返回10行,通常说明索引或查询条件存在问题。
三、使用EXPLAIN查看执行计划
示例:
EXPLAIN
SELECT id, order_no, status
FROM orders
WHERE user_id = 10001
AND created_at >= '2026-09-01'
ORDER BY created_at DESC
LIMIT 20;
重点查看:
type;possible_keys;key;rows;Extra。
如果type为ALL,通常意味着全表扫描。需要结合实际查询考虑联合索引,例如:
CREATE INDEX idx_user_created
ON orders(user_id, created_at);
索引不是越多越好。每增加一个索引都会增加写入、存储和维护成本。
四、检查是否存在大事务
长时间未提交的事务可能导致:
- 锁等待;
- Undo日志增长;
- 主从延迟;
- 连接占用;
- 清理任务受阻。
应用层应避免:
- 开启事务后执行外部API;
- 在事务中等待用户输入;
- 单次更新数百万行;
- 循环执行大量SQL后才提交;
- 忘记提交或回滚。
大批量更新可以拆分:
UPDATE orders
SET archived = 1
WHERE id > 0
AND id <= 10000;
然后分批推进,而不是一次修改整张表。
五、检查连接池
如果CPU和IOPS都不高,但连接数持续增加,可能是:
- 连接没有关闭;
- 连接池上限过大;
- SQL等待锁;
- 慢查询占用连接;
- 应用不断重试;
- 数据库密码变更后旧连接失效。
连接池配置应关注:
- 最大连接数;
- 最小空闲连接;
- 连接超时;
- 空闲超时;
- 最大生命周期;
- SQL超时;
- 健康检查。
连接池最大值不应该简单设置成数据库最大连接数。需要给运维、迁移和后台任务预留空间。
六、检查缓存击穿
如果大量缓存同时过期,流量会直接打到数据库。
常见解决方法:
- 给缓存过期时间增加随机值;
- 热点数据提前刷新;
- 使用互斥锁;
- 对空结果做短时间缓存;
- 限制单个接口并发;
- 对查询进行降级;
- 使用请求合并。
七、检查定时任务和批处理
如果数据库每天固定时间变慢,应检查:
- 数据同步;
- 日志清理;
- 报表生成;
- 搜索索引构建;
- 账单计算;
- 全量扫描;
- 大表备份;
- 数据归档。
批处理任务尽量放在低峰期,并限制每批数据量。
八、什么时候才应该升配?
完成SQL、索引、事务和连接池优化后,如果实例资源仍然长期接近瓶颈,再考虑:
- 升级CPU和内存;
- 升级存储类型;
- 增加IOPS;
- 增加只读实例;
- 启用数据库代理;
- 拆分冷热数据;
- 使用Redis缓存;
- 迁移到PolarDB;
- 进行分库分表。
扩容是正常的容量管理手段,但不应成为掩盖低效SQL的第一选择。
参考资料:RDS MySQL慢SQL排查
第六篇:如何使用阿里云DTS把自建MySQL迁移到RDS MySQL?
把自建MySQL迁移到RDS时,如果只使用mysqldump,数据库较大时通常需要较长停机时间。
阿里云Data Transmission Service可以执行结构迁移、全量数据迁移和增量数据迁移。对于需要尽量缩短停机时间的业务,可以先同步历史数据,再持续同步新增数据,最后完成业务切换。
一、迁移前准备
需要确认:
- 源MySQL版本;
- 目标RDS MySQL版本;
- 字符集;
- 表数量和数据量;
- 是否存在无主键表;
- 是否使用触发器、事件和存储过程;
- 源数据库是否开启binlog;
- 源数据库能否被DTS访问;
- 迁移账号权限;
- 应用允许的停机时间;
- 回滚方案。
不建议边迁移边临时修改表结构。迁移期间应冻结非必要DDL变更。
二、迁移阶段怎么选择?
DTS任务通常可以包含:
1. 结构迁移
迁移数据库、表、索引等结构。
2. 全量数据迁移
复制迁移开始前已经存在的数据。
3. 增量数据迁移
持续同步迁移期间产生的新增、修改和删除操作。
如果业务不能长时间停机,一般选择:
- 结构迁移;
- 全量迁移;
- 增量迁移。
如果只是迁移一份已经停止写入的离线数据库,可以只执行结构和全量迁移。
三、创建目标RDS
目标RDS应提前完成:
- 实例创建;
- 数据库账号;
- 白名单;
- 网络连通;
- 存储容量评估;
- 参数兼容性检查;
- 备份策略;
- 监控告警。
目标实例的存储空间必须为数据增长、binlog、临时表和索引构建预留余量。
四、配置迁移任务
创建DTS任务时,需要填写:
- 源数据库类型;
- 源地址;
- 源端口;
- 源账号和密码;
- 目标RDS实例;
- 目标数据库账号;
- 迁移对象;
- 冲突处理策略;
- 是否迁移库表结构;
- 是否启用增量迁移。
随后执行预检查。
预检查失败常见原因包括:
- 网络不可达;
- 白名单未配置;
- 账号权限不足;
- binlog未开启;
server_id冲突;- 字符集不兼容;
- 目标对象已存在;
- 表没有主键;
- 源库存在不支持的对象。
不要忽略预检查警告,应逐项确认其对一致性和业务的影响。
五、正式切换流程
推荐切换流程:
- 等待全量迁移完成;
- 观察增量迁移延迟;
- 对比源库和目标库的表数量;
- 对比关键表行数和抽样数据;
- 进入业务维护窗口;
- 停止源库写入;
- 等待DTS增量延迟接近零;
- 再次验证数据一致性;
- 将应用连接字符串改为RDS地址;
- 启动应用;
- 验证注册、登录、下单等核心流程;
- 观察错误日志和数据库指标;
- 确认稳定后停止或释放迁移任务。
切换完成后,应撤销不再需要的DTS写权限,避免迁移工具继续操作目标数据库。阿里云官方迁移文档也提醒,在业务切换后应停止迁移任务或移除DTS在目标端的写权限。DTS迁移任务说明
六、为什么要保留源库?
不要在切换成功后立即删除源数据库。
建议至少保留:
- 源库只读副本;
- 最后一次全量备份;
- binlog;
- 迁移任务日志;
- 数据校验结果;
- 切换时间记录。
保留时间应根据业务风险、数据规模和合规要求确定。
第七篇:阿里云国际站RDS MySQL如何节省费用?容易被忽略的八项账单
很多用户购买了包年包月RDS后,发现账单中仍然出现按量费用。
原因是包年包月通常只覆盖购买时选择的计算规格和存储空间,部分附加功能仍可能单独计费。
一、先理解三种计费方式
包年包月
适合长期、稳定负载。
按量付费
适合短期、测试和流量变化较大的场景。
Serverless
根据实际消耗的RCU计费,适合间歇性或难以预测的负载。
官方计费说明显示,RDS基本费用通常由计算资源和存储资源组成;具体价格与地域、数据库引擎、架构、存储类型、可用区及实例规格有关。RDS计费概览
二、容易产生额外费用的项目
1. 备份存储超额
数据备份和日志备份占用备份存储。当总量超过免费额度时,可能产生额外费用。
优化方式:
- 缩短不必要的保留时间;
- 降低非核心环境的备份频率;
- 清理不再需要的实例;
- 检查已释放实例是否仍保留备份;
- 对长期归档采用更合适的备份方式。
不要为了省钱直接关闭生产库日志备份。应先评估误删除后的恢复需求。
2. 已释放实例的备份
释放实例后,如果设置了保留最后一个或全部备份,超过免费保留期后仍可能产生存储费。
释放数据库时要同时处理:
- 实例;
- 备份;
- 快照;
- DTS任务;
- 只读实例;
- 监控和日志;
- 相关OSS归档。
3. 数据库代理
通用型和独享型数据库代理的计费可能不同。启用读写分离前,应确认实例版本、代理类型和费用。
4. 只读实例
只读实例是独立计费资源。测试完成后如果忘记释放,会持续产生费用。
5. SQL审计
SQL审计和日志存储可能按使用量收费。生产环境是否启用应根据安全和审计需求决定,不能为了节省少量费用而忽略合规要求。
6. 高频性能监控
部分高频监控、较短采集周期或高级诊断功能可能产生费用。应检查是否真的需要秒级或高频数据。
7. 公网流量
数据库不应长期通过公网进行大规模数据传输。
应用与RDS部署在同地域、同VPC并使用内网地址,通常更加稳定,也能避免不必要的公网流量。
8. 闲置测试实例
测试实例最容易被遗忘。
可以通过:
- 资源标签;
- 费用中心;
- 预算告警;
- 到期提醒;
- 自动化巡检;
定期发现闲置资源。
三、如何选择规格?
不要只看CPU核数,还要结合:
- 峰值连接数;
- QPS和TPS;
- 数据量;
- 热数据规模;
- IOPS;
- 慢SQL;
- Buffer Pool命中率;
- 临时表;
- 写入比例;
- 业务增长。
规格过小会引发性能问题,规格过大则长期浪费。
建议按真实监控数据评估,而不是仅凭开发人员估计。
四、长期业务如何降本?
可以采取:
- 稳定生产库改为包年包月;
- 临时环境保留按量付费;
- 间歇负载评估Serverless;
- 优化慢SQL后再决定是否扩容;
- 合理设置备份保留;
- 关闭未使用的收费功能;
- 定期释放测试和迁移实例;
- 将报表任务放到只读实例或数据仓库;
- 使用标签分摊不同项目费用;
- 每月检查Bill Details。
阿里云官方也列出了包年包月实例仍产生额外费用的常见来源,包括超额备份、数据库代理、按量只读实例、SQL审计和部分性能监控。RDS计费常见问题
第八篇:RDS MySQL和PolarDB MySQL怎么选?阿里云国际站数据库选型指南
阿里云国际站同时提供ApsaraDB RDS for MySQL和PolarDB for MySQL。两者都兼容MySQL应用,但架构和适用场景并不完全相同。
一、RDS MySQL适合什么业务?
RDS MySQL更接近传统托管MySQL。
适合:
- 企业官网;
- WordPress;
- 跨境电商;
- 中小型SaaS;
- 管理后台;
- ERP和CRM;
- 业务规模比较稳定的系统;
- 从自建MySQL迁移上云的项目。
它的主要优势是:
- 架构容易理解;
- 迁移路径成熟;
- 配置选择较多;
- 备份和恢复完善;
- 支持高可用和只读实例;
- 中小规模业务成本容易控制。
二、PolarDB MySQL有什么不同?
PolarDB采用计算与存储分离架构。
简单来说:
- 计算节点负责SQL处理;
- 数据存储在共享分布式存储中;
- 主节点和只读节点共享同一份底层数据;
- 增加只读节点时,不需要为每个节点复制完整数据;
- 计算和存储可以相对独立扩展;
- 数据库代理可以实现读写分离和负载均衡。
阿里云官方将PolarDB描述为云原生关系型数据库,支持MySQL和PostgreSQL生态,并提供共享存储、弹性扩缩、多节点及高可用能力。PolarDB产品架构
三、两者对比
| 对比项目 | RDS MySQL | PolarDB MySQL |
|---|---|---|
| 架构 | 托管关系型数据库 | 计算与存储分离的云原生架构 |
| 上手难度 | 较低 | 较低到中等 |
| MySQL兼容性 | 原生MySQL体系 | 高度兼容MySQL |
| 读取扩展 | 创建只读实例 | 增加共享存储的只读计算节点 |
| 存储扩展 | 根据实例和存储类型调整 | 存储通常按实际数据量弹性增长 |
| 数据副本 | 只读实例通常维护副本 | 多计算节点共享底层数据 |
| 读写分离 | 可配合数据库代理 | 内置代理能力更突出 |
| 适合规模 | 中小型到企业级 | 高并发、快速增长和大规模业务 |
| 成本特点 | 结构较直观 | 计算、存储、节点和备份分别评估 |
| 迁移方式 | 自建MySQL、DTS等 | 可从RDS升级或通过DTS迁移 |
四、什么情况下优先选RDS?
以下情况通常优先从RDS开始:
- 数据库规模不大;
- 业务增长稳定;
- 预算敏感;
- 团队熟悉传统MySQL;
- 不需要大量只读节点;
- 不需要快速弹性扩展;
- 应用架构比较简单;
- 希望快速上线。
很多项目一开始并不需要PolarDB。选择更简单、成本更容易预测的RDS,往往更加务实。
五、什么情况下考虑PolarDB?
以下情况可以重点评估PolarDB:
- 读取并发很高;
- 数据量增长很快;
- 需要快速增加只读计算能力;
- 主库升级和扩容频繁;
- 需要更强的云原生弹性;
- 希望降低多个只读节点的数据复制成本;
- 同时存在事务与分析需求;
- 需要较大的存储容量;
- 传统RDS已经接近架构瓶颈。
六、不要只看性能宣传
数据库选型应使用真实业务进行PoC,而不是只比较官方峰值性能。
测试至少应包含:
- 实际表结构;
- 真实索引;
- 典型SQL;
- 峰值连接数;
- 混合读写比例;
- 热点数据;
- 大事务;
- 批量写入;
- 故障切换;
- 扩容耗时;
- 备份恢复;
- 一个月预计费用。
最终计算的不应该只是单次压测QPS,而是:
业务可用性 + 扩展能力 + 运维成本 + 数据安全 + 总拥有成本
七、RDS可以升级到PolarDB吗?
阿里云提供从RDS MySQL升级到PolarDB MySQL的相关路径。根据源实例版本和存储类型,可选择物理迁移或基于DTS的逻辑同步方式。
升级过程中一般会:
- 创建目标PolarDB集群;
- 同步源RDS数据;
- 保留部分账号、数据库、白名单及参数配置;
- 在验证完成后执行连接切换。
正式升级前仍应验证版本、插件、SQL语法、字符集和业务兼容性。RDS MySQL升级PolarDB说明
八、选型结论
如果项目处于初期、数据库规模有限、预算敏感,优先选择RDS MySQL通常更加合理。
如果业务已经进入高并发、大数据量和快速扩展阶段,并且需要更灵活的计算与存储能力,可以评估PolarDB MySQL。
最重要的不是选择名字更“高级”的产品,而是选择与当前业务规模和未来增长相匹配的架构。