比如之前uid如果是uid=3取模3%3=0, 是分配在A库上,新加入D库后, uid=3取模3%4=3,分配在D库上;
写和修改接口是少数, 改动点少;
升级只是增加了一些日志,采用异步方式实现, 对业务功能没有太多影响。
整个过程仍然采用旧库进行对外服务。数据迁移完成之后, 并不能切换至新库提供服务。
数据同步工具实现复杂度不高。
只对旧库进行读取操作, 如果同步出现问题, 都可以对新库进行回滚操作。
可以限速或分批迁移执行, 不会有时间压力。
读取log日志,获取具体是哪个库、表和主键发生了变化修改;这样可以最大程度的保障数据的一致性。风险分析:
把旧库中的主键记录读取出来
根据主键ID,把新库中的记录替换掉
整个过程, 仍然是旧库对线上提供服务;但是, 日志增量同步完成之后, 还不能切换到新的数据库。
日志迁移工具实现的复杂度较低;
任何时间发现问题, 可以重新再来,有充分的容错空间;
可以限速重放处理日志, 处理过程不会因为对线上影响造成时间压力。
把uid%4=0和uid%4=2的数据分别分配到A和A0主库中
把uid%4=1和uid%4=3的数据分配到B和B0主库中
auto-increment-offset=1 主键自增基数, 从1开始。
auto-increment-increment=2 主键自增偏移量,每次为2。
auto-increment-offset=2 主键自增基数, 从2开始。配置修改完成后, 重启数据库。
auto-increment-increment=2 主键自增偏移量,每次为2。
本文由传智教育博学谷 - 狂野架构师教研团队发布
如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力
转载请注明出处!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |