值得一提的是, order_id是通过雪花算法获得, 可以从order_id中获取创建时间, 可以通过order_id直接获取分片键.
?...成本极高, 与业务耦合严重, 不考虑.
连接层: 是方案1的进阶版, 在连接层拦截SQL进行双写, 与业务解耦, 但与1有着同样的一个问题: 周期较长, 要确保旧数据不会产生变更才能进行迁移....相比较之下, 方案4和5都是可选的, 因数据库在云上, 直接读取日志不方便, 且方案5有成熟的开源中间件canal可用, 故笔者选择了方案5....写脚本读取备份库B中的order表, 写入主库A的order新表.
通过canal开始同步旧表数据到新表, 命名为[同步过程-a].
?
上线
编译新代码并弹一个新的集群, 确认完全启动完成....执行flush logs生成新的binlog, 新表向旧表同步数据将从这里开始.
流量切到新集群.
停止[同步过程-a].
开始从新表向旧表同步数据.