本文介绍 DM 集群操作以及使用 DM-Ansible 管理 DM 集群时需要注意的事项。
启动集群
运行以下命令以启动整个集群的所有组件(包括 DM-master、DM-worker 和监控组件):
ansible-playbook start.yml
下线集群
运行以下命令以下线整个集群的所有组件(包括 DM-master、DM-worker 和监控组件):
ansible-playbook stop.yml
重启集群组件
在以下情况下,需要更新 DM 集群组件:
重启注意事项
DM-worker 重启事项
对于增量数据导入过程中的 binlog,DM 使用下游数据库记录断点信息,并会在同步任务开始或恢复后的个五分钟之内开启安全模式。
如果 DM-worker 上运行的任务未启用 sharding DDL 同步功能,DM-worker 重启时会检查断点信息和本地记录的子任务信息,重启前处于运行中状态的任务会自动恢复数据同步。
当 DM-worker 重启发生在 sharding DDL 语句同步开始前或完成后,DM-worker 会根据断点信息和本地记录的子任务信息自动恢复数据同步。
要解决这个问题,请按照总结:尽量避免在 sharding DDL 同步过程中重启 DM-worker。
DM-master 重启事项
由 DM-master 维护的信息包括以下两种。重启 DM-master 不会持久化保存这些信息的相关数据。
重启 DM-worker
ansible-playbook rolling_update.yml --tags=dm-worker
ansible-playbook stop.yml --tags=dm-worker && ansible-playbook start.yml --tags=dm-worker
重启 DM-master
ansible-playbook rolling_update.yml --tags=dm-master
ansible-playbook stop.yml --tags=dm-master && ansible-playbook start.yml --tags=dm-master
更新组件版本
创建 DM-worker 实例
假设您想要在机器
172.16.10.74
上创建一个名为dm_worker3
的 DM-worker 实例,按以下步骤操作:参考tidb 用户登录至中控机,并将
172.16.10.74
添加至hosts.ini
文件中的[servers]
部分。cd /home/tidb/dm-ansible && vi hosts.ini
[servers] 172.16.10.74 [all:vars] username = tidb
运行以下命令。根据屏幕提示,输入
root
用户密码以部署172.16.10.74
。ansible-playbook -i hosts.ini create_users.yml -u root -k
该步在
172.16.10.74
机器上创建了一个tidb
用户,设置了 sudo 规则,并为中控机与该机器配置了 SSH 互信。
ansible-playbook deploy.yml --tags=dm-worker -l dm_worker3
ansible-playbook start.yml --tags=dm-worker -l dm_worker3
ansible-playbook rolling_update.yml --tags=dm-master
ansible-playbook rolling_update_monitor.yml --tags=prometheus
下线 DM-worker 实例
假设您想要下线的 DM-worker 实例为
dm_worker3
。按以下步骤操作:ansible-playbook stop.yml --tags=dm-worker -l dm_worker3
ansible-playbook rolling_update.yml --tags=dm-master
ansible-playbook rolling_update_monitor.yml --tags=prometheus
替换/迁移 DM-master 实例
假设机器
172.16.10.71
需要进行维护或者已崩溃,需要将 DM-master 实例从172.16.10.71
迁移至172.16.10.80
。按以下步骤操作:参考tidb 账户登录至中控机,并将
172.16.10.80
添加至hosts.ini
文件中的[servers]
部分。cd /home/tidb/dm-ansible && vi hosts.ini
[servers] 172.16.10.80 [all:vars] username = tidb
运行以下命令。根据屏幕提示,输入
root
用户密码以部署172.16.10.80
。ansible-playbook -i hosts.ini create_users.yml -u root -k
该步在
172.16.10.80
机器上创建了一个tidb
用户,设置了 sudo 规则,并为中控机与该机器配置了 SSH 互信。
ansible-playbook stop.yml --tags=dm-master
ansible-playbook deploy.yml --tags=dm-master
ansible-playbook start.yml --tags=dm-master
ansible-playbook rolling_update.yml --tags=dmctl
替换/迁移 DM-worker 实例
假设机器
172.16.10.72
需要进行维护或者已崩溃,您需要将dm_worker1
实例从172.16.10.72
迁移至172.16.10.75
。按以下步骤操作:参考tidb 账户登录至中控机,并将
172.16.10.75
添加至hosts.ini
文件中的[servers]
部分。cd /home/tidb/dm-ansible && vi hosts.ini
[servers] 172.16.10.75 [all:vars] username = tidb
运行以下命令。根据屏幕提示,输入
root
用户密码以部署172.16.10.85
。ansible-playbook -i hosts.ini create_users.yml -u root -k
该步在
172.16.10.75
上创建了一个tidb
用户,设置了 sudo 规则,并为中控机与该机器配置了 SSH 互信。
ansible-playbook stop.yml --tags=dm-worker -l dm_worker1
修改
inventory.ini
文件,为新 DM-worker 实例添加相关信息。修改
inventory.ini
文件。注释或删除旧dm_worker1
实例所在行;同时为新dm_worker1
实例添加相关信息。ansible-playbook deploy.yml --tags=dm-worker -l dm_worker1
ansible-playbook start.yml --tags=dm-worker -l dm_worker1
ansible-playbook rolling_update.yml --tags=dm-master
ansible-playbook rolling_update_monitor.yml --tags=prometheus
使用
start-task
命令启动数据迁移任务,如果任务运行正常,则表示 DM-worker 迁移顺利完成;如果报类似如下错误,则需要对 relay log 目录进行手动修复。