数据迁移 #
背景 #
当业务持续发展,数据量和并发量达到一定程度,传统单体数据库可能面临性能、可扩展性、可用性等问题;
业界曾提出 NoSQL 解决方案,通过数据分片和水平扩容解决以上问题,但是 NoSQL 数据库通常不支持事务和 SQL;
DBPlusEngine 也支持数据分片和水平扩容,可以解决以上问题,同时还支持分布式事务和 SQL;
DBPlusEngine 提供的数据迁移方案可以助力传统单体数据库平滑切换到 DBPlusEngine。
挑战 #
在迁移过程中,不应该对正在运行的业务造成影响。尽可能减少迁移时数据不可用的时间窗口,是数据迁移的第一个挑战;
其次,数据迁移不应该对现有的数据造成影响,如何保证数据的正确性,是数据迁移的第二个挑战。
目标 #
减少数据迁移时的业务影响,提供一站式的通用数据迁移解决方案,是 SphereEx-DBPlusEngine 数据迁移的主要设计目标。
核心概念 #
节点 #
运行计算层或存储层组件进程的实例,可以是物理机、虚拟机、容器等。
集群 #
为了提供特定服务而集合在一起的多个节点。
源端 #
原始数据所在的存储集群。
目标端 #
原始数据将要迁移的目标存储集群。
数据迁移作业 #
把数据从某一个存储集群复制到另一个存储集群的完整流程。
存量数据 #
在数据迁移作业开始前,数据节点中已有的数据。
增量数据 #
在数据迁移作业执行过程中,业务系统所产生的新数据。
使用限制 #
支持项 #
- 将外围数据迁移至 SphereEx-DBPlusEngine 所管理的数据库;
- 整型或字符串主键表迁移。
不支持项 #
- 迁移无主键且无唯一键的表;
- 迁移复合主键或复合唯一键的表;
- 不支持在当前存储节点之上做迁移,需要准备一个全新的数据库集群作为迁移目标库。