这是本节的多页打印视图。 .
博客
- 1: 全部文章
来自真实交付现场的笔记:公有云迁移、数据库选型、OT/IT 安全边界,以及什么才是 企业数字化真正能落地的东西。
1 - 全部文章
1.1 - 初次上云:华为云 RDS for MySQL 接入指南
很多客户在以往项目中习惯了在 ECS 上自建 MySQL——SSH 进去,yum install mysql-server,配置文件随手改,监控靠自己搭。第一次使用托管数据库服务(RDS)时,往往会在一些细节上"踩坑",不是因为技术难,而是思维惯性没转过来。
本文梳理了从零开始接入华为云 RDS for MySQL 的完整步骤,并重点标注了与自建数据库差异较大的地方。
主要实施步骤
1. 创建 RDS 实例
在华为云控制台购买并创建 RDS for MySQL 实例时,有一个选项务必在创建时就确认好:区域(Region)和 VPC 必须与业务 ECS 保持一致。
这不是可以事后调整的选项。RDS 实例创建完成后,其 VPC 归属无法更改。如果事后发现 RDS 和 ECS 不在同一 VPC,要么重建实例,要么配置 VPC 对等连接——两种方式都麻烦。选对 Region 和 VPC 是后续所有内网连通的前提。
2. 初始化数据库和账号
实例就绪后,在 RDS 控制台:
- 创建业务所需的数据库(Database)
- 创建数据库账号(User),不要直接使用 root
- 按最小权限原则授权,通常业务账号只需
SELECT / INSERT / UPDATE / DELETE / CREATE / DROP等常用权限即可
3. 修改应用配置
找到业务软件的数据库配置文件,将连接参数从旧的自建 MySQL 切换过来:
| 参数 | 旧值(自建) | 新值(RDS) |
|---|---|---|
| Host | ECS 内网 IP | RDS 内网域名或内网 IP |
| Port | 3306 | 3306(默认,可自定义) |
| Database | 原库名 | 新建的库名 |
| User | 原账号 | RDS 控制台创建的账号 |
| Password | 原密码 | RDS 控制台设置的密码 |
优先使用 RDS 提供的内网域名,而不是内网 IP。内网域名在实例主备切换后仍然有效,IP 可能变化。
4. 验证网络连通性
改配置之前,先从 ECS 测试连通性:
或者用 telnet / nc 先测端口:
如果连接失败,优先排查安全组——这是新用户最常见的问题,见下文。
5. 启动应用并完整测试
网络连通后,修改配置文件,启动业务软件,进行完整的功能回归测试,确认所有数据库读写操作正常。
需要特别留意的要点
以下几点是自建 MySQL 与云 RDS 差异最大的地方,容易被忽略。
⚠️ 安全组规则(最常见问题)
RDS 实例默认不对任何来源开放 3306 端口。你需要:
- 找到 RDS 实例绑定的安全组
- 添加入方向规则:协议 TCP,端口 3306,源地址填写业务 ECS 的内网 IP(如
192.168.1.10/32)
不要图省事把源地址设成 0.0.0.0/0,这会将数据库端口暴露在整个 VPC 乃至公网范围内。
⚠️ 字符集和时区
新建 RDS 实例的默认字符集不一定是 utf8mb4。如果你的业务数据包含 emoji 或非 BMP 平面的 Unicode 字符,必须确认:
建议在 RDS 控制台的参数组中显式设置:
时区不对会导致 DATETIME 类型数据存取出现偏差,排查起来很隐蔽。
⚠️ 关键参数确认
RDS 有一套默认参数组,与你自建库的配置可能不同,以下几个参数需要重点核对:
lower_case_table_names(表名大小写敏感)
这是 MySQL 8.0 上最容易踩的坑。RDS for MySQL 8.0 不支持在实例创建后修改此参数,必须在创建实例时就确认好。
0:大小写敏感(Linux 默认,生产推荐)1:大小写不敏感(Windows 常见,迁移旧库时注意对齐)
innodb_flush_log_at_trx_commit 和 sync_binlog
RDS 默认均为 1,即每次事务提交都强制刷盘,数据最安全但写入性能最低。
| 配置 | 性能 | 数据安全 |
|---|---|---|
| 两者均为 1 | 较低 | 最强(丢数据风险最低) |
| flush=2, sync=0 | 较高 | 较弱(宕机可能丢 1 秒数据) |
如果业务对写入吞吐有要求,可以在充分测试后酌情调整,但要清楚代价。
⚠️ 从"管理 OS"转变为"管理服务"
这是心智模型的转变,也是最容易产生不适应的地方。
用自建 MySQL 时,你可以 SSH 进服务器,tail -f /var/log/mysql/error.log,vim /etc/mysql/my.cnf,想改什么改什么。用了 RDS 之后,这些操作入口都不存在了。
日常运维对应关系:
| 自建操作 | RDS 对应方式 |
|---|---|
修改 my.cnf | 控制台 → 参数组 |
| 查看 error log | 控制台 → 日志管理 |
| 手动备份 | 控制台 → 备份恢复 → 创建手动备份 |
| 监控慢查询 | 控制台 → 慢日志 |
| 服务重启 | 控制台 → 重启实例(谨慎操作) |
⚠️ 备份策略
RDS 默认开启自动备份,但默认配置不一定符合你的业务要求。建议第一时间确认:
- 备份时间窗口:设置在业务低峰期(如凌晨 2-4 点)
- 备份保留天数:默认 7 天,根据业务重要性可调整为 14~30 天
- 定期手动验证恢复:自动备份有没有用,只有恢复测试说了算
总结
整体迁移工作量不大,核心就三件事:改配置、调参数、测连通性。
容易出问题的地方集中在安全组规则、字符集时区设置,以及 MySQL 8.0 下 lower_case_table_names 的不可变性。提前确认这几个点,接入过程基本能顺滑完成。
云 RDS 的价值不在于"用起来更简单",而在于把备份、高可用、监控、故障切换这些运维成本转移给了云厂商——你不需要操心这些,但需要学会通过控制台而不是命令行来完成这些操作。