Skip to content

Commit

Permalink
tools: refine config file for DM (#1961)
Browse files Browse the repository at this point in the history
  • Loading branch information
WangXiangUSTC authored Oct 30, 2019
1 parent e62f6a9 commit b129fa5
Show file tree
Hide file tree
Showing 30 changed files with 1,400 additions and 527 deletions.
2 changes: 2 additions & 0 deletions dev/TOC.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@
+ [部署使用](/dev/reference/tools/data-migration/deploy.md)
+ 配置
- [概述](/dev/reference/tools/data-migration/configure/overview.md)
- [DM-master 配置](/dev/reference/tools/data-migration/configure/dm-master-configuration-file.md)
- [DM-worker 配置](/dev/reference/tools/data-migration/configure/dm-worker-configuration-file.md)
- [任务配置](/dev/reference/tools/data-migration/configure/task-configuration-file.md)
- [监控 DM 集群](/dev/reference/tools/data-migration/monitor.md)
- [管理数据同步任务](/dev/reference/tools/data-migration/manage-tasks.md)
Expand Down
12 changes: 6 additions & 6 deletions dev/how-to/deploy/data-migration-with-ansible.md
Original file line number Diff line number Diff line change
Expand Up @@ -344,15 +344,15 @@ grafana_admin_password = "admin"
| 变量名称 | 描述 |
| ------------- | -------
| source_id | DM-worker 绑定到的一个数据库实例或是具有主从架构的复制组。当发生主从切换的时候,只需要更新 `mysql_host` 或 `mysql_port` 而不用更改该 ID 标识。 |
| server_id | DM-worker 伪装成一个 MySQL slave,该变量即为这个 slave 的 server ID,在 MySQL 集群中需保持全局唯一。取值范围 0 ~ 4294967295。|
| mysql_host | 上游 MySQL 主机 |
| server_id | DM-worker 伪装成一个 MySQL slave,该变量即为这个 slave 的 server ID,在 MySQL 集群中需保持全局唯一。取值范围 0 ~ 4294967295。v1.0.2 及以上版本的 DM 会自动生成,不需要手动配置。 |
| mysql_host | 上游 MySQL 主机 |
| mysql_user | 上游 MySQL 用户名,默认值为 “root”。|
| mysql_password | 上游 MySQL 用户密码,需使用 `dmctl` 工具加密。请参考[使用 dmctl 加密上游 MySQL 用户密码](#使用-dmctl-加密上游-mysql-用户密码)。 |
| mysql_port | 上游 MySQL 端口, 默认 3306。 |
| enable_gtid | DM-worker 是否使用全局事务标识符(GTID)拉取 binlog。使用前提是在上游 MySQL 已开启 GTID 模式。 |
| relay_binlog_name | DM-worker 是否从指定 binlog 文件位置开始拉取 binlog。仅适用于本地无有效 relay log 的情况。|
| relay_binlog_gtid | DM-worker 是否从指定 GTID 位置开始拉取 binlog。仅适用于本地无有效 relay log,且 `enable_gtid` 设置为 true 的情况。 |
| flavor | 代表 MySQL 的版本发布类型。 如果是官方版本,Percona 版,或 Cloud MySQL 版,其值为 “mysql”。 如果是 MariaDB,其值为 "mariadb"。默认值是 "mysql"。 |
| relay_binlog_name | DM-worker 是否从指定 binlog 文件位置开始拉取 binlog。仅适用于本地无有效 relay log 的情况。v1.0.2 及以上版本的 DM 会默认从最新位置开始拉取 binlog,一般情况下不需要手动配置。|
| relay_binlog_gtid | DM-worker 是否从指定 GTID 位置开始拉取 binlog。仅适用于本地无有效 relay log,且 `enable_gtid` 设置为 true 的情况。v1.0.2 及以上版本的 DM 会默认从最新位置开始拉取 binlog,一般情况下不需要手动配置。 |
| flavor | 代表 MySQL 的版本发布类型。 如果是官方版本,Percona 版,或 Cloud MySQL 版,其值为 “mysql”。 如果是 MariaDB,其值为 "mariadb"。默认值是 "mysql"。v1.0.2 及以上版本的 DM 会自动判断上游版本,不需要手动配置。 |
关于 `deploy_dir` 配置的更多信息,请参考[配置部署目录](#配置部署目录)。
Expand Down Expand Up @@ -406,7 +406,7 @@ dm-worker2 ansible_host=172.16.10.73 source_id="mysql-replica-02" server_id=102
> **注意:**
>
> 如未设定 `relay_binlog_name`,DM-worker 将从上游 MySQL 或 MariaDB 现有最早时间点的 binlog 文件开始拉取 binlog拉取到数据同步任务需要的最新 binlog 可能需要很长时间。
> 如未设定 `relay_binlog_name`,v1.0.2 之前版本的 DM-worker 将从上游 MySQL 或 MariaDB 现有最早时间点的 binlog 文件开始拉取 binlog拉取到数据同步任务需要的最新 binlog 可能需要很长时间;v1.0.2 及之后版本的 DM-worker 将从最新时间点的 binlog 文件开始拉取 binlog,一般情况下不需要手动配置
### 开启 relay log GTID 同步模式
Expand Down
69 changes: 10 additions & 59 deletions dev/how-to/deploy/data-migration-with-binary.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,44 +107,22 @@ worker-addr = ":8262"

# 作为 MySQL slave 的 server ID,用于获取 MySQL 的 binlog
# 在一个 replication group 中,每个实例(master 和 slave)都应该有唯一的 server ID
# v1.0.2 及以上版本的 DM 会自动生成,不需要手动配置
server-id = 101

# 用于标识一个 replication group 或者 MySQL/MariaDB 实例
source-id = "mysql-replica-01"

# 上游实例类型,值可为 "mysql" 或者 "mariadb"
# v1.0.2 及以上版本的 DM 会自动识别上游实例类型,不需要手动配置
flavor = "mysql"

# 存储 relay log 的路径
relay-dir = "./relay_log"

# 存储 DM-worker 元信息的路径
meta-dir = "dm_worker_meta"

# relay log 处理单元是否开启 gtid
enable-gtid = false

# 连接 MySQL/Mariadb 的 DSN 中的 charset 配置
# charset= ""

# MySQL 的连接地址
[from]
host = "192.168.0.1"
user = "root"
password = "fCxfQ9XKCezSzuCD0Wf5dUD+LsKegSg="
port = 3306

# relay log 的删除规则
# [purge]
# interval = 3600
# expires = 24
# remain-space = 15

# 任务状态检查相关配置
# [checker]
# check-enable = true
# backoff-rollback = 5m
# backoff-max = 5m
```

在终端中使用下面的命令运行 DM-worker:
Expand All @@ -155,7 +133,7 @@ port = 3306
bin/dm-worker -config conf/dm-worker1.toml
```

对于 DM-worker2,修改配置文件中的 `source-id``mysql-replica-02`,并将 `from` 配置部分修改为 MySQL2 的地址即可。
对于 DM-worker2,修改配置文件中的 `source-id``mysql-replica-02`,并将 `from` 配置部分修改为 MySQL2 的地址即可。如果因为没有多余的机器,将 DM-worker2 与 DM-worker1 部署在一台机器上,需要把两个 DM-worker 实例部署在不同的路径下,否则保存元信息和 relay log 的默认路径会冲突。

### DM-master 的部署

Expand Down Expand Up @@ -197,18 +175,14 @@ DM-master 的配置文件:
```toml
# Master Configuration.

# RPC 相关配置
rpc-rate-limit = 10.0
rpc-rate-burst = 40

# 日志配置
log-level = "info"
log-file = "dm-master.log"

# DM-master 监听地址
master-addr = ":8261"

# replication group <-> DM-Worker 的配置
# DM-Worker 的配置
[[deploy]]
# 对应 DM-worker1 配置文件中的 source-id
source-id = "mysql-replica-01"
Expand Down Expand Up @@ -245,10 +219,6 @@ bin/dm-master -config conf/dm-master.toml
name: test
task-mode: all
is-sharding: true
meta-schema: "dm_meta"
remove-meta: false
enable-heartbeat: true
timezone: "Asia/Shanghai"

target-database:
host: "192.168.0.3"
Expand All @@ -260,16 +230,16 @@ mysql-instances:
- source-id: "mysql-replica-01"
black-white-list: "instance"
route-rules: ["sharding-route-rules-table", "sharding-route-rules-schema"]
mydumper-config-name: "global"
loader-config-name: "global"
syncer-config-name: "global"
mydumper-thread: 4 # mydumper 用于导出数据的线程数量,在 v1.0.2 版本引入
loader-thread: 16 # loader 用于导入数据的线程数量,在 v1.0.2 版本引入
syncer-thread: 16 # syncer 用于同步增量数据的线程数量,在 v1.0.2 版本引入

- source-id: "mysql-replica-02"
black-white-list: "instance"
route-rules: ["sharding-route-rules-table", "sharding-route-rules-schema"]
mydumper-config-name: "global"
loader-config-name: "global"
syncer-config-name: "global"
mydumper-thread: 4 # mydumper 用于导出数据的线程数量,在 v1.0.2 版本引入
loader-thread: 16 # loader 用于导入数据的线程数量,在 v1.0.2 版本引入
syncer-thread: 16 # syncer 用于同步增量数据的线程数量,在 v1.0.2 版本引入

black-white-list:
instance:
Expand All @@ -288,25 +258,6 @@ routes:
sharding-route-rules-schema:
schema-pattern: sharding*
target-schema: db_target

mydumpers:
global:
mydumper-path: "./bin/mydumper"
threads: 4
chunk-filesize: 64
skip-tz-utc: true
extra-args: "--regex '^sharding.*'"

loaders:
global:
pool-size: 16
dir: "./dumped_data"

syncers:
global:
worker-count: 16
batch: 100

```
将以上配置内容写入到 `conf/task.yaml` 文件中,使用 dmctl 创建任务:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
title: DM-master 配置文件介绍
category: reference
---

# DM-master 配置文件介绍

本文介绍 DM-master 的配置文件,包括配置文件示例与配置项说明。

## 配置文件示例

DM-master 的示例配置文件如下所示:

```toml
# log configuration
log-file = "dm-master.log"

# DM-master listening address
master-addr = ":8261"

# DM-worker deployment. It will be refined when the new deployment function is available.
[[deploy]]
source-id = "mysql-replica-01"
dm-worker = "172.16.10.72:8262"

[[deploy]]
source-id = "mysql-replica-02"
dm-worker = "172.16.10.73:8262"
```

## 配置项说明

### Global 配置

| 配置项 | 说明 |
| :------------ | :--------------------------------------- |
| `log-file` | 日志文件,如果不配置,日志会输出到标准输出中。 |
| `master-addr` | DM-master 服务的地址,可以省略 IP 信息,例如:":8261"。 |

### DM-Worker 的配置

配置在 `deploy` 中,每一个 DM-worker 都需要设置一个 `deploy`

| 配置项 | 说明 |
| :------------ | :--------------------------------------- |
| `source-id` | 一个 replication group 或者 MySQL/MariaDB 实例的标识,需要和 DM-worker 中的 `source-id` 一致。 |
| `dm-worker` | DM-worker 的服务地址。 |
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
title: DM-worker 完整配置说明
category: reference
---

# DM-worker 完整配置说明

本文完整地介绍 DM-worker 的配置,包括配置文件示例与配置项说明。

## 配置文件示例

```toml
# Worker Configuration.

# Log configuration.
log-level = "info"
log-file = "dm-worker.log"

# DM-worker listening address.
worker-addr = ":8262"

# Represents a MySQL/MariaDB instance or a replication group.
source-id = "mysql-replica-01"

# Server id of slave for binlog replication.
# Each instance (master and slave) in the replication group should have a different server id.
server-id = 101

# flavor: mysql/mariadb
flavor = "mysql"

# The directory used to store relay log.
relay-dir = "./relay_log"

# Enables gtid in the relay log unit
enable-gtid = false

relay-binlog-name = ""
relay-binlog-gtid = ""

[from]
host = "127.0.0.1"
user = "root"
password = "Up8156jArvIPymkVC+5LxkAT6rek"
port = 3306

# Relay log purge strategy.
[purge]
interval = 3600
expires = 24
remain-space = 15

# Task status checker.
[checker]
check-enable = true
backoff-rollback = "5m"
backoff-max = "5m"
```

## 配置项说明

### Global 配置

| 配置项 | 说明 |
| :------------ | :--------------------------------------- |
| `log-level` | 日志等级,值可以为 "debug"、"info"、"warn"、"error"、"fatal",默认值为 "info"。一般情况下不需要手动配置,如果需要排查问题,可以将等级设置为 "debug"。 |
| `log-file` | 日志文件,如果不配置日志会输出到标准输出中。 |
| `worker-addr` | DM-worker 服务的地址,可以省略 IP 信息,例如:":8262"。 |
| `source-id` | 标识一个 MySQL/MariaDB 实例或者 replication group。 |
| `server-id` | DM-worker 作为上游 MySQL/MariaDB slave 来获取 binlog 的 server id,该值在一个 replication group (包括 master 和 slave)中必须是唯一的。v1.0.2 及以上版本的 DM 会自动生成,不需要手动配置该项。 |
| `flavor` | 上游数据库的类型,目前值可以为 "mysql" 或者 "mariadb"。v1.0.2 及以上版本的 DM 会自动判断上游版本,不需要手动配置该项。 |
| `relay-dir` | 存储 relay log 的目录,默认值为 "./relay_log"。 |
| `enable-gtid` | 是否使用 GTID 方式从上游拉取 binlog,默认值为 false。一般情况下不需要手动配置,如果上游数据库启用了 GTID 支持,且需要做主从切换,则将该配置项设置为 true。 |
| `relay-binlog-name` | 拉取上游 binlog 的起始文件名,例如 "mysql-bin.000002",该配置在 `enable-gtid` 为 false 的情况下生效。如果不配置该项,v1.0.2 之前版本的 DM-worker 将从上游 MySQL 或 MariaDB 现有最早时间点的 binlog 文件开始拉取 binlog,拉取到数据同步任务需要的最新 binlog 可能需要很长时间;v1.0.2 及之后版本的 DM-worker 将从最新时间点的 binlog 文件开始拉取 binlog,一般情况下不需要手动配置。 |
| `relay-binlog-gtid` | 拉取上游 binlog 的起始 GTID,例如 "e9a1fc22-ec08-11e9-b2ac-0242ac110003:1-7849",该配置在 `enable-gtid` 为 true 的情况下生效。如果不配置该项,v1.0.2 之前版本的 DM-worker 将从上游 MySQL 或 MariaDB 现有最早时间点的 binlog GTID 开始拉取 binlog,拉取到数据同步任务需要的最新 binlog 可能需要很长时间;v1.0.2 及之后版本的 DM-worker 将从最新时间点的 binlog GTID 开始拉取 binlog,一般情况下不需要手动配置。 |

### 数据库链接配置(from 配置项)

| 配置项 | 说明 |
| :------------ | :--------------------------------------- |
| `host` | 上游数据库的 host。 |
| `port` | 上游数据库的端口。 |
| `user` | 连接数据库使用的用户名。 |
| `password` | 连接数据库使用的密码。注意:需要使用 dmctl 加密后的密码。 |

### relay log 清理策略配置(purge 配置项)

一般情况下不需要手动配置,如果 relay log 数据量较大,磁盘空间不足,则可以通过该配置项设置,避免 relay log 写满磁盘。

| 配置项 | 说明 |
| :------------ | :--------------------------------------- |
| `interval` | 定期检查 relay log 是否过期的间隔时间,默认值:3600,单位:秒。 |
| `expires` | relay log 的过期时间,默认值为 0,单位:小时。超过过期时间的 relay log 会被 DM 删除。如果不设置则 DM 不会自动清理过期的 relay log。 |
| `remain-space` | 设置最小的可用磁盘空间。当磁盘可用空间小于这个值时,DM-worker 会尝试删除 relay log,默认值:15,单位:GB。 |

> **注意:**
>
> 仅在 `interval` 不为 0 且 `expires``remain-space` 两个配置项中至少有一个不为 0 的情况下 DM 的自动清理策略才会生效。
### 任务检查模块配置(checker 配置项)

| 配置项 | 说明 |
| :------------ | :--------------------------------------- |
| `check-enable` | 是否开启任务状态检查。开启后 DM 会尝试自动恢复因错误而暂停的数据同步任务,默认值:true。 |
| `backoff-rollback` | 任务检查模块中,定时调整恢复等待时间的间隔,默认值:"5m0s"。 |
| `backoff-max` | 任务检查模块中,检查出错误后等待自动恢复的最长时间间隔,默认值:"5m0s"。 |

> **注意:**
>
> 用户只需要通过配置 `check-enable` 开启或者关闭任务状态检查功能。对于 `backoff-rollback``backoff-max` 一般情况下不需要修改,如果对该参数的作用没有深入的了解,不建议修改这两项参数。
Loading

0 comments on commit b129fa5

Please sign in to comment.