76 lines
2.8 KiB
Markdown
76 lines
2.8 KiB
Markdown
# 11.3 数据库迁移
|
||
|
||
:::tip 概述
|
||
部署场景的两类迁移:① 全新环境初始化(导入定稿脚本);② 存量环境跨方言迁移(整库迁移器)。迁移器用法详见 [7.6 数据库迁移工具](../tools/db-migrate),本节聚焦部署视角。
|
||
:::
|
||
|
||
## 场景一:全新环境初始化
|
||
|
||
```sh
|
||
# MySQL(推荐基准)
|
||
mysql -uroot -p -e "CREATE DATABASE \`easygoadmin.goframe.elevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
|
||
mysql -uroot -p easygoadmin.goframe.elevue < document/mysql/easygoadmin.goframe.elevue.sql
|
||
|
||
# 验证:25 张表 + admin 账号 + 种子数据(菜单/字典/参数/租户)
|
||
```
|
||
|
||
脚本含超管账号(admin/123456——**上线后立即改密**)、菜单权限树、字典种子、参数种子。
|
||
|
||
## 场景二:跨方言整库迁移
|
||
|
||
```sh
|
||
go run ./cmd/migrator \
|
||
-src-type=mysql -src-host=127.0.0.1 -src-hostport=3306 \
|
||
-src-database=easygoadmin.goframe.elevue -src-username=root -src-password=root \
|
||
-dst-type=pgsql -dst-host=127.0.0.1 -dst-hostport=5432 \
|
||
-dst-database=easygoadmin.goframe.elevue -dst-username=postgres -dst-password=123456 \
|
||
-drop-target-first
|
||
```
|
||
|
||
部署注意:
|
||
|
||
```text
|
||
□ 目标库确认无他用(-drop-target-first 清空全部表!)
|
||
□ 迁移前备份源库与目标库
|
||
□ 先 -tables 白名单迁小表验证方言转换
|
||
□ 观察五阶段输出与行数校验 PASS/FAIL
|
||
□ FAIL 表排查后 -tables 单独重迁
|
||
□ 迁移后切应用配置:database.default.type/link → 重启
|
||
```
|
||
|
||
限制提醒:无外键/视图/存储过程;无主键表拒绝搬运;mssql/oracle 作为源库时二级索引丢失;逐表串行。
|
||
|
||
## 场景三:存量环境版本升级(同方言)
|
||
|
||
```text
|
||
本项目无自动 schema 升级工具——增量变更走 ALTER 工作流:
|
||
|
||
1. 以 document/mysql/ 定稿为基准整理 ALTER 脚本
|
||
(含列注释枚举、uk_* 唯一索引)
|
||
2. 备份 → 执行 ALTER
|
||
3. gf gen dao 刷新(如本地验证)→ 部署新二进制
|
||
4. 同步 document/ 其余四方言脚本
|
||
5. 租户级新表 → hooks.tenantTables 登记(随代码发布)
|
||
6. 验证:登录/核心接口/新功能冒烟
|
||
```
|
||
|
||
## 版本升级通用纪律
|
||
|
||
```text
|
||
□ 数据库变更先行(向后兼容的加列/加表最安全)
|
||
□ 应用滚动(新版本兼容旧数据结构)
|
||
□ 破坏性变更(删列/改枚举值)走双版本过渡:先发兼容版 → 清理旧结构
|
||
□ 每步可回滚(备份 + 旧二进制)
|
||
□ 黄金样本接口回归(hack/golden)
|
||
```
|
||
|
||
## 定稿脚本与漂移
|
||
|
||
```text
|
||
五方言脚本位于 document/{mysql,postgresql,sqlserver,oracle,sqlite}/
|
||
MySQL 版为规范基准,后四份待人工校对
|
||
|
||
已知漂移注意:以 resource 定稿逻辑为准核对 uk_* 索引——
|
||
导入后验证 13 个唯一索引齐全(并发唯一性最终保证)
|
||
```
|