数据迁移知识体系概览
问题
数据库迁移涉及哪些核心知识?为什么需要系统化的迁移管理?
答案
什么是数据迁移
数据库迁移(Database Migration)是指对数据库 Schema(表结构、索引、约束等)进行版本化管理的过程。就像 Git 管理代码版本一样,Migration 工具管理数据库的版本变更。
V1: 创建 users 表
↓
V2: 添加 email 字段
↓
V3: 创建 posts 表 + 外键
↓
V4: 添加 users.age 索引
为什么需要迁移管理
| 问题 | 没有迁移管理 | 使用迁移管理 |
|---|---|---|
| 多人协作 | 手动同步 SQL,容易遗漏 | 迁移文件纳入版本控制 |
| 环境一致性 | 开发/测试/生产不同步 | 顺序执行迁移确保一致 |
| 变更回滚 | 手写反向 SQL | 自动生成 down 脚本 |
| 变更审计 | 无记录 | 有完整的变更历史 |
| 部署自动化 | 依赖人工执行 SQL | CI/CD 自动执行迁移 |
核心知识导航
本分类涵盖以下核心话题:
| 话题 | 说明 |
|---|---|
| 迁移工具 | Flyway、Liquibase、ORM 迁移工具的原理与对比 |
| 零停机迁移 | 不停服务变更数据库的策略与流程 |
| 数据同步与迁移实战 | 跨库迁移、异构数据同步、双写方案 |
核心原则
- 所有 Schema 变更必须通过迁移文件:禁止直接在生产库执行 DDL
- 迁移文件一旦提交不可修改:只能新增迁移来修正
- 迁移必须可回滚:每个 up 对应一个 down
- 迁移文件纳入版本控制:与代码变更一起 Code Review