线上数据无缝迁库
当 数据量 和 qps/tps 达到一定的时候,将某块业务的一系列的表迁移到另外一个库是必然需要的。
+----------------------------------------------+
A | |
+----------------------------------------------+
++
B ||
++
双写
+----------------------------------------------+------------+
A | | |
+----------------------------------------------+------------+
++ +------------+
B || | |
++ +------------+
数据 dump
可以一次dump 10条数据 (拍脑袋),对于更新比较频繁的表可以适当减少,这里会有少量的数据是不一致的 (表的并发更新之类,dump 不能保证原子性),不用担心,我们可以在后面校验数据的时候直接修复掉
对 id取模,多进程dump 加快速度
+----------------------------------------------+------------+
A | | |
+----------------------------------------------+------------+
+-------------+ +------------+
B | | | |
+-------------+ +------------+
数据校验
这块要一条一条数据的进行对比 (扫表)
切读
在业务代码里面,将 db 的连接改到新库 B 上
去写
到这一步,代码里面的双写就可以直接去掉了;完美迁库。(旧库中的表不急忙删除,你懂的)
哎呦,方法不错
现在业务不是很大,都是停机迁移的