Posts Tags Categories About
Database Migration

困难

  • 如果数据库不能停机更新, 并且变更是不兼容的. 那么在变更期间, 旧的应用程序产生大量错误.

增加一列

  • 首先需要变更数据库表结构, 新列中的值此时都为NULL.
  • 然后更改应用程序代码, 开始向数据库中插入包含新列的记录.
  • 然后运行迁移程序为列式数据计算新列的值, 并更新历史数据.
  • 最后可能会为新列添加上NOT NULL的约束.

删除一列

  • 首先更改应用程序代码, 不再使用该列, 可能需要移除NOT NULL的约束.
  • 然后需要变更数据库表结构, 移除该列.

移动一列

  • 首先需要修改应用程序代码, 进行双写.
  • 然后需要运行迁移程序, 处理历史数据.
  • 然后需要修改应用程序, 只读新表.
  • 然后需要改为单写, 只写新表.
  • 最后就可以移除旧的数据了.