1.6 KiB
1.6 KiB
11.3 数据库初始化与迁移
:::tip 概述 生产数据库两条路径:全新初始化导入种子脚本;存量搬迁用 migrator 跨库迁移。两者都需在应用启动前完成,并配合连接账号最小权限。 :::
全新初始化
mysql -uroot -p -e "CREATE DATABASE \`easygoadmin.gin.elevue\` DEFAULT CHARSET utf8mb4;"
mysql -uroot -p easygoadmin.gin.elevue < document/mysql/easygoadmin.gin.elevue.sql
25 张 gin_ 表 + 初始化数据(菜单、字典、超管账号等)。其他方言用 document/ 对应目录脚本。
存量搬迁(migrator)
make migrator ARGS="-src-type=mysql -src-database=db1 -dst-type=pgsql -dst-database=db2 ..."
流水线:内省 → 目标方言 DDL → 建表 → 分批搬运 → 序列修复。要点:
- 迁移期间停写(防搬运窗口数据变动)
- 大库关注分批内存与锁时间
- 迁移后核对行数与自增/序列
- 目标库统一 utf8mb4
应用连接账号
生产不用 root 跑应用:
CREATE USER 'easygoadmin'@'%' IDENTIFIED BY '<强密码>';
GRANT SELECT,INSERT,UPDATE,DELETE ON easygoadmin.\`gin_*\` TO 'easygoadmin'@'%';
最小权限原则:应用只需 DML(钩子做软删,无 DDL 需求)。
变更管理
- 结构变更走 SQL 脚本 + 评审,不在线上手改
- 种子脚本仅用于初始化,升级变更用增量脚本
- 变更前备份(11.9 备份与恢复)