全库迁移工具 - mxshift

YMatrix 使用 mxshift 工具来进行全库数据迁移操作。

mxshift 工具目前支持以下功能:

  • 全量迁移:以数据库为单位,实现从 Greenplum 4.3.X/5/6 / YMatrix 集群并行迁移数据表数据定义语言(DDL)及数据到新的 YMatrix 集群。
  • 增量迁移:以表为单位,实现从 Greenplum 5/6 / YMatrix 集群并行迁移目标数据库中新增数据表的数据定义语言(DDL)及数据到新的 YMatrix 集群。
  • 条件迁移:通过 WHERE 条件实现数据的条件迁移。
  • 支持的数据分布策略:哈希分布、随机分布、复制表(REPLICATED)、Master-only。

1 mxshift 原理

如果将数据迁移过程比喻为水流从管道中流过,数据传输效率比喻为水流速率,那么水流速率时常会因为“管道中最窄的部分”而在整体上被局限在一个低值,出现所谓的“单点瓶颈”。

考虑到这一点,mxshift 工具实现了由 Segment 直接到 Segment 的数据传输,消除通常迁移操作中可能出现的单点瓶颈。在出现源集群与目标集群拓扑结构不一致,即异构情况时,mxshift 也可以根据源集群 Segment 个数、目标集群 Segment 个数、Segment 是否在同一台物理机等信息计算出最优映射方案,实现自动化数据迁移。

2 mxshift 用法

mxshift 以配置文件的方式运行。首先,编辑配置文件 config.toml

注意!
完整配置文件请见 mxshift

$ vim config.toml

[database]
    [database.source]
        db-database= "testdb"
        db-host="sdw3"
        db-password="xxxx"
        db-port=54322
        db-user="mxadmin"

    [database.target]
        db-database="destdb"
        db-host="172.16.100.32"
        db-password="yyyy"
        db-port=5432
        db-user="mxadmin"

[scope]
install-dir="/usr/local/greenplum-db-6.7.1"

准备好 TOML 文件后,执行如下命令以启动 mxshift 进行迁移。

$ mxshift -c config_path.toml

注意!
mxshift 完整参数与用法请见 mxshift