|
| 1 | +--- |
| 2 | +title: Migrate Data from Vitess to TiDB |
| 3 | +summary: Learn about the tools to migrate data from Vitess to TiDB. |
| 4 | +--- |
| 5 | + |
| 6 | +# Migrate Data from Vitess to TiDB |
| 7 | + |
| 8 | +This document describes the tools that you can use to migrate data from [Vitess](https://vitess.io/) to TiDB. |
| 9 | + |
| 10 | +Because the backend of Vitess is based on MySQL, when migrating data from Vitess to TiDB, you can use the same migration tools that apply to MySQL, such as [Dumpling](/dumpling-overview.md), [TiDB Lightning](/tidb-lightning/tidb-lightning-overview.md), and [TiDB Data Migration (DM)](/dm/dm-overview.md). Note that these tools should be set up for each shard in Vitess for data migration. |
| 11 | + |
| 12 | +Generally, before data migration, it is recommended to configure the DM task to set `task-mode` to `all` and `import-mode` to `physical`. For more information, see [Task configuration file template (advanced)](/dm/task-configuration-file-full.md#task-configuration-file-template-advanced). |
| 13 | + |
| 14 | +If your data size exceeds 10 TiB, it is recommended to do the import in two steps: |
| 15 | + |
| 16 | +1. Use Dumpling and TiDB Lightning to import existing data. |
| 17 | +2. Use DM to import incremental data. |
| 18 | + |
| 19 | +In addition to these tools, you can also use [Debezium connector for Vitess](https://debezium.io/documentation/reference/connectors/vitess.html). This connector enables you to use [Kafka Connect](https://kafka.apache.org/documentation/#connect) or [Apache Flink](https://nightlies.apache.org/flink/flink-docs-stable/) to stream changes from Vitess to TiDB. |
| 20 | + |
| 21 | +Because both Vitess and TiDB support the MySQL protocol and SQL dialect, changes at the application level are expected to be small. For tasks directly managing sharding or other implementation-specific aspects, however, the changes might be larger. To facilitate the data migration from Vitess to TiDB, TiDB introduces the [`VITESS_HASH()`](/functions-and-operators/tidb-functions.md) function, which returns the hash of a string that is compatible with Vitess' HASH function. |
| 22 | + |
| 23 | +## Examples |
| 24 | + |
| 25 | +### Dumpling and TiDB Lightning |
| 26 | + |
| 27 | +The following two examples show how Dumpling and TiDB Lightning work together to migrate data from Vitess to TiDB. |
| 28 | + |
| 29 | +- In this example, TiDB Lightning uses the [logical import mode](/tidb-lightning/tidb-lightning-logical-import-mode.md), which first encodes data into SQL statements and then runs the SQL statements to import data. |
| 30 | + |
| 31 | +  |
| 32 | + |
| 33 | +- In this example, TiDB Lightning uses the [physical import mode](/tidb-lightning/tidb-lightning-physical-import-mode.md) to directly ingest data into TiKV. |
| 34 | + |
| 35 | +  |
| 36 | + |
| 37 | +### DM |
| 38 | + |
| 39 | +The following example shows how [DM](/dm/dm-overview.md) migrates data from Vitess to TiDB. |
| 40 | + |
| 41 | + |
0 commit comments