Appearance
阿里云 RDS 数据库迁移方案
概述
将项目数据库从本地 MySQL 容器迁移到阿里云 RDS MySQL 8.0。
当前状态:
- 应用部署在阿里云 ECS
- 已创建 RDS MySQL 8.0 实例
- 无需迁移数据,从空库开始
- 全部环境统一使用 RDS
实施阶段
Phase 1: 阿里云控制台配置(前置条件)
1.1 获取 RDS 连接信息
- 登录 阿里云 RDS 控制台
- 点击目标实例 → 数据库连接 页面
- 记录以下信息:
- 内网地址:格式为
rm-xxxxxx.mysql.rds.aliyuncs.com - 内网端口:默认
3306 - 所在地域:确认与 ECS 同一地域(如华东1-杭州)
- 内网地址:格式为
1.2 配置白名单(必须)
- 在 RDS 实例页面 → 数据安全性 → 白名单设置
- 点击 添加白名单分组 或修改默认分组
- 添加 ECS 的内网 IP:
- 方法1:在 ECS 控制台查看实例的内网 IP
- 方法2:在 ECS 上执行
curl http://100.100.100.200/latest/meta-data/private-ipv4
- 保存后等待约 1 分钟生效
1.3 创建数据库和账号
在 RDS 实例页面 → 账号管理 → 创建账号
- 数据库账号:
langchain_app(自定义) - 账号类型:普通账号
- 密码:设置强密码(建议16位以上,含字母数字符号)
- 确认密码:再次输入
- 数据库账号:
在 数据库管理 → 创建数据库
- 数据库名:
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_chat2.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_chat2.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.py3.3 检查日志
确认启动日志中没有数据库连接错误,表会自动创建。
Phase 4: 清理工作(可选)
4.1 移除本地 MySQL 依赖
如果不再需要本地 MySQL:
- 更新
docker-compose.dev.yml,移除 MySQL 服务 - 更新
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文件已更新 - 应用启动成功
- 数据库表自动创建成功