如何平滑让系统从未分库分表动态切换到分库分表上?

2021-12-24 08:54:12 浏览数 (1)

在我们遇见其三年内不会有大数据量问题时候一般不会进行分库分表,那么数据一致都是单库单表的存在,我们由于种种压力需要分库分表了咋办?系统停机去迁移?这不可取,影响太大太久。那么咋能平滑迁移呢?

一.双写迁移

平滑迁移主要用到双写迁移方案,简单来说就是所有的DML语句在数据在数据完全迁移之前要同时进行新旧库操作;当然这里写的新库不是准确一个库的意思,而是代表我们的分库分表中间件,让他向我们的分库分表中间件进行DML。

二 注意事项

  • 1.在完全迁移完毕之前读库的时候我们走老库读
  • 2.我们写个数据迁移程序把老库的数据向新库迁移,跑起来读老库数据写新库,写的时候要根据一个最后更新时间,比如last_dttm这类字段判断这条数据最后修改的时间,除非是读出来的数据在新库里没有,或者是比新库的数据新才会写。
  • 3.接着导万一轮之后,有可能数据还是存在不一致,那么就程序自动做一轮校验,比对新老库每个表的每条数据,接着如果有不一样的,就针对那些不一样的,从老库读数据再次写。反复循环,直到两个库每个表的数据都完全一致为止。
  • 4.接着当数据完全一致了,就ok了,基于仅仅使用分库分表的最新代码,重新部署一次,如此就仅仅基于分库分表在操作了,还没有几个小时的停机时间,很稳。

0 人点赞