由于早期数据库设计不合理,需要修改线上数据库表结构,比较麻烦的是新设计将原来的一个表拆成了两个表,并且允许了表之间存在一对多关系。
为了保证安全的线上变更,设计了如下变更步骤
引入新表
第一步也是最简单的一步,创建新表结构,此时不会产生任何影响。
并行逻辑执行
按照新表执行逻辑,将所有涉及旧表的逻辑重写,注意此时并不删除或修改旧逻辑,新老逻辑同时执行,但是忽略新逻辑的报错和结果,只返回旧逻辑结果
数据库双写
所有数据的读写操作,尤其是写入操作,同时写入新库和旧库
数据迁移
历史数据通过离线系统,逐渐迁移到新表
并行逻辑切换校验
返回新逻辑结果,检查是否正确,通过测试后可以删除旧逻辑