50 lines
1.6 KiB
Markdown
50 lines
1.6 KiB
Markdown
# 11.3 数据库初始化与迁移
|
||
|
||
:::tip 概述
|
||
生产数据库两条路径:**全新初始化**导入种子脚本;**存量搬迁**用 migrator 跨库迁移。两者都需在应用启动前完成,并配合连接账号最小权限。
|
||
:::
|
||
|
||
## 全新初始化
|
||
|
||
```bash
|
||
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)
|
||
|
||
```bash
|
||
make migrator ARGS="-src-type=mysql -src-database=db1 -dst-type=pgsql -dst-database=db2 ..."
|
||
```
|
||
|
||
流水线:内省 → 目标方言 DDL → 建表 → 分批搬运 → 序列修复。要点:
|
||
|
||
- 迁移期间**停写**(防搬运窗口数据变动)
|
||
- 大库关注分批内存与锁时间
|
||
- 迁移后核对行数与自增/序列
|
||
- 目标库统一 utf8mb4
|
||
|
||
## 应用连接账号
|
||
|
||
生产不用 root 跑应用:
|
||
|
||
```sql
|
||
CREATE USER 'easygoadmin'@'%' IDENTIFIED BY '<强密码>';
|
||
GRANT SELECT,INSERT,UPDATE,DELETE ON easygoadmin.\`gin_*\` TO 'easygoadmin'@'%';
|
||
```
|
||
|
||
最小权限原则:应用只需 DML(钩子做软删,无 DDL 需求)。
|
||
|
||
## 变更管理
|
||
|
||
- 结构变更走 SQL 脚本 + 评审,不在线上手改
|
||
- 种子脚本仅用于初始化,升级变更用增量脚本
|
||
- 变更前备份([11.9 备份与恢复](/zh/deploy/backup.html))
|
||
|
||
## 相关
|
||
|
||
- [7.6 数据库迁移工具](/zh/tools/db-migrate.html)
|
||
- [4.10 数据库设计](/zh/architecture/database-design.html)
|