记一次线上表拆分多表过程 (shardingsphere + DTS)

1.先在网上找了下相关资料,提供了些思路。

2.前期调研
记一次线上表拆分多表过程 (shardingsphere + DTS)

3.计划准备选用这条方案
记一次线上表拆分多表过程 (shardingsphere + DTS)

4.由于这个代码侵入性比较强,所以同时也在和同事讨论有没有更好的办法,偶然中提到了DTS,说是可以配置任务去实时全量和增量的按照自定义的字段分表算法同步数据到子表,无需写代码,大大提高了积极性,然后立马去钻研,去测试环境走了一遍,发现很OK,欣然若喜,哈哈。
记一次线上表拆分多表过程 (shardingsphere + DTS)
记一次线上表拆分多表过程 (shardingsphere + DTS)
5.这个是支持增量的,在建迁移任务的时候把增量选上,相关截图如下

记一次线上表拆分多表过程 (shardingsphere + DTS)
记一次线上表拆分多表过程 (shardingsphere + DTS)

记一次线上表拆分多表过程 (shardingsphere + DTS)
6.然后部署升级的时候也需要注意一下,如果应用是有好几台机器部署么,升级的话应该是一台一台进行的,那在这个过程中会不会出现一台机器读新表,一台机器写旧表呢,那怎么解决呢?
记一次线上表拆分多表过程 (shardingsphere + DTS)
解决方案:
可以这样处理:先升级的那一台对应的路由关闭,等升级好了,再打开同时把第二台需要升级的机器路由关闭,等升级好了再打开,接近于无缝切换,服务也不断,这样也不会出现刚刚说的那种一台机器写的读的表不一致的情况
记一次线上表拆分多表过程 (shardingsphere + DTS)
记一次线上表拆分多表过程 (shardingsphere + DTS)

哈哈,这就是大概的一些过程,有问题欢迎感兴趣的同学私聊