通过对数据的垂直拆分或水平拆分后,我们解决了数据库容量、性能等问题,但是将会面临数据迁移和数据一致性的问题。
在数据迁移方面,需要考虑如何快速迁移、平滑迁移、不停机的迁移等。待数据迁移完毕后,还需要校验数据的完整性。
数据一致性方面,要根据的业务来判断是否要必要引入分布式事务,如果需要引入分布式事务,需要斟酌是采用XA,还是基于BASE的柔性事务。
数据迁移
数据迁移是很容易出故障的一个环节,需要考虑怎么更加平滑的迁移旧数据到新的数据库和系统,以及达到数据准确、快速迁移、减少停机、对业务的影响小等,特别是异构的数据结构情况下,难度更大。
全量
全量迁移的过程如下:
-
业务系统停机。
-
数据库迁移,校验数据一致性。
-
然后业务系统升级,接入新的数据库。
缺点:
-
需要业务系统停机
-
迁移时间较长,对业务影响较大。如果是异构数据的话,需要使用程序来处理,迁移时间更长。
全量+增量
全量+增量迁移的方式,需要依赖数据本身的创建时间,步骤如下:
-
先同步数据到最近的某个时间戳(创建时间)。
-
然后发布系统升级维护的通知。
-
然后同步最近一段时间变化的