订单分表分库方案

来源:互联网 发布:淘宝小铺货源 编辑:程序博客网 时间:2024/06/07 05:29
一.检查迁移原则:
1.开启新表查询逻辑时,不能出现新表与旧表数据及状态不一致。否则会有数据错误问题。
2.迁移并行期间,如果出现错误,要有预案
3.分阶段,小步迁移,做好开关,出现异常回退
4.数据对账,业务对账用于发现问题
5.启用新表查询逻辑后,根据旧的业务单查询要能查到。
在迁移时间点前的订单号是旧订单号,这里需要建立一个旧订单号与新订单号的映射表。

二.迁移流程:
1.创建表,离线同步数据,新表上有个字段存储旧订单号。
这步需要将旧表的订单全部同步到新表,对应需要生成新的订单记录。

这步后,新表与旧表会相差一小部分增量进来的订单。后面需要补足。
2.上线新后台,双写阶段,旧表新表,一起写。记录下这个时间点。
这个阶段,新写入的订单需要新旧表一起写,对外还是以旧订单号。
这个阶段创建的订单,能够保证状态都是一致的,更新也是新旧订单一起写,一个事务。

在做补偿时,如果发现旧表有订单,则记录error log,这时暂时不处理。这部分订单就是在上线第2步时产生的增量数据。
不会很多。
补偿时,如果发现新表也有订单,则成功补偿后,一个事务更新。

这步出现异常,可以回退版本。

3.每天检查新旧表数据量是否相同,并且新旧表的记录是否一致。包含状态一致。有异常的,需要介入处理。
检查旧表存在,新表没有的,需要在新表生成新订单。

4.运行一周,然后检查在第2步【上线新后后,双写阶段】之前的订单新旧表是否一致。
这里,如果存在不是终态的,如果也没在新表里,在之后启用新表后查询会有问题。通常未完成订单需要补单。
5.都没问题后,某个业务的新表查询,这部分主要拿一个相对不重要的业务做试点,试运行二周.
这步相当于这个试点业务,已经完全采用新表逻辑了,因为新旧表是双写,这里新表查询也开启了。

这步如果发现有异常,则将新表查询回退到旧表查询,用开关控制,对应需要看具体异常具体处理。

6.试点业务运行正常,则开启另外几个业务。试运行四周。
出现异常,如果发现新表查询这个逻辑有问题,需要回退到旧表查询,用开关控制。

7.所有都运行正常,相当于新表查询已经对全业务开启。运行二个月,然后之后没问题再停止旧表的写入。




原创粉丝点击