Skip to content

Commit

Permalink
dm: fix quick-start (pingcap#8969)
Browse files Browse the repository at this point in the history
  • Loading branch information
ran-huang authored Apr 19, 2022
1 parent dc727e4 commit 22e8c1d
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 67 deletions.
16 changes: 8 additions & 8 deletions dm/dm-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ aliases: ['/docs-cn/tidb-data-migration/dev/overview/','/docs-cn/tools/dm/overvi

## 产品特性

- **与 TiDB 同样保持 MySQL 兼容性。** 高度兼容 MySQL 5.7 协议、MySQL 5.7 常用的功能及语法。
- **支持 DML & DDL 事件同步。** 支持解析和同步 binlog 中的 DML 和 DDL 事件。
- **支持合库合表同步模式。** 可以方便的将上游各个分片 MySQL 实例的各个分表数据,合并同步到下游 TiDB 的一张表。支持自定义编写同步规则以方便各种可能的同步需求,且具备自动识别和处理上游分片 MySQL 的 DDL 变更,大幅简化运维成本。
- **内置多种过滤器以灵活适应不同场景。** 支持以预定义事件类型正则表达式SQL 表达式多种方式在数据同步过程中对 MySQL binlog 事件进行过滤。
- **集中管理。** DM 支持上千个节点的集群规模,可同时运行并集中管理大量数据迁移同步任务。
- **对第三方 Online Schema Change 工具变更过程的同步优化。** 在 MySQL 生态中,gh-ost 与 pt-osc 等工具被广泛使用,DM 对其变更过程进行了特殊的优化,以避免对不必要的中间数据进行迁移。详细信息可参考 [online-ddl](/dm/dm-key-features.md#online-ddl-工具支持)
- **高可用。** 支持迁移任务在不同节点自由调度,少量工作节点宕机并不会影响进行中的任务。
- **与 TiDB 同样保持 MySQL 兼容性。**高度兼容 MySQL 5.7 协议、MySQL 5.7 常用的功能及语法。
- **支持 DML & DDL 事件同步。**支持解析和同步 binlog 中的 DML 和 DDL 事件。
- **支持合库合表同步模式。**可以方便的将上游各个分片 MySQL 实例的各个分表数据,合并同步到下游 TiDB 的一张表。支持自定义编写同步规则以方便各种可能的同步需求,且具备自动识别和处理上游分片 MySQL 的 DDL 变更,大幅简化运维成本。
- **内置多种过滤器以灵活适应不同场景。**支持以预定义事件类型正则表达式SQL 表达式等多种方式在数据同步过程中对 MySQL binlog 事件进行过滤。
- **集中管理。**DM 支持上千个节点的集群规模,可同时运行并集中管理大量数据迁移同步任务。
- **对第三方 Online Schema Change 工具变更过程的同步优化。**在 MySQL 生态中,gh-ost 与 pt-osc 等工具被广泛使用,DM 对其变更过程进行了特殊的优化,以避免对不必要的中间数据进行迁移。详细信息可参考 [online-ddl](/dm/dm-key-features.md#online-ddl-工具支持)
- **高可用。**支持迁移任务在不同节点自由调度,少量工作节点宕机并不会影响进行中的任务。

## 快速安装

{{< copyable "shell-regular" >}}
Expand Down
126 changes: 67 additions & 59 deletions dm/quick-start-with-dm.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ aliases: ['/docs-cn/tidb-data-migration/dev/quick-start-with-dm/','/docs-cn/tidb

本文介绍如何快速体验使用数据迁移工具 [TiDB Data Migration](https://github.com/pingcap/dm) (DM) 从 MySQL 迁移数据到 TiDB。此文档用于快速体验 DM 产品功能特性,并不建议适合在生产环境中使用。

## 部署 DM 集群
## 第 1 步:部署 DM 集群

1. 安装 TiUP 工具并通过 TiUP 快速 部署 DM 最小集群
1. 安装 TiUP 工具并通过 TiUP 快速部署 [dmctl](/dm/dmctl-introduction.md)

{{< copyable "shell-regular" >}}

Expand All @@ -27,90 +27,98 @@ aliases: ['/docs-cn/tidb-data-migration/dev/quick-start-with-dm/','/docs-cn/tidb
tiup dm template
```

3. 复制输出的配置信息,修改 IP 地址后保存为`topology.yaml`文件,使用`tiup`命令部署
3. 复制输出的配置信息,修改 IP 地址后保存为 `topology.yaml` 文件,使用 TiUP 部署 DM 集群

{{< copyable "shell-regular" >}}

```shell
tiup dm deploy dm-test 5.4.0 topology.yaml -p
tiup dm deploy dm-test 6.0.0 topology.yaml -p
```

## 准备数据源
## 第 2 步:准备数据源

可以使用一个或多个 MySQL 实例作为上游数据源。为每一个数据源编写如下配置文件:
你可以使用一个或多个 MySQL 实例作为上游数据源。

{{< copyable "shell-regular" >}}
1. 为每一个数据源编写如下配置文件:

```yaml
source-id: "mysql-01"
{{< copyable "shell-regular" >}}

from:
host: "127.0.0.1"
user: "root"
password: "fCxfQ9XKCezSzuCD0Wf5dUD+LsKegSg=" # 使用 tiup dmctl --encrypt "123456" 加密。
port: 3306
```
```yaml
source-id: "mysql-01"
{{< copyable "shell-regular" >}}
from:
host: "127.0.0.1"
user: "root"
password: "fCxfQ9XKCezSzuCD0Wf5dUD+LsKegSg=" # 使用 tiup dmctl --encrypt "123456" 加密。
port: 3306
```

使用如下命令将该 source 增加至 DM 集群
2. 使用如下命令将数据源增加至 DM 集群。其中,`mysql-01.yaml` 是上一步编写的配置文件。

```bash
tiup dmctl --master-addr=127.0.0.1:8261 operate-source create mysql-01.yaml # --master-addr 填写 master_servers 其中之一。
```
{{< copyable "shell-regular" >}}

若环境中并不存在可供测试的 MySQL 实例,可以使用以下方式通过 Docker 快速创建。
```bash
tiup dmctl --master-addr=127.0.0.1:8261 operate-source create mysql-01.yaml # --master-addr 填写 master_servers 其中之一。
```

{{< copyable "shell-regular" >}}
若环境中并不存在可供测试的 MySQL 实例,可以使用以下方式通过 Docker 快速创建一个测试实例。步骤如下:

```shell
mkdir -p /tmp/mysqltest && cd /tmp/mysqltest
cat > my.cnf <<EOF
[mysqld]
bind-address = 0.0.0.0
character-set-server=utf8
collation-server=utf8_bin
default-storage-engine=INNODB
transaction-isolation=READ-COMMITTED
server-id = 100
binlog_format = row
log_bin = /var/lib/mysql/mysql-bin.log
show_compatibility_56 = ON
EOF
```
1. 编写 MySQL 配置文件:

{{< copyable "shell-regular" >}}
{{< copyable "shell-regular" >}}

```shell
docker run --name mysql-01 -v /tmp/mysqltest:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 3306:3306 mysql:5.7
```
```shell
mkdir -p /tmp/mysqltest && cd /tmp/mysqltest
cat > my.cnf <<EOF
[mysqld]
bind-address = 0.0.0.0
character-set-server=utf8
collation-server=utf8_bin
default-storage-engine=INNODB
transaction-isolation=READ-COMMITTED
server-id = 100
binlog_format = row
log_bin = /var/lib/mysql/mysql-bin.log
show_compatibility_56 = ON
EOF
```
稍等 1 分钟待 MySQL 启动后,即可连接该实例。
2. 使用 Docker 启动 MySQL 实例:
> **注意:**
>
> - 该命令仅适用于体验数据迁移过程,不能用于生产环境和压力测试。
{{< copyable "shell-regular" >}}
{{< copyable "shell-regular" >}}
```shell
docker run --name mysql-01 -v /tmp/mysqltest:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 3306:3306 mysql:5.7
```
```shell
mysql -uroot -p -h 127.0.0.1 -P 3306
```
3. 待 MySQL 启动后,即可连接该实例。
> **注意:**
>
> 该命令仅适用于体验数据迁移过程,不能用于生产环境和压力测试。
## 准备下游数据库
{{< copyable "shell-regular" >}}
可以选择已存在的 TiDB 集群作为数据同步目标,如果没有可以用于测试的 TiDB 集群,则使用以下命令快速构建演示环境。
```shell
mysql -uroot -p -h 127.0.0.1 -P 3306
```
## 第 3 步:准备下游数据库
可以选择已存在的 TiDB 集群作为数据同步目标。
如果没有可以用于测试的 TiDB 集群,则使用以下命令快速构建演示环境。
{{< copyable "shell-regular" >}}
```shell
tiup playground
```
## 准备测试数据
## 第 4 步:准备测试数据
在一个或多个数据源中创建测试表和数据,若使用已存在的 MySQL 数据库亦可跳过
在一个或多个数据源中创建测试表和数据。如果你使用已存在的 MySQL 数据库,且数据库中已有可用数据,可跳过这一步
{{< copyable "sql" >}}
Expand All @@ -124,7 +132,7 @@ insert into t1 (id, uid, name) values (1, 10001, 'Gabriel García Márquez'), (2
insert into t2 (id, uid, name) values (3, 20001, 'José Arcadio Buendía'), (4, 20002, 'Úrsula Iguarán'), (5, 20003, 'José Arcadio');
```
## 编写数据同步任务
## 第 5 步:编写数据同步任务
1. 创建任务的配置文件 `testdm-task.yaml`
Expand Down Expand Up @@ -158,14 +166,14 @@ insert into t2 (id, uid, name) values (3, 20001, 'José Arcadio Buendía'), (4,
tiup dmctl --master-addr 127.0.0.1:8261 start-task testdm-task.yaml
```
这样就成功创建了一个将`mysql-01`数据源迁移到 TiDB 的任务。
这样就成功创建了一个将 `mysql-01` 数据源迁移到 TiDB 的任务。
## 查看迁移任务状态
## 第 6 步:查看迁移任务状态
在创建迁移任务之后,可以用 `dmtcl query-status` 来查看任务的状态。
在创建迁移任务之后,可以用 `dmctl query-status` 来查看任务的状态。
{{< copyable "shell-regular" >}}
```bash
tiup dmctl --master-addr 127.0.0.1:8261 query-status testdm
```
```

0 comments on commit 22e8c1d

Please sign in to comment.