前置准备
1. 部署环境准备
推荐在与待迁移 MySQL/TiDB 和 TDSQL Boundless 实例网络互通的服务器上部署 Dumpling。
2. 使用 TiUP 部署 Dumpling
## 部署 TiUPcurl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | shsource /root/.bash_profile## 部署 Dumpling 并升级到最新版本tiup install dumplingtiup update --self && tiup update dumpling
3. 配置 Dumpling 所需权限
你需要以下权限才能从上游数据库导出数据:
SELECT
RELOAD
LOCK TABLES
REPLICATION CLIENT
PROCESS
操作步骤
如下示例将展示如何使用 Dumpling 从 TiDB 中导出 SQL 文件并通过社区工具 myloader 导入 TDSQL Boundless,并开启 TiCDC 进行增量同步。
1. 临时关闭上游 TiDB 自建集群的 GC 机制。
为确保增量迁移期间新写入的数据不会丢失,在开始迁移前需要关闭上游集群的垃圾回收(GC)机制,防止系统清理历史数据。
运行以下命令,验证设置是否成功。
SET GLOBAL tidb_gc_enable = FALSE;
验证设置是否成功:
SELECT @@global.tidb_gc_enable;
以下为示例输出,其中0表示已关闭。
+-------------------------+| @@global.tidb_gc_enable |+-------------------------+| 0 |+-------------------------+1 row in set (0.00 sec)
2. 运行 Dumpling,将全量数据导出为 SQL 文件。
tiup dumpling -u root -P 4000 -h tidb_host -o /tmp/test
3. 检查导出数据。
通常导出的数据包括以下内容:
metadata:包含导出起始时间和主库 binlog 位置{schema}-schema-create.sql:创建 schema 的 SQL 文件{schema}.{table}-schema.sql:创建表的 SQL 文件{schema}.{table}.{0001}.{sql|csv}:数据文件*-schema-view.sql、*-schema-trigger.sql、*-schema-post.sql:其他导出的 SQL 文件以如下 metadata 文件为例:
Started dump at: 2025-12-02 12:42:53SHOW MASTER STATUS:Log: tidb-binlogPos: 462583122654920710GTID:Finished dump at: 2025-12-02 12:42:53
其中
Pos 后数字为导出所使用的 TiDB 时间戳,该时间戳将用于后续增量迁移设置 TiCDC 回放起点。4. 导入数据
使用 myloader 工具进行导入。下例中
-d 所使用的目录为前例中 Dumpling 所导出的目录。myloader -h tdsql_host -P 3306 --user tdsqluser -d /tmp/test
5. 通过 TiCDC 进行增量同步。如下例子中,将
start-ts设为从 Dumpling metadata 中获取的时间戳。详情可参考 TiDB 官方说明。tiup cdc cli changefeed create --server=http://ticdc_host:8300 --sink-uri='mysql://tdsql_user@tdsql_host:3306' --changefeed-id="upstream-to-downstream" --start-ts="462583122654920710"
6. 恢复 TiDB 的 GC 行为,并检查设置成功与否。
SET GLOBAL tidb_gc_enable = TRUE;
验证恢复成功:
SELECT @@global.tidb_gc_enable;
预期输出为1,表示已开启:
+-------------------------+| @@global.tidb_gc_enable |+-------------------------+| 1 |+-------------------------+1 row in set (0.00 sec)