背景
TiDB 作为分库分表方案的一个 “终结者”,获得了许多用户的青睐。在切换到 TiDB 之后,用户告别了分库分表查询和运维带来的复杂度。但是在从分库分表方案切换到 TiDB 的过程中,这个复杂度转移到了数据迁移流程里。TiDB DM 工具为用户提供了分库分表合并迁移功能,在数据迁移的过程中,支持将分表 DML 事件合并迁移,并一定程度支持上游分表进行 DDL 变更。 分库分表 DDL 的问题(简略版) 本节首先以一个例子粗略介绍分库分表 DDL 对数据迁移的影响,然后就这个问题给出更加正式的定义。 分库分表合并迁移的定义 接下来我们尝试使用更正式一点的语言来描述这个问题,从而引出如何正确解决这个问题。 分库分表 DDL 的问题(正式版) 从上面的定义来看,DDL 会造成两个方面的问题。 解决方法 对于上述 DDL 引入的问题并基于前文对于同步正确性的定义,我们可以得到一个满足要求的充分条件:当某分表出现 DDL 同步事件时,我们将其同步暂停;直到所有分表都出现该 DDL 同步事件时,我们将 DDL 应用到下游并恢复所有分表的同步。此时我们可以保证下游表的 DDL 产生的影响等于所有分表都进行了 DDL(不考虑非确定性 DDL,例如 DDL 新增列默认值为 current_timestamp)。 悲观协调例子 左图中,当分表 t1 遇到 DDL 时,t2 同步事件还没有到这条 DDL,因此 t1 同步应当被暂停。当进展到右图时,t1、t2 分表都出现了相同的 DDL,因此此时可以将这条 DDL 应用到下游并恢复 t1、t2 的同步。
悲观协调模式限制 因为悲观协调模式的种种限制,DM 也提供了新的乐观协调模式,我们将在后续的文章中具体介绍,希望大家能够在深入了解两种协调模式的原理和使用限制后,根据场景选择合适的模式进行分库分表的合并迁移。
2023-07-18 PingCAP发布了 《时刻领先丨PingCAP 用户峰会 2023 圆满收官》的文章
2023-02-13 PingCAP发布了 《促进关键软件高层次人才培养:平凯星辰与华东师范大学签订联合博士培养合作协议》的文章
2023-01-10 PingCAP发布了 《同盾科技 x TiDB丨实时数据架构为风控智能决策保驾护航》的文章
2022-12-09 PingCAP发布了 《PingCAP 成为中国唯一入选 Forrester Wave 数据库厂商,被评为卓越表现者》的文章
2022-12-09 PingCAP发布了 《案例故事丨老虎国际 x TiDB ,降低架构复杂性,保障全球用户安全可靠投资》的文章