- 管理数据同步任务
- dmctl 基本用法
- dmctl 使用帮助
- 加密数据库密码
- 任务管理概览
- 管理数据同步任务
- 创建数据同步任务
- 命令用法示例
- 参数解释
- 返回结果示例
- 查询数据同步任务状态
- 命令用法示例
- 参数解释
- 返回结果示例
- 暂停数据同步任务
- 命令用法示例
- 参数解释
- 返回结果示例
- 恢复数据同步任务
- 命令用法示例
- 参数解释
- 返回结果示例
- 停止数据同步任务
- 命令用法示例
- 参数解释
- 返回结果示例
- 更新数据同步任务
- 支持更新项的更新步骤
- 不支持更新项的更新步骤
- 命令用法示例
- 参数解释
- 返回结果示例
- 创建数据同步任务
- 管理 DDL lock
- 强制刷新
task => DM-workers映射关系
- dmctl 基本用法
管理数据同步任务
本文介绍了如何使用 dmctl 组件来进行数据同步任务的管理和维护。对于用 DM-Ansible 部署的 DM 集群,dmctl 二进制文件路径为 dm-ansible/dmctl。
dmctl 基本用法
本部分描述了一些 dmctl 命令的基本用法。
dmctl 使用帮助
$ ./dmctl --helpUsage of dmctl:# 打印版本信息-V prints version and exit# 按照 DM 提供的加密方法加密数据库密码,用于 DM 的配置文件-encrypt stringencrypt plaintext to ciphertext# DM-master 访问地址,dmctl 与 DM-master 交互以完成任务管理操作-master-addr stringmaster API server addr
加密数据库密码
在 DM 相关配置文件中,要求必须使用经 dmctl 加密后的密码,否则会报错。对于同一个原始密码,每次加密后密码不同。
$ ./dmctl -encrypt 123456VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU=
任务管理概览
# 进入命令行模式,与 DM-master 进行交互$ ./dmctl -master-addr 172.16.30.14Welcome to dmctlRelease Version: v1.0.0-100-g2bef6f8bGit Commit Hash: 2bef6f8beda34c0dff57377005c71589b48aa3c5Git Branch: dm-masterUTC Build Time: 2018-11-02 10:03:18Go Version: go version go1.11 linux/amd64» helpDM controlUsage:dmctl [command]Available Commands:break-ddl-lock force to break DM-worker's DDL lockgenerate-task-config generate a task config with config filehelp Help about any commandpause-relay pause DM-worker's relay unitpause-task pause a running task with namequery-status query task's statusrefresh-worker-tasks refresh worker -> tasks mapperresume-relay resume DM-worker's relay unitresume-task resume a paused task with nameshow-ddl-locks show un-resolved DDL lockssql-inject sql-inject injects (limited) sqls into syncer as binlog eventsql-replace sql-replace replaces sql in specific binlog_pos with other sqls, each sql must ends with semicolon;sql-skip sql-skip skips specified binlog positionstart-task start a task with config filestop-task stop a task with nameswitch-relay-master switch master server of DM-worker's relay unitunlock-ddl-lock force to unlock DDL lockupdate-master-config update configure of DM-masterupdate-task update a task's config for routes, filters, column-mappings, black-white-listFlags:-h, --help help for dmctl-w, --worker strings DM-worker ID# 使用 `dmctl [command] --help` 来获取某个命令的更多信息
管理数据同步任务
本部分描述了如何使用不同的任务管理命令来执行以下操作:
- 创建数据同步任务
- 查询数据同步任务状态
- 暂停数据同步任务
- 恢复数据同步任务
- 停止数据同步任务
- 更新数据同步任务
创建数据同步任务
start-task 命令用于创建数据同步任务。 当数据同步任务启动时,DM 将自动对相应权限和配置进行前置检查。
» help start-taskstart a task with config fileUsage:dmctl start-task [-w worker ...] <config_file> [flags]Flags:-h, --help help for start-taskGlobal Flags:-w, --worker strings dm-worker ID
命令用法示例
start-task [ -w "172.16.30.15:10081"] ./task.yaml
参数解释
-w:- 可选
- 指定在特定的一组 DM-workers 上执行
task.yaml - 如果设置,则只启动指定任务在该组 DM-workers 上的子任务
config_file:- 必选
- 指定
task.yaml的文件路径
返回结果示例
» start-task task.yaml{"result": true,"msg": "","workers": [{"result": true,"worker": "172.16.30.15:10081","msg": ""},{"result": true,"worker": "172.16.30.16:10081","msg": ""}]}
查询数据同步任务状态
query-status 命令用于查询数据同步任务状态。有关查询结果及子任务状态,详见查询状态。
» help query-statusquery task's statusUsage:dmctl query-status [-w worker ...] [task_name] [flags]Flags:-h, --help help for query-statusGlobal Flags:-w, --worker strings dm-worker ID
命令用法示例
query-status
参数解释
-w:- 可选
- 查询在指定的一组 DM-workers 上运行的数据同步任务的子任务
task_name:- 可选
- 指定任务名称
- 如果未设置,则返回全部数据同步任务的查询结果
返回结果示例
有关查询结果中各参数的意义,详见查询状态结果。
» query-status{"result": true,"msg": "","workers": [{"result": true,"worker": "172.16.30.15:10081","msg": "","subTaskStatus": [{"name": "test","stage": "Running","unit": "Sync","result": null,"unresolvedDDLLockID": "","sync": {"TotalEvents": "0","TotalTps": "0","RecentTps": "0","MasterBinlog": "(mysql-bin.000004, 484)","MasterBinlogGtid": "","SyncerBinlog": "(mysql-bin.000004, 484)","SyncerBinlogGtid": "","blockingDDLs": [],"unresolvedGroups": []}}],"relayStatus": {"MasterBinlog": "(mysql-bin.000004, 484)","MasterBinlogGtid": "","relaySubDir": "0-1.000001","RelayBinlog": "(mysql-bin.000004, 484)","RelayBinlogGtid": "","relayCatchUpMaster": true,"stage": "Running","result": null}},{"result": true,"worker": "172.16.30.16:10081","msg": "","subTaskStatus": [{"name": "test","stage": "Running","unit": "Sync","result": null,"unresolvedDDLLockID": "","sync": {"TotalEvents": "0","TotalTps": "0","RecentTps": "0","MasterBinlog": "(mysql-bin.000004, 4809)","MasterBinlogGtid": "","SyncerBinlog": "(mysql-bin.000004, 4809)","SyncerBinlogGtid": "","blockingDDLs": [],"unresolvedGroups": []}}],"relayStatus": {"MasterBinlog": "(mysql-bin.000004, 4809)","MasterBinlogGtid": "","relaySubDir": "0-1.000001","RelayBinlog": "(mysql-bin.000004, 4809)","RelayBinlogGtid": "","relayCatchUpMaster": true,"stage": "Running","result": null}}]}
暂停数据同步任务
pause-task 命令用于暂停数据同步任务。
» help pause-taskpause a running task with nameUsage:dmctl pause-task [-w worker ...] <task_name> [flags]Flags:-h, --help help for pause-taskGlobal Flags:-w, --worker strings DM-worker ID
命令用法示例
pause-task [-w "127.0.0.1:10181"] task-name
参数解释
-w:- 可选
- 指定在特定的一组 DM-workers 上暂停数据同步任务的子任务
- 如果设置,则只暂停该任务在指定 DM-workers 上的子任务
task_name:- 必选
- 指定任务名称
返回结果示例
» pause-task test{"op": "Pause","result": true,"msg": "","workers": [{"op": "Pause","result": true,"worker": "172.16.30.15:10081","msg": ""},{"op": "Pause","result": true,"worker": "172.16.30.16:10081","msg": ""}]}
恢复数据同步任务
resume-task 命令用于恢复数据同步任务。
» help resume-taskresume a paused task with nameUsage:dmctl resume-task [-w worker ...] <task_name> [flags]Flags:-h, --help help for resume-taskGlobal Flags:-w, --worker strings dm-worker ID
命令用法示例
resume-task [-w "127.0.0.1:10181"] task-name
参数解释
-w:- 可选
- 指定在特定的一组 DM-workers 上恢复数据同步任务的子任务
- 如果设置,则只恢复该任务在指定 DM-workers 上的子任务
task_name:- 必选
- 指定任务名称
返回结果示例
» resume-task test{"op": "Resume","result": true,"msg": "","workers": [{"op": "Resume","result": true,"worker": "172.16.30.15:10081","msg": ""},{"op": "Resume","result": true,"worker": "172.16.30.16:10081","msg": ""}]}
停止数据同步任务
stop-task 命令用于停止数据同步任务。
» help stop-taskstop a task with nameUsage:dmctl stop-task [-w worker ...] <task_name> [flags]Flags:-h, --help help for stop-taskGlobal Flags:-w, --worker strings dm-worker ID
命令用法示例
stop-task [-w "127.0.0.1:10181"] task-name
参数解释
-w:- 可选
- 指定在特定的一组 DM-workers 上停止数据同步任务的子任务
- 如果设置,则只停止该任务在指定 DM-workers 上的子任务
task_name:- 必选
- 指定任务名称
返回结果示例
» stop-task test{"op": "Stop","result": true,"msg": "","workers": [{"op": "Stop","result": true,"worker": "172.16.30.15:10081","msg": ""},{"op": "Stop","result": true,"worker": "172.16.30.16:10081","msg": ""}]}
更新数据同步任务
update-task 命令用于更新数据同步任务。
支持的更新项包括:
- 表路由规则
- 表黑白名单规则
- binlog 过滤规则
- 列值转换规则
其余项均不支持更新。
支持更新项的更新步骤
使用
query-status <task-name>查询对应数据同步任务的状态。- 若
stage不为Paused,则先使用pause-task <task-name>暂停任务。
- 若
在
task.yaml文件中更新需要修改的自定义配置或者错误配置。使用
update-task task.yaml更新任务配置。使用
resume-task <task-name>恢复任务。
不支持更新项的更新步骤
使用
query-status <task-name>查询对应数据同步任务的状态。- 若任务存在,则通过
stop-task <task-name>停止任务。
- 若任务存在,则通过
在
task.yaml文件中更新需要修改的自定义配置或者错误配置。使用
start-task <task-name>恢复任务。
» help update-taskupdate a task's config for routes, filters, column-mappings, black-white-listUsage:dmctl update-task [-w worker ...] <config_file> [flags]Flags:-h, --help help for update-taskGlobal Flags:-w, --worker strings dm-worker ID
命令用法示例
update-task [-w "127.0.0.1:10181"] ./task.yaml
参数解释
-w:- 可选
- 指定在特定的一组 DM-workers 上更新数据同步任务的子任务
- 如果设置,则只更新指定 DM-workers 上的子任务配置
config_file:- 必选
- 指定
task.yaml的文件路径
返回结果示例
» update-task task_all_black.yaml{"result": true,"msg": "","workers": [{"result": true,"worker": "172.16.30.15:10081","msg": ""},{"result": true,"worker": "172.16.30.16:10081","msg": ""}]}
管理 DDL lock
详见手动处理 sharding DDL lock。
强制刷新 task => DM-workers 映射关系
refresh-worker-tasks 命令用于强制刷新 DM-master 内存中维护的 task => DM-workers 映射关系。
注意:
一般不需要使用此命令。仅当已确定
task => DM-workers映射关系存在,但执行其它命令时仍提示必须刷新它时,你才需要使用此命令。
