用途
Data Migration Scripts 用于创建健壮、安全且可回滚的数据迁移脚本,面向数据库模式变更与数据转换,目标是在尽量降低停机时间的前提下完成迁移。
适用场景
资料列出的使用场景包括:
- 数据库模式变更
- 添加、删除或修改列
- 在不同数据库系统之间迁移
- 数据转换与清理
- 拆分或合并表
- 修改数据类型
- 添加索引与约束
- 数据回填
- 多租户数据迁移
主要能力
该技能围绕可逆迁移、数据验证和零停机部署展开。参考指南目录中提供以下详细实现:
- Knex.js Migrations(Node.js)
- Alembic Migrations(Python/SQLAlchemy)
- Large Data Migration with Batching(大批量数据分批迁移)
- Zero-Downtime Migration Pattern(零停机迁移模式)
- Migration Validation(迁移验证)
- Cross-Database Migration(跨数据库迁移)
使用方式
资料给出一个基于 Knex.js 的最小可用示例,文件路径为 migrations/20240101000000_add_user_preferences.ts,导出 up 函数。示例中创建 user_preferences 表,包含 uuid 主键、引用 users 表 id 的 user_id 外键(级联删除)、jsonb 类型的 preferences 字段(默认 {})、created_at 与 updated_at 时间戳,并为 user_id 建立索引;随后通过原始 SQL 将既有数据插入新表,使用 jsonb_build_object 构造 preferences,其中 theme 使用 COALESCE(theme, 'light')。资料注明完整实现参见参考指南。
最佳实践
资料以 DO / DON'T 形式列出实践建议。
应当做:
- 始终同时编写 up 和 down 迁移
- 在类生产数据上测试迁移
- 对原子操作使用事务
- 分批处理大数据集
- 在数据插入之后再添加索引
- 迁移后验证数据
- 记录进度与错误
- 对应用代码变更使用功能开关
- 运行迁移前备份数据库
- 测试回滚流程
- 记录迁移的副作用
- 对所有迁移进行版本控制
- 使用幂等操作
不应做:
- 在生产环境运行未测试的迁移
- 在没有向后兼容的情况下做破坏性变更
- 在单个事务中处理数百万行
- 跳过回滚实现
- 忽略迁移失败
- 修改旧的迁移
- 在没有备份的情况下删除数据
- 在生产环境手动运行迁移
限制
资料未提供该技能的具体安装命令、收费方式、支持平台、性能指标或效果保证,这些信息暂未提供。