Skip to content

阿里云 RDS 数据库迁移方案

概述

将项目数据库从本地 MySQL 容器迁移到阿里云 RDS MySQL 8.0。

当前状态:

  • 应用部署在阿里云 ECS
  • 已创建 RDS MySQL 8.0 实例
  • 无需迁移数据,从空库开始
  • 全部环境统一使用 RDS

实施阶段

Phase 1: 阿里云控制台配置(前置条件)

1.1 获取 RDS 连接信息

  1. 登录 阿里云 RDS 控制台
  2. 点击目标实例 → 数据库连接 页面
  3. 记录以下信息:
    • 内网地址:格式为 rm-xxxxxx.mysql.rds.aliyuncs.com
    • 内网端口:默认 3306
    • 所在地域:确认与 ECS 同一地域(如华东1-杭州)

1.2 配置白名单(必须)

  1. 在 RDS 实例页面 → 数据安全性白名单设置
  2. 点击 添加白名单分组 或修改默认分组
  3. 添加 ECS 的内网 IP:
    • 方法1:在 ECS 控制台查看实例的内网 IP
    • 方法2:在 ECS 上执行 curl http://100.100.100.200/latest/meta-data/private-ipv4
  4. 保存后等待约 1 分钟生效

1.3 创建数据库和账号

  1. 在 RDS 实例页面 → 账号管理创建账号

    • 数据库账号langchain_app(自定义)
    • 账号类型:普通账号
    • 密码:设置强密码(建议16位以上,含字母数字符号)
    • 确认密码:再次输入
  2. 数据库管理创建数据库

    • 数据库名langchain_chat
    • 支持字符集utf8mb4
    • 授权账号:选择刚创建的 langchain_app
    • 账号权限:读写(DDL + DML)

Phase 2: 代码配置修改

2.1 更新 .env 文件

修改 MySQL 相关配置:

bash
# MySQL 配置 - 阿里云 RDS
MYSQL_HOST=rm-xxxxxx.mysql.rds.aliyuncs.com  # 替换为你的 RDS 内网地址
MYSQL_PORT=3306
MYSQL_USER=langchain_app                      # 替换为你的数据库账号
MYSQL_PASSWORD=你的强密码                      # 替换为你的密码
MYSQL_DATABASE=langchain_chat

2.2 可选:更新 .env.example

同步更新示例配置文件,方便后续参考:

bash
# MySQL 配置 - 阿里云 RDS
MYSQL_HOST=your-rds-endpoint.mysql.rds.aliyuncs.com
MYSQL_PORT=3306
MYSQL_USER=your_db_user
MYSQL_PASSWORD=your_strong_password
MYSQL_DATABASE=langchain_chat

2.3 验证代码兼容性

当前代码已支持通过环境变量配置数据库连接,无需修改代码:

  • core/config.py 已从环境变量读取 MySQL 配置
  • core/database.py 使用 SQLAlchemy 连接池

Phase 3: 连接验证

3.1 本地测试连接

在 ECS 上执行:

bash
# 安装 MySQL 客户端(如果未安装)
sudo yum install -y mysql  # CentOS/RHEL
# 或
sudo apt install -y mysql-client  # Ubuntu/Debian

# 测试连接
mysql -h rm-xxxxxx.mysql.rds.aliyuncs.com -P 3306 -u langchain_app -p
# 输入密码后,执行:
SHOW DATABASES;
USE langchain_chat;
SHOW TABLES;

3.2 应用启动验证

bash
# 重启应用
cd /path/to/langchain-platform-luca
# 如果使用 Docker
make down-prod && make prod

# 或直接运行
python main.py

3.3 检查日志

确认启动日志中没有数据库连接错误,表会自动创建。


Phase 4: 清理工作(可选)

4.1 移除本地 MySQL 依赖

如果不再需要本地 MySQL:

  1. 更新 docker-compose.dev.yml,移除 MySQL 服务
  2. 更新 Makefile,移除 make mysql 命令(如不需要)

风险评估

风险等级说明缓解措施
白名单配置错误无法连接 RDS确认 ECS 内网 IP 正确
账号权限不足表创建失败确保授予 DDL + DML 权限
字符集不兼容中文乱码使用 utf8mb4 字符集
网络不通跨地域/ VPC确认 ECS 和 RDS 同地域

预计工作量

  • Phase 1(控制台配置):10-15 分钟
  • Phase 2(代码修改):2-3 分钟
  • Phase 3(验证):5 分钟
  • 总计:约 20 分钟

检查清单

  • RDS 实例已创建(MySQL 8.0)
  • 获取 RDS 内网连接地址
  • 白名单已添加 ECS 内网 IP
  • 数据库账号已创建
  • 数据库已创建(utf8mb4)
  • .env 文件已更新
  • 应用启动成功
  • 数据库表自动创建成功