From e0f0ff425b069b12b9d4d967f978a4d36071a8b8 Mon Sep 17 00:00:00 2001 From: qiancai Date: Thu, 9 Dec 2021 17:31:38 +0800 Subject: [PATCH 01/21] add_dm_k8s_entrance --- TOC.md | 3 +- dm/dm-overview.md | 87 +++++++++++++++++++++++++++++++++++++++++++ tidb-in-kubernetes.md | 23 ++++++++++++ 3 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 dm/dm-overview.md create mode 100644 tidb-in-kubernetes.md diff --git a/TOC.md b/TOC.md index 5b669dd26bd0..545bd4f44ee1 100644 --- a/TOC.md +++ b/TOC.md @@ -31,7 +31,7 @@ - [混合部署拓扑结构](/hybrid-deployment-topology.md) - 安装与启动 - [使用 TiUP 部署(推荐)](/production-deployment-using-tiup.md) - - [在 Kubernetes 上部署](https://docs.pingcap.com/zh/tidb-in-kubernetes/stable) + - [在 Kubernetes 上部署](/tidb-in-kubernetes.md) - [验证集群状态](/post-installation-check.md) - 测试集群性能 - [用 Sysbench 测试 TiDB](/benchmark/benchmark-tidb-using-sysbench.md) @@ -181,6 +181,7 @@ - [监控告警](/tidb-lightning/monitor-tidb-lightning.md) - [FAQ](/tidb-lightning/tidb-lightning-faq.md) - [术语表](/tidb-lightning/tidb-lightning-glossary.md) + - [TiDB Data Migration](/dm/dm-overview.md) - Backup & Restore (BR) - [BR 工具简介](/br/backup-and-restore-tool.md) - [使用 BR 命令行备份恢复](/br/use-br-command-line-tool.md) diff --git a/dm/dm-overview.md b/dm/dm-overview.md new file mode 100644 index 000000000000..710fe19f305d --- /dev/null +++ b/dm/dm-overview.md @@ -0,0 +1,87 @@ +--- +title: TiDB Data Migration +summary: 了解 TiDB Data Migration +--- + +# TiDB Data Migration + +[TiDB Data Migration](https://github.com/pingcap/ticdc/tree/master/dm) (DM) 是一款便捷的数据迁移工具,支持从与 MySQL 协议兼容的数据库(MySQL、MariaDB、Aurora MySQL)到 TiDB 的全量数据迁移和增量数据同步。使用 DM 工具有利于简化错误处理流程,降低数据迁移运维成本。 + +## 版本说明 + +DM 工具的可用版本包括 v1.0、v2.0、v5.3。如无特殊需求,建议使用 DM 的最新稳定版本 v5.3。 + +DM 的用户文档目前独立于 TiDB 文档。要访问 DM 的用户文档,请点击以下链接: + +- [DM v1.0 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/v1.0/) +- [DM v2.0 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/v2.0/) +- [DM v5.3 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/stable) + +> **注意:** +> +> - DM 的 GitHub 代码仓库已于 2021 年 10 月迁移至 [pingcap/ticdc](https://github.com/pingcap/ticdc/tree/master/dm)。如有任何关于 DM 的问题,请在 `pingcap/ticdc` 仓库提交,以获得后续反馈。 +> - 在较早版本中(v1.0 和 v2.0),DM 采用独立于 TiDB 的版本号。从 DM v5.3 起,DM 采用与 TiDB 相同的版本号。DM v2.0 的下一个版本为 DM v5.3。DM v2.0 到 v5.3 无兼容性变更,升级过程与正常升级无差异,仅仅是版本号上的增加。 + +## 基本功能 + +本节介绍 DM 工具的核心功能模块。 + +![DM Core Features](/media/dm-core-features.png) + +### Block & allow lists + +[Block & Allow Lists](key-features.md#block--allow-table-lists) 的过滤规则类似于 MySQL `replication-rules-db`/`replication-rules-table`,用于过滤或指定只迁移某些数据库或某些表的所有操作。 + +### Binlog event filter + +[Binlog Event Filter](key-features.md#binlog-event-filter) 用于过滤源数据库中特定表的特定类型操作,比如过滤掉表 `test`.`sbtest` 的 `INSERT` 操作或者过滤掉库 `test` 下所有表的 `TRUNCATE TABLE` 操作。 + +### Table routing + +[Table Routing](key-features.md#table-routing) 是将源数据库的表迁移到下游指定表的路由功能,比如将源数据表 `test`.`sbtest1` 的表结构和数据迁移到 TiDB 的表 `test`.`sbtest2`。它也是分库分表合并迁移所需的一个核心功能。 + +## 高级功能 + +### 分库分表合并迁移 + +DM 支持对源数据的分库分表进行合并迁移,但有一些使用限制,详细信息请参考[悲观模式分库分表合并迁移使用限制](feature-shard-merge-pessimistic.md#使用限制)和[乐观模式分库分表合并迁移使用限制](feature-shard-merge-optimistic.md#使用限制)。 + +### 对第三方 Online Schema Change 工具变更过程的同步优化 + +在 MySQL 生态中,gh-ost 与 pt-osc 等工具被广泛使用,DM 对其变更过程进行了特殊的优化,以避免对不必要的中间数据进行迁移。详细信息可参考 [online-ddl](key-features.md#online-ddl-工具支持)。 + +### 使用 SQL 表达式过滤某些行变更 + +在增量同步阶段,DM 支持配置 SQL 表达式过滤掉特定的行变更,以实现对同步数据的更精细控制。详细信息可参考[使用 SQL 表达式过滤某些行变更](feature-expression-filter.md)。 + +## 使用限制 + +在使用 DM 工具之前,需了解以下限制: + ++ 数据库版本要求 + + - MySQL 版本 > 5.5 + - MariaDB 版本 >= 10.1.2 + + > **注意:** + > + > 如果上游 MySQL/MariaDB servers 间构成主从复制结构,则需要 MySQL 版本高于 5.7.1 或者 MariaDB 版本等于或高于 10.1.3。 + + > **警告:** + > + > 支持从 MySQL v8.0 迁移数据是 DM v2.0 的实验特性,不建议在生产环境下使用。 + ++ DDL 语法兼容性限制 + + - 目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 [TiDB DDL 语法支持](https://pingcap.com/docs-cn/dev/reference/mysql-compatibility/#ddl)。 + + - DM 遇到不兼容的 DDL 语句时会报错。要解决此报错,需要使用 dmctl 手动处理,要么跳过该 DDL 语句,要么用指定的 DDL 语句来替换它。详见[如何处理不兼容的 DDL 语句](faq.md#如何处理不兼容的-ddl-语句)。 + ++ 分库分表数据冲突合并 + + - 如果业务分库分表之间存在数据冲突,可以参考[自增主键冲突处理](shard-merge-best-practices.md#自增主键冲突处理)来解决;否则不推荐使用 DM 进行迁移,如果进行迁移则有冲突的数据会相互覆盖造成数据丢失。 + - 分库分表 DDL 同步限制,参见[悲观模式下分库分表合并迁移使用限制](feature-shard-merge-pessimistic.md#使用限制)以及[乐观模式下分库分表合并迁移使用限制](feature-shard-merge-optimistic.md#使用限制)。 + ++ 数据源 MySQL 实例切换 + + - 当 DM-worker 通过虚拟 IP(VIP)连接到 MySQL 且要切换 VIP 指向的 MySQL 实例时,DM 内部不同的 connection 可能会同时连接到切换前后不同的 MySQL 实例,造成 DM 拉取的 binlog 与从上游获取到的其他状态不一致,从而导致难以预期的异常行为甚至数据损坏。如需切换 VIP 指向的 MySQL 实例,请参考[虚拟 IP 环境下的上游主从切换](usage-scenario-master-slave-switch.md#虚拟-ip-环境下切换-dm-worker-与-mysql-实例的连接)对 DM 手动执行变更。 diff --git a/tidb-in-kubernetes.md b/tidb-in-kubernetes.md new file mode 100644 index 000000000000..090050e7c91a --- /dev/null +++ b/tidb-in-kubernetes.md @@ -0,0 +1,23 @@ +--- +title: 在 Kubernetes 上部署 TiDB +summary: 了解如何在 Kubernetes 上部署 TiDB +--- + +# 在 Kubernetes 上部署 TiDB + +你可以使用 [TiDB Operator](https://github.com/pingcap/tidb-operator) 在 Kubernetes 上部署 TiDB。TiDB Operator 是 Kubernetes 上的 TiDB 集群自动运维系统,提供包括部署、升级、扩缩容、备份恢复、配置变更的 TiDB 全生命周期管理。借助 TiDB Operator,TiDB 可以无缝运行在公有云或私有部署的 Kubernetes 集群上。 + +TiDB Operator 与适用的 TiDB 版本的对应关系如下。如无特殊需求,建议使用 TiDB Operator 的最新稳定版本 v1.2。 + +| TiDB Operator 版本 | 适用的 TiDB 版本 | +|:---|:---| +| v1.0 | v2.1, v3.0 | +| v1.1 | v3.0, v3.1, v4.0, v5.0 | +| v1.2 | v3.0 及以上版本 | +| dev | v3.0 及以上版本,dev | + +TiDB Operator 的用户文档目前独立于 TiDB 文档。要访问 TiDB Operator 的用户文档,请点击以下链接: + +- [TiDB Operator v1.0 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/v1.0/) +- [TiDB Operator v1.1 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/v2.0/) +- [TiDB Operator v1.2 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/stable) \ No newline at end of file From 9402a68b7d2671c12ea02a25f0a2c1af771b6927 Mon Sep 17 00:00:00 2001 From: qiancai Date: Thu, 9 Dec 2021 17:42:46 +0800 Subject: [PATCH 02/21] add_dm_feature_graphic --- dm/dm-overview.md | 2 +- media/dm/dm-core-features.png | Bin 0 -> 22779 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 media/dm/dm-core-features.png diff --git a/dm/dm-overview.md b/dm/dm-overview.md index 710fe19f305d..7bf1d4e5f433 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -26,7 +26,7 @@ DM 的用户文档目前独立于 TiDB 文档。要访问 DM 的用户文档, 本节介绍 DM 工具的核心功能模块。 -![DM Core Features](/media/dm-core-features.png) +![DM Core Features](/media/dm/dm-core-features.png) ### Block & allow lists diff --git a/media/dm/dm-core-features.png b/media/dm/dm-core-features.png new file mode 100644 index 0000000000000000000000000000000000000000..5580557367da655f4ee81c8ff856a27c57b236b8 GIT binary patch literal 22779 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

LDKj%DzuruMfQai^Lu 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 Date: Thu, 9 Dec 2021 17:49:08 +0800 Subject: [PATCH 03/21] minor_wording_updates --- dm/dm-overview.md | 8 ++++---- tidb-in-kubernetes.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index 7bf1d4e5f433..b3003f903ab1 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -11,11 +11,11 @@ summary: 了解 TiDB Data Migration DM 工具的可用版本包括 v1.0、v2.0、v5.3。如无特殊需求,建议使用 DM 的最新稳定版本 v5.3。 -DM 的用户文档目前独立于 TiDB 文档。要访问 DM 的用户文档,请点击以下链接: +DM 工具的文档目前独立于 TiDB 文档。要访问 DM 工具的文档,请点击以下链接: -- [DM v1.0 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/v1.0/) -- [DM v2.0 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/v2.0/) -- [DM v5.3 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/stable) +- [DM v1.0 文档](https://docs.pingcap.com/zh/tidb-data-migration/v1.0/) +- [DM v2.0 文档](https://docs.pingcap.com/zh/tidb-data-migration/v2.0/) +- [DM v5.3 文档](https://docs.pingcap.com/zh/tidb-data-migration/stable) > **注意:** > diff --git a/tidb-in-kubernetes.md b/tidb-in-kubernetes.md index 090050e7c91a..6f22b1a37f63 100644 --- a/tidb-in-kubernetes.md +++ b/tidb-in-kubernetes.md @@ -16,8 +16,8 @@ TiDB Operator 与适用的 TiDB 版本的对应关系如下。如无特殊需求 | v1.2 | v3.0 及以上版本 | | dev | v3.0 及以上版本,dev | -TiDB Operator 的用户文档目前独立于 TiDB 文档。要访问 TiDB Operator 的用户文档,请点击以下链接: +TiDB Operator 的文档目前独立于 TiDB 文档。要访问 TiDB Operator 的文档,请点击以下链接: -- [TiDB Operator v1.0 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/v1.0/) -- [TiDB Operator v1.1 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/v2.0/) -- [TiDB Operator v1.2 用户文档](https://docs.pingcap.com/zh/tidb-data-migration/stable) \ No newline at end of file +- [TiDB Operator v1.0 文档](https://docs.pingcap.com/zh/tidb-data-migration/v1.0/) +- [TiDB Operator v1.1 文档](https://docs.pingcap.com/zh/tidb-data-migration/v2.0/) +- [TiDB Operator v1.2 文档](https://docs.pingcap.com/zh/tidb-data-migration/stable) \ No newline at end of file From edfc6cee0130bb034d911544226f6be4ad9492a4 Mon Sep 17 00:00:00 2001 From: qiancai Date: Thu, 9 Dec 2021 18:59:52 +0800 Subject: [PATCH 04/21] update_version_desc --- dm/dm-overview.md | 2 +- tidb-in-kubernetes.md | 11 ++--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index b3003f903ab1..c50ca8a53bf7 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -9,7 +9,7 @@ summary: 了解 TiDB Data Migration ## 版本说明 -DM 工具的可用版本包括 v1.0、v2.0、v5.3。如无特殊需求,建议使用 DM 的最新稳定版本 v5.3。 +DM 工具的稳定版本包括 v1.0、v2.0、v5.3。如无特殊需求,建议使用 DM 的最新稳定版本 v5.3。 DM 工具的文档目前独立于 TiDB 文档。要访问 DM 工具的文档,请点击以下链接: diff --git a/tidb-in-kubernetes.md b/tidb-in-kubernetes.md index 6f22b1a37f63..9d0b5158d0f2 100644 --- a/tidb-in-kubernetes.md +++ b/tidb-in-kubernetes.md @@ -7,16 +7,9 @@ summary: 了解如何在 Kubernetes 上部署 TiDB 你可以使用 [TiDB Operator](https://github.com/pingcap/tidb-operator) 在 Kubernetes 上部署 TiDB。TiDB Operator 是 Kubernetes 上的 TiDB 集群自动运维系统,提供包括部署、升级、扩缩容、备份恢复、配置变更的 TiDB 全生命周期管理。借助 TiDB Operator,TiDB 可以无缝运行在公有云或私有部署的 Kubernetes 集群上。 -TiDB Operator 与适用的 TiDB 版本的对应关系如下。如无特殊需求,建议使用 TiDB Operator 的最新稳定版本 v1.2。 +对于当前 TiDB 版本,TiDB Operator 工具的适用版本包括 v1.0、v1.1、v1.2。如无特殊需求,建议使用 TiDB Operator 的最新稳定版本 v1.2。 -| TiDB Operator 版本 | 适用的 TiDB 版本 | -|:---|:---| -| v1.0 | v2.1, v3.0 | -| v1.1 | v3.0, v3.1, v4.0, v5.0 | -| v1.2 | v3.0 及以上版本 | -| dev | v3.0 及以上版本,dev | - -TiDB Operator 的文档目前独立于 TiDB 文档。要访问 TiDB Operator 的文档,请点击以下链接: +TiDB Operator 的文档目前独立于 TiDB 文档。要查看如何使用 TiDB Operator 在 Kubernetes 上部署 TiDB 的详细步骤,请参阅对应版本的 TiDB Operator 文档: - [TiDB Operator v1.0 文档](https://docs.pingcap.com/zh/tidb-data-migration/v1.0/) - [TiDB Operator v1.1 文档](https://docs.pingcap.com/zh/tidb-data-migration/v2.0/) From 4f7fd7fef9454f70c70ca7ef0b25d1fb803f5bd1 Mon Sep 17 00:00:00 2001 From: qiancai Date: Thu, 9 Dec 2021 19:53:58 +0800 Subject: [PATCH 05/21] Update dm-overview.md --- dm/dm-overview.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index c50ca8a53bf7..40cc1f2a8c9e 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -30,29 +30,29 @@ DM 工具的文档目前独立于 TiDB 文档。要访问 DM 工具的文档, ### Block & allow lists -[Block & Allow Lists](key-features.md#block--allow-table-lists) 的过滤规则类似于 MySQL `replication-rules-db`/`replication-rules-table`,用于过滤或指定只迁移某些数据库或某些表的所有操作。 +[Block & Allow Lists](https://docs.pingcap.com/zh/tidb-data-migration/stable/key-features#block--allow-table-lists) 的过滤规则类似于 MySQL `replication-rules-db`/`replication-rules-table`,用于过滤或指定只迁移某些数据库或某些表的所有操作。 ### Binlog event filter -[Binlog Event Filter](key-features.md#binlog-event-filter) 用于过滤源数据库中特定表的特定类型操作,比如过滤掉表 `test`.`sbtest` 的 `INSERT` 操作或者过滤掉库 `test` 下所有表的 `TRUNCATE TABLE` 操作。 +[Binlog Event Filter](https://docs.pingcap.com/zh/tidb-data-migration/stable/key-features#binlog-event-filter) 用于过滤源数据库中特定表的特定类型操作,比如过滤掉表 `test`.`sbtest` 的 `INSERT` 操作或者过滤掉库 `test` 下所有表的 `TRUNCATE TABLE` 操作。 ### Table routing -[Table Routing](key-features.md#table-routing) 是将源数据库的表迁移到下游指定表的路由功能,比如将源数据表 `test`.`sbtest1` 的表结构和数据迁移到 TiDB 的表 `test`.`sbtest2`。它也是分库分表合并迁移所需的一个核心功能。 +[Table Routing](https://docs.pingcap.com/zh/tidb-data-migration/stable/key-features#table-routing) 是将源数据库的表迁移到下游指定表的路由功能,比如将源数据表 `test`.`sbtest1` 的表结构和数据迁移到 TiDB 的表 `test`.`sbtest2`。它也是分库分表合并迁移所需的一个核心功能。 ## 高级功能 ### 分库分表合并迁移 -DM 支持对源数据的分库分表进行合并迁移,但有一些使用限制,详细信息请参考[悲观模式分库分表合并迁移使用限制](feature-shard-merge-pessimistic.md#使用限制)和[乐观模式分库分表合并迁移使用限制](feature-shard-merge-optimistic.md#使用限制)。 +DM 支持对源数据的分库分表进行合并迁移,但有一些使用限制,详细信息请参考[悲观模式分库分表合并迁移使用限制](https://docs.pingcap.com/zh/tidb-data-migration/stable/feature-shard-merge-pessimistic#使用限制)和[乐观模式分库分表合并迁移使用限制](https://docs.pingcap.com/zh/tidb-data-migration/stable/feature-shard-merge-optimistic#使用限制)。 ### 对第三方 Online Schema Change 工具变更过程的同步优化 -在 MySQL 生态中,gh-ost 与 pt-osc 等工具被广泛使用,DM 对其变更过程进行了特殊的优化,以避免对不必要的中间数据进行迁移。详细信息可参考 [online-ddl](key-features.md#online-ddl-工具支持)。 +在 MySQL 生态中,gh-ost 与 pt-osc 等工具被广泛使用,DM 对其变更过程进行了特殊的优化,以避免对不必要的中间数据进行迁移。详细信息可参考 [online-ddl](https://docs.pingcap.com/zh/tidb-data-migration/stable/key-features#online-ddl-工具支持)。 ### 使用 SQL 表达式过滤某些行变更 -在增量同步阶段,DM 支持配置 SQL 表达式过滤掉特定的行变更,以实现对同步数据的更精细控制。详细信息可参考[使用 SQL 表达式过滤某些行变更](feature-expression-filter.md)。 +在增量同步阶段,DM 支持配置 SQL 表达式过滤掉特定的行变更,以实现对同步数据的更精细控制。详细信息可参考[使用 SQL 表达式过滤某些行变更](https://docs.pingcap.com/zh/tidb-data-migration/stable/feature-expression-filter)。 ## 使用限制 @@ -73,15 +73,15 @@ DM 支持对源数据的分库分表进行合并迁移,但有一些使用限 + DDL 语法兼容性限制 - - 目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 [TiDB DDL 语法支持](https://pingcap.com/docs-cn/dev/reference/mysql-compatibility/#ddl)。 + - 目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 [TiDB DDL 语法支持](/reference/mysql-compatibility/#ddl)。 - - DM 遇到不兼容的 DDL 语句时会报错。要解决此报错,需要使用 dmctl 手动处理,要么跳过该 DDL 语句,要么用指定的 DDL 语句来替换它。详见[如何处理不兼容的 DDL 语句](faq.md#如何处理不兼容的-ddl-语句)。 + - DM 遇到不兼容的 DDL 语句时会报错。要解决此报错,需要使用 dmctl 手动处理,要么跳过该 DDL 语句,要么用指定的 DDL 语句来替换它。详见[如何处理不兼容的 DDL 语句](https://docs.pingcap.com/zh/tidb-data-migration/stable/faq#如何处理不兼容的-ddl-语句)。 + 分库分表数据冲突合并 - - 如果业务分库分表之间存在数据冲突,可以参考[自增主键冲突处理](shard-merge-best-practices.md#自增主键冲突处理)来解决;否则不推荐使用 DM 进行迁移,如果进行迁移则有冲突的数据会相互覆盖造成数据丢失。 - - 分库分表 DDL 同步限制,参见[悲观模式下分库分表合并迁移使用限制](feature-shard-merge-pessimistic.md#使用限制)以及[乐观模式下分库分表合并迁移使用限制](feature-shard-merge-optimistic.md#使用限制)。 + - 如果业务分库分表之间存在数据冲突,可以参考[自增主键冲突处理](https://docs.pingcap.com/zh/tidb-data-migration/stable/shard-merge-best-practices#自增主键冲突处理)来解决;否则不推荐使用 DM 进行迁移,如果进行迁移则有冲突的数据会相互覆盖造成数据丢失。 + - 分库分表 DDL 同步限制,参见[悲观模式下分库分表合并迁移使用限制](https://docs.pingcap.com/zh/tidb-data-migration/stable/feature-shard-merge-pessimistic#使用限制)以及[乐观模式下分库分表合并迁移使用限制](https://docs.pingcap.com/zh/tidb-data-migration/stable/feature-shard-merge-optimistic#使用限制)。 + 数据源 MySQL 实例切换 - - 当 DM-worker 通过虚拟 IP(VIP)连接到 MySQL 且要切换 VIP 指向的 MySQL 实例时,DM 内部不同的 connection 可能会同时连接到切换前后不同的 MySQL 实例,造成 DM 拉取的 binlog 与从上游获取到的其他状态不一致,从而导致难以预期的异常行为甚至数据损坏。如需切换 VIP 指向的 MySQL 实例,请参考[虚拟 IP 环境下的上游主从切换](usage-scenario-master-slave-switch.md#虚拟-ip-环境下切换-dm-worker-与-mysql-实例的连接)对 DM 手动执行变更。 + - 当 DM-worker 通过虚拟 IP(VIP)连接到 MySQL 且要切换 VIP 指向的 MySQL 实例时,DM 内部不同的 connection 可能会同时连接到切换前后不同的 MySQL 实例,造成 DM 拉取的 binlog 与从上游获取到的其他状态不一致,从而导致难以预期的异常行为甚至数据损坏。如需切换 VIP 指向的 MySQL 实例,请参考[虚拟 IP 环境下的上游主从切换](https://docs.pingcap.com/zh/tidb-data-migration/stable/usage-scenario-master-slave-switch#虚拟-ip-环境下切换-dm-worker-与-mysql-实例的连接)对 DM 手动执行变更。 From bc0d7be1b9679f3f1d9e87d1bf198d0072c2850c Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Thu, 9 Dec 2021 19:54:30 +0800 Subject: [PATCH 06/21] Update dm/dm-overview.md Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com> --- dm/dm-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index 40cc1f2a8c9e..74f8824a1a81 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -15,7 +15,7 @@ DM 工具的文档目前独立于 TiDB 文档。要访问 DM 工具的文档, - [DM v1.0 文档](https://docs.pingcap.com/zh/tidb-data-migration/v1.0/) - [DM v2.0 文档](https://docs.pingcap.com/zh/tidb-data-migration/v2.0/) -- [DM v5.3 文档](https://docs.pingcap.com/zh/tidb-data-migration/stable) +- [DM v5.3 文档](https://docs.pingcap.com/zh/tidb-data-migration/v5.3) > **注意:** > From ef79f9c17f290f10ad6deaa25ea6952e9cc7265e Mon Sep 17 00:00:00 2001 From: qiancai Date: Fri, 10 Dec 2021 10:06:02 +0800 Subject: [PATCH 07/21] Update dm-overview.md --- dm/dm-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index 40cc1f2a8c9e..9fe3011a5bea 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -73,7 +73,7 @@ DM 支持对源数据的分库分表进行合并迁移,但有一些使用限 + DDL 语法兼容性限制 - - 目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 [TiDB DDL 语法支持](/reference/mysql-compatibility/#ddl)。 + - 目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 [TiDB DDL 语法支持](mysql-compatibility/#ddl)。 - DM 遇到不兼容的 DDL 语句时会报错。要解决此报错,需要使用 dmctl 手动处理,要么跳过该 DDL 语句,要么用指定的 DDL 语句来替换它。详见[如何处理不兼容的 DDL 语句](https://docs.pingcap.com/zh/tidb-data-migration/stable/faq#如何处理不兼容的-ddl-语句)。 From 24403e597b676ca03892ad2493b73b94c6abe409 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 10 Dec 2021 11:35:58 +0800 Subject: [PATCH 08/21] Apply suggestions from code review Co-authored-by: sunzy --- dm/dm-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index 5d03ead89836..4042c96cc8e8 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -5,7 +5,7 @@ summary: 了解 TiDB Data Migration # TiDB Data Migration -[TiDB Data Migration](https://github.com/pingcap/ticdc/tree/master/dm) (DM) 是一款便捷的数据迁移工具,支持从与 MySQL 协议兼容的数据库(MySQL、MariaDB、Aurora MySQL)到 TiDB 的全量数据迁移和增量数据同步。使用 DM 工具有利于简化错误处理流程,降低数据迁移运维成本。 +[TiDB Data Migration](https://github.com/pingcap/ticdc/tree/master/dm) (DM) 是一款便捷的数据迁移工具,支持从与 MySQL 协议兼容的数据库(MySQL、MariaDB、Aurora MySQL)到 TiDB 的全量数据迁移和增量数据同步。使用 DM 工具有利于简化数据迁移过程,降低数据迁移运维成本。 ## 版本说明 From a582d52fe0d28321f33bb0637290b1073b1b3e6c Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 10 Dec 2021 11:38:46 +0800 Subject: [PATCH 09/21] Update dm/dm-overview.md Co-authored-by: sunzy --- dm/dm-overview.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index 4042c96cc8e8..b3ce6f257746 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -13,9 +13,9 @@ DM 工具的稳定版本包括 v1.0、v2.0、v5.3。如无特殊需求,建议 DM 工具的文档目前独立于 TiDB 文档。要访问 DM 工具的文档,请点击以下链接: -- [DM v1.0 文档](https://docs.pingcap.com/zh/tidb-data-migration/v1.0/) -- [DM v2.0 文档](https://docs.pingcap.com/zh/tidb-data-migration/v2.0/) - [DM v5.3 文档](https://docs.pingcap.com/zh/tidb-data-migration/v5.3) +- [DM v2.0 文档](https://docs.pingcap.com/zh/tidb-data-migration/v2.0/) +- [DM v1.0 文档](https://docs.pingcap.com/zh/tidb-data-migration/v1.0/) > **注意:** > From 80f866bbbe3bddbe4c1ff0764fefda850f948a21 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 10 Dec 2021 11:39:05 +0800 Subject: [PATCH 10/21] Apply suggestions from code review Co-authored-by: sunzy --- dm/dm-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index b3ce6f257746..42960c00269f 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -20,7 +20,7 @@ DM 工具的文档目前独立于 TiDB 文档。要访问 DM 工具的文档, > **注意:** > > - DM 的 GitHub 代码仓库已于 2021 年 10 月迁移至 [pingcap/ticdc](https://github.com/pingcap/ticdc/tree/master/dm)。如有任何关于 DM 的问题,请在 `pingcap/ticdc` 仓库提交,以获得后续反馈。 -> - 在较早版本中(v1.0 和 v2.0),DM 采用独立于 TiDB 的版本号。从 DM v5.3 起,DM 采用与 TiDB 相同的版本号。DM v2.0 的下一个版本为 DM v5.3。DM v2.0 到 v5.3 无兼容性变更,升级过程与正常升级无差异,仅仅是版本号上的增加。 +> - 在较早版本中(v1.0 和 v2.0),DM 采用独立于 TiDB 的版本号。从 DM v5.3 起,DM 采用与 TiDB 相同的版本号。DM v2.0 的下一个版本为 DM v5.3。DM v2.0 到 v5.3 无兼容性变更,升级过程与正常升级无差异。 ## 基本功能 From 75996fe16fe3ad2ee2d5da492f81d16cdd7920dd Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 10 Dec 2021 11:41:30 +0800 Subject: [PATCH 11/21] Update tidb-in-kubernetes.md Co-authored-by: DanielZhangQD <36026334+DanielZhangQD@users.noreply.github.com> --- tidb-in-kubernetes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tidb-in-kubernetes.md b/tidb-in-kubernetes.md index 9d0b5158d0f2..2e8c2d4fb1db 100644 --- a/tidb-in-kubernetes.md +++ b/tidb-in-kubernetes.md @@ -11,6 +11,6 @@ summary: 了解如何在 Kubernetes 上部署 TiDB TiDB Operator 的文档目前独立于 TiDB 文档。要查看如何使用 TiDB Operator 在 Kubernetes 上部署 TiDB 的详细步骤,请参阅对应版本的 TiDB Operator 文档: -- [TiDB Operator v1.0 文档](https://docs.pingcap.com/zh/tidb-data-migration/v1.0/) -- [TiDB Operator v1.1 文档](https://docs.pingcap.com/zh/tidb-data-migration/v2.0/) -- [TiDB Operator v1.2 文档](https://docs.pingcap.com/zh/tidb-data-migration/stable) \ No newline at end of file +- [TiDB Operator v1.2 文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.2) +- [TiDB Operator v1.1 文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/) +- [TiDB Operator v1.0 文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.0/) \ No newline at end of file From ed6d1882e817f9e681dd2500b4165d213168970a Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 10 Dec 2021 11:42:08 +0800 Subject: [PATCH 12/21] Update tidb-in-kubernetes.md --- tidb-in-kubernetes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tidb-in-kubernetes.md b/tidb-in-kubernetes.md index 2e8c2d4fb1db..403d3209d3f7 100644 --- a/tidb-in-kubernetes.md +++ b/tidb-in-kubernetes.md @@ -7,7 +7,7 @@ summary: 了解如何在 Kubernetes 上部署 TiDB 你可以使用 [TiDB Operator](https://github.com/pingcap/tidb-operator) 在 Kubernetes 上部署 TiDB。TiDB Operator 是 Kubernetes 上的 TiDB 集群自动运维系统,提供包括部署、升级、扩缩容、备份恢复、配置变更的 TiDB 全生命周期管理。借助 TiDB Operator,TiDB 可以无缝运行在公有云或私有部署的 Kubernetes 集群上。 -对于当前 TiDB 版本,TiDB Operator 工具的适用版本包括 v1.0、v1.1、v1.2。如无特殊需求,建议使用 TiDB Operator 的最新稳定版本 v1.2。 +对于当前 TiDB 版本,TiDB Operator 工具的适用版本包括 v1.2、v1.1、v1.0。如无特殊需求,建议使用 TiDB Operator 的最新稳定版本 v1.2。 TiDB Operator 的文档目前独立于 TiDB 文档。要查看如何使用 TiDB Operator 在 Kubernetes 上部署 TiDB 的详细步骤,请参阅对应版本的 TiDB Operator 文档: From cbcedf6c427145ff29002cb0214f2c19ac31d18e Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 10 Dec 2021 13:54:21 +0800 Subject: [PATCH 13/21] Apply suggestions from code review --- dm/dm-overview.md | 2 +- tidb-in-kubernetes.md | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index 42960c00269f..849b183a500a 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -9,7 +9,7 @@ summary: 了解 TiDB Data Migration ## 版本说明 -DM 工具的稳定版本包括 v1.0、v2.0、v5.3。如无特殊需求,建议使用 DM 的最新稳定版本 v5.3。 +DM 工具的稳定版本包括 v5.3、v2.0、v1.0。其中,v1.0 为较旧的版本,不推荐使用。 建议使用 DM 的最新稳定版本 v5.3。 DM 工具的文档目前独立于 TiDB 文档。要访问 DM 工具的文档,请点击以下链接: diff --git a/tidb-in-kubernetes.md b/tidb-in-kubernetes.md index 403d3209d3f7..68ef3bc9881c 100644 --- a/tidb-in-kubernetes.md +++ b/tidb-in-kubernetes.md @@ -9,8 +9,4 @@ summary: 了解如何在 Kubernetes 上部署 TiDB 对于当前 TiDB 版本,TiDB Operator 工具的适用版本包括 v1.2、v1.1、v1.0。如无特殊需求,建议使用 TiDB Operator 的最新稳定版本 v1.2。 -TiDB Operator 的文档目前独立于 TiDB 文档。要查看如何使用 TiDB Operator 在 Kubernetes 上部署 TiDB 的详细步骤,请参阅对应版本的 TiDB Operator 文档: - -- [TiDB Operator v1.2 文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.2) -- [TiDB Operator v1.1 文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/) -- [TiDB Operator v1.0 文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.0/) \ No newline at end of file +TiDB Operator 的文档目前独立于 TiDB 文档。要查看如何使用 TiDB Operator 在 Kubernetes 上部署 TiDB 的详细步骤,请参阅 [TiDB Operator 文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.2)。 \ No newline at end of file From a3ec7b983857cbc1b1e36d5eeaa8132752ec36cd Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 10 Dec 2021 13:54:42 +0800 Subject: [PATCH 14/21] Apply suggestions from code review Co-authored-by: sunzy --- dm/dm-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index 849b183a500a..fd2bee15a521 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -69,7 +69,7 @@ DM 支持对源数据的分库分表进行合并迁移,但有一些使用限 > **警告:** > - > 支持从 MySQL v8.0 迁移数据是 DM v2.0 的实验特性,不建议在生产环境下使用。 + > 支持从 MySQL v8.0 迁移数据是 DM 的实验特性,不建议在生产环境下使用。 + DDL 语法兼容性限制 From 2f46921a84be9af48a8369af21e6583efa836886 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 10 Dec 2021 13:55:36 +0800 Subject: [PATCH 15/21] Update tidb-in-kubernetes.md --- tidb-in-kubernetes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tidb-in-kubernetes.md b/tidb-in-kubernetes.md index 68ef3bc9881c..990b67394390 100644 --- a/tidb-in-kubernetes.md +++ b/tidb-in-kubernetes.md @@ -7,6 +7,6 @@ summary: 了解如何在 Kubernetes 上部署 TiDB 你可以使用 [TiDB Operator](https://github.com/pingcap/tidb-operator) 在 Kubernetes 上部署 TiDB。TiDB Operator 是 Kubernetes 上的 TiDB 集群自动运维系统,提供包括部署、升级、扩缩容、备份恢复、配置变更的 TiDB 全生命周期管理。借助 TiDB Operator,TiDB 可以无缝运行在公有云或私有部署的 Kubernetes 集群上。 -对于当前 TiDB 版本,TiDB Operator 工具的适用版本包括 v1.2、v1.1、v1.0。如无特殊需求,建议使用 TiDB Operator 的最新稳定版本 v1.2。 +对于当前 TiDB 版本,TiDB Operator 工具的适用版本为 v1.2。 TiDB Operator 的文档目前独立于 TiDB 文档。要查看如何使用 TiDB Operator 在 Kubernetes 上部署 TiDB 的详细步骤,请参阅 [TiDB Operator 文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.2)。 \ No newline at end of file From edeec4398fd535c837de4f2bca1cd27f2aab677f Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 10 Dec 2021 13:57:50 +0800 Subject: [PATCH 16/21] Update dm/dm-overview.md --- dm/dm-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index fd2bee15a521..97b5dbdbe4a5 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -69,7 +69,7 @@ DM 支持对源数据的分库分表进行合并迁移,但有一些使用限 > **警告:** > - > 支持从 MySQL v8.0 迁移数据是 DM 的实验特性,不建议在生产环境下使用。 + > 使用 DM 从 MySQL v8.0 迁移数据到 TiDB 目前为实验特性(从 DM v2.0 引入),不建议在生产环境下使用。 + DDL 语法兼容性限制 From 4d34570e44d82b2749018095aee50d2ca9f59d9c Mon Sep 17 00:00:00 2001 From: qiancai Date: Fri, 10 Dec 2021 14:00:41 +0800 Subject: [PATCH 17/21] remove_extra_space --- dm/dm-overview.md | 2 +- tidb-in-kubernetes.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index 97b5dbdbe4a5..6946a14f6a37 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -9,7 +9,7 @@ summary: 了解 TiDB Data Migration ## 版本说明 -DM 工具的稳定版本包括 v5.3、v2.0、v1.0。其中,v1.0 为较旧的版本,不推荐使用。 建议使用 DM 的最新稳定版本 v5.3。 +DM 工具的稳定版本包括 v5.3、v2.0、v1.0。其中,v1.0 为较旧的版本,不推荐使用。建议使用 DM 的最新稳定版本 v5.3。 DM 工具的文档目前独立于 TiDB 文档。要访问 DM 工具的文档,请点击以下链接: diff --git a/tidb-in-kubernetes.md b/tidb-in-kubernetes.md index 990b67394390..3c25be4c332e 100644 --- a/tidb-in-kubernetes.md +++ b/tidb-in-kubernetes.md @@ -7,6 +7,6 @@ summary: 了解如何在 Kubernetes 上部署 TiDB 你可以使用 [TiDB Operator](https://github.com/pingcap/tidb-operator) 在 Kubernetes 上部署 TiDB。TiDB Operator 是 Kubernetes 上的 TiDB 集群自动运维系统,提供包括部署、升级、扩缩容、备份恢复、配置变更的 TiDB 全生命周期管理。借助 TiDB Operator,TiDB 可以无缝运行在公有云或私有部署的 Kubernetes 集群上。 -对于当前 TiDB 版本,TiDB Operator 工具的适用版本为 v1.2。 +对于当前 TiDB 版本,TiDB Operator 的适用版本为 v1.2。 TiDB Operator 的文档目前独立于 TiDB 文档。要查看如何使用 TiDB Operator 在 Kubernetes 上部署 TiDB 的详细步骤,请参阅 [TiDB Operator 文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.2)。 \ No newline at end of file From f412b1df9d5d7ef12619001e5a27a753c5d4bc46 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 10 Dec 2021 19:22:45 +0800 Subject: [PATCH 18/21] Apply suggestions from code review Co-authored-by: Lilian Lee --- tidb-in-kubernetes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tidb-in-kubernetes.md b/tidb-in-kubernetes.md index 3c25be4c332e..4cf8bd783683 100644 --- a/tidb-in-kubernetes.md +++ b/tidb-in-kubernetes.md @@ -9,4 +9,4 @@ summary: 了解如何在 Kubernetes 上部署 TiDB 对于当前 TiDB 版本,TiDB Operator 的适用版本为 v1.2。 -TiDB Operator 的文档目前独立于 TiDB 文档。要查看如何使用 TiDB Operator 在 Kubernetes 上部署 TiDB 的详细步骤,请参阅 [TiDB Operator 文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.2)。 \ No newline at end of file +TiDB Operator 的文档目前独立于 TiDB 文档。要查看如何使用 TiDB Operator 在 Kubernetes 上部署 TiDB 的详细步骤,请参阅 [TiDB in Kubernetes 用户文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.2)。 \ No newline at end of file From e4aa9b29525bf69aaf604a9f9084d2b792d30792 Mon Sep 17 00:00:00 2001 From: qiancai Date: Mon, 13 Dec 2021 10:47:01 +0800 Subject: [PATCH 19/21] Update dm-overview.md --- dm/dm-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index 6946a14f6a37..d631541632c7 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -73,7 +73,7 @@ DM 支持对源数据的分库分表进行合并迁移,但有一些使用限 + DDL 语法兼容性限制 - - 目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 [TiDB DDL 语法支持](mysql-compatibility/#ddl)。 + - 目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 [TiDB DDL 语法支持](/mysql-compatibility/#ddl)。 - DM 遇到不兼容的 DDL 语句时会报错。要解决此报错,需要使用 dmctl 手动处理,要么跳过该 DDL 语句,要么用指定的 DDL 语句来替换它。详见[如何处理不兼容的 DDL 语句](https://docs.pingcap.com/zh/tidb-data-migration/stable/faq#如何处理不兼容的-ddl-语句)。 From 446f6919328e37f07d050b9a6c9329137a2c6200 Mon Sep 17 00:00:00 2001 From: qiancai Date: Mon, 13 Dec 2021 11:20:47 +0800 Subject: [PATCH 20/21] Update dm-overview.md --- dm/dm-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index d631541632c7..77570a6d52e1 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -73,7 +73,7 @@ DM 支持对源数据的分库分表进行合并迁移,但有一些使用限 + DDL 语法兼容性限制 - - 目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 [TiDB DDL 语法支持](/mysql-compatibility/#ddl)。 + - 目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 [TiDB DDL 语法支持](/mysql-compatibility.md#ddl)。 - DM 遇到不兼容的 DDL 语句时会报错。要解决此报错,需要使用 dmctl 手动处理,要么跳过该 DDL 语句,要么用指定的 DDL 语句来替换它。详见[如何处理不兼容的 DDL 语句](https://docs.pingcap.com/zh/tidb-data-migration/stable/faq#如何处理不兼容的-ddl-语句)。 From ec5e5a0f6628d1a9b7f9f24ec03e9b575e499023 Mon Sep 17 00:00:00 2001 From: qiancai Date: Mon, 13 Dec 2021 18:42:25 +0800 Subject: [PATCH 21/21] Update dm-overview.md --- dm/dm-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dm/dm-overview.md b/dm/dm-overview.md index 77570a6d52e1..229ee6655f50 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -73,7 +73,7 @@ DM 支持对源数据的分库分表进行合并迁移,但有一些使用限 + DDL 语法兼容性限制 - - 目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 [TiDB DDL 语法支持](/mysql-compatibility.md#ddl)。 + - 目前,TiDB 部分兼容 MySQL 支持的 DDL 语句。因为 DM 使用 TiDB parser 来解析处理 DDL 语句,所以目前仅支持 TiDB parser 支持的 DDL 语法。详见 [TiDB DDL 语法支持](/mysql-compatibility.md#ddl-的限制)。 - DM 遇到不兼容的 DDL 语句时会报错。要解决此报错,需要使用 dmctl 手动处理,要么跳过该 DDL 语句,要么用指定的 DDL 语句来替换它。详见[如何处理不兼容的 DDL 语句](https://docs.pingcap.com/zh/tidb-data-migration/stable/faq#如何处理不兼容的-ddl-语句)。