MySQL 到 Kingbase 数据同步实施指南:全量、增量和 CDC 怎么落地

MySQL 到 Kingbase 数据同步实施指南,覆盖 Canal、Kettle、DataX 和 DataMover 的选型差异,说明 MySQL binlog、Kingbase 目标权限、DataMover 部署、内存配置、任务创建和结果校验。适合信创改造前完成一轮可复制的迁移同步实施。

先说现场

MySQL 到 Kingbase 的难点不在数据导出导入,而在自增主键、tinyint、datetime、字符集、大小写和后续增量能力。实施时先用 2 到 3 张典型表跑通,再逐步放大。

典型表优先选择:

  • 带自增主键的表。
  • 状态、布尔字段较多的表。
  • 时间字段完整的表。
  • 宽表和金额字段较多的表。

方案怎么选

方案适合场景主要限制
CanalMySQL binlog 增量解析、消息分发需要 MySQL、Kafka 和消费端配合,适合 CDC 链路但不适合直接完成异构建表
Kettle批量抽取、转换和报表数据准备偏 ETL 流程,长期同步和 CDC 管理不如专用工具直观
DataX一次性离线全量迁移需要维护 JSON,缺少可视化任务和 CDC 管理
DataMoverMySQL 到 Kingbase 的全量、增量字段和 CDC需要部署 Manager、Worker 和元数据库

如果只是做一次性迁移,DataX 也能完成;如果还要长期同步、删除事件和断点续传,DataMover 的可视化任务和位点管理更合适。

DataMover 是什么

DataMover 是一个私有化部署的数据迁移同步工具:

  • 普通任务处理全量和基于增量字段的定时同步。
  • 实时任务处理 MySQL CDC,通过 binlog 捕获 INSERT、UPDATE、DELETE。
  • Web 界面配置数据源、表映射、字段映射、同步策略和执行监控。
  • Manager 负责调度,Worker 负责实际读取和写入。

部署拓扑

浏览器
  |
Manager: 8000
  |
Worker: 8011
  |
元数据库:MySQL 5.7+ 或 PostgreSQL 12+

部署拓扑

curl -fsSL https://down.datamover.cn/install.sh | bash

下载页:https://datamover.cn/download.html
文档页:https://datamover.cn/doc/

准备阶段:测试表建表和造数

先在 MySQL 源端创建测试表并生成数据,Kingbase 目标端可以用 DataMover 自动建表,也可以先按预期结构创建。

MySQL 源端测试表

CREATE TABLE dm_demo_user (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(64),
  phone VARCHAR(32),
  status VARCHAR(16),
  amount DECIMAL(18,2),
  created_at DATETIME,
  updated_at DATETIME
);

INSERT INTO dm_demo_user (username, phone, status, amount, created_at, updated_at)
SELECT
  CONCAT('user_', n),
  CONCAT('1380000', LPAD(n, 4, '0')),
  CASE WHEN n % 2 = 0 THEN 'active' ELSE 'inactive' END,
  ROUND(RAND() * 100000, 2),
  NOW(),
  NOW()
FROM (
  SELECT @n := @n + 1 AS n
  FROM information_schema.columns a,
       information_schema.columns b,
       (SELECT @n := 0) c
  LIMIT 10000
) t;

Kingbase 目标端预期表结构

CREATE TABLE dm_demo_user (
  id BIGINT PRIMARY KEY,
  username VARCHAR(64),
  phone VARCHAR(32),
  status VARCHAR(16),
  amount NUMERIC(18,2),
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);

源库和目标库权限

端需要权限原因
MySQL 源端读取表结构、业务数据和元数据;CDC 场景还要 binlog 读取权限数据源连接、选表、字段映射和增量读取
Kingbase 目标端建表、写入、更新、删除自动建表和任务写入
元数据库创建数据库和表权限保存任务、位点和执行记录
Worker访问源端、目标端和元数据库实际执行任务

MySQL CDC 前还需要确认 binlog 已开启、行格式满足要求,并使用具备复制权限的账号。

MySQL 源端权限检测

SHOW GRANTS FOR 'datamover_user'@'%';
SELECT @@log_bin, @@binlog_format, @@binlog_row_image;

MySQL 源端授权示例

CREATE USER 'datamover_user'@'%' IDENTIFIED BY 'change_me';
GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT
ON *.* TO 'datamover_user'@'%';
FLUSH PRIVILEGES;

Kingbase 目标端权限检测

SELECT grantee, table_schema, table_name, privilege_type
FROM information_schema.table_privileges
WHERE grantee = 'datamover_target'
ORDER BY table_name, privilege_type;

Kingbase 目标端授权示例

CREATE USER datamover_target PASSWORD 'change_me';
CREATE SCHEMA datamover_sync AUTHORIZATION datamover_target;
GRANT ALL ON SCHEMA datamover_sync TO datamover_target;

DataMover 配置选择和内存配置

配置建议说明
数据批大小默认 5000先跑通再调优,避免一开始调大
抽取方式首次全量选择 全量日常同步选择 增量
增量字段优先自增主键或 updated_at字段应有索引
调度方式一次性或间隔性按业务节奏配置
Worker JVM数据量大时调大避免批大小提升后频繁 GC
目标端索引大批量迁移可评估迁移后再建索引减少写入放大

创建普通任务

  1. 添加 MySQL 源端数据源,测试连接通过。
  2. 添加 Kingbase 目标端数据源,确认建表和写入权限。
  3. 新建普通任务,选择源端和目标端。
  4. 进入表映射,选择试迁表。
  5. 检查字段映射和同步策略。
  6. 保存并启动。

创建普通任务

字段映射重点

MySQL 类型/特性Kingbase 处理要确认什么
AUTO_INCREMENT序列或 identity当前值校准
TINYINTSMALLINT 或对应整型布尔、状态字段语义
DATETIMEKingbase 时间类型精度和时区
VARCHARVARCHAR长度、字符集
ON UPDATE时间戳逻辑单独确认是否保留自动更新时间行为

增量字段和 CDC

普通增量字段只能感知新增和修改,无法感知物理删除。需要同步删除时,使用实时任务 CDC。

普通增量同步策略

MySQL CDC 前检查:

  • binlog 是否开启。
  • 行格式是否满足要求。
  • 源端账号是否具备复制权限。

CDC 策略配置入口

结果验证

SELECT COUNT(*) FROM source_table;
SELECT COUNT(*) FROM target_table;

SELECT MIN(id), MAX(id) FROM source_table;
SELECT MIN(id), MAX(id) FROM target_table;

SELECT status, COUNT(*) FROM source_table GROUP BY status;
SELECT status, COUNT(*) FROM target_table GROUP BY status;

SELECT * FROM source_table WHERE id IN (1, 100, 1000);
SELECT * FROM target_table WHERE id IN (1, 100, 1000);

常见坑

自增主键迁移后新数据冲突

原因是自增当前值没有同步到 Kingbase 序列。全量迁移后查询目标表最大主键,并校准序列。

tinyint 状态字段被错误解释

TINYINT(1) 在 MySQL 里常被当布尔值,迁到 Kingbase 后要确认目标字段类型和业务逻辑。

CDC 启动后没有增量

检查 binlog、行格式、源端权限和 Worker 日志。

相关入口

常见问题解答

MySQL 到 Kingbase 选 DataX 还是 DataMover?

一次性离线迁移可以选 DataX;如果还要增量字段、CDC 和断点续传,DataMover 的普通任务和实时任务更适合持续同步。

MySQL 自增主键迁移到 Kingbase 后怎么办?

将自增主键转为 Kingbase 序列或 identity,并校准当前值,避免新数据主键冲突。

MySQL 到 Kingbase CDC 前要检查什么?

确认 MySQL binlog、行格式、源端复制权限和 Worker 日志,必要时临时打开 DEBUG。

在自己的环境中验证

下载 DataMover,开始配置迁移与同步任务。

免费下载快速开始