本文介绍 DM 集群操作以及使用 DM-Ansible 管理 DM 集群时需要注意的事项。
运行以下命令以启动整个集群的所有组件(包括 DM-master、DM-worker 和监控组件):
ansible-playbook start.yml
运行以下命令以下线整个集群的所有组件(包括 DM-master、DM-worker 和监控组件):
ansible-playbook stop.yml
在以下情况下,需要更新 DM 集群组件:
对于增量数据导入过程中的 binlog,DM 使用下游数据库记录断点信息,并会在同步任务开始或恢复后的第一个五分钟之内开启安全模式。
如果 DM-worker 上运行的任务未启用 sharding DDL 同步功能,DM-worker 重启时会检查断点信息和本地记录的子任务信息,重启前处于运行中状态的任务会自动恢复数据同步。
当 DM-worker 重启发生在 sharding DDL 语句同步开始前或完成后,DM-worker 会根据断点信息和本地记录的子任务信息自动恢复数据同步。
要解决这个问题,请按照总结:尽量避免在 sharding DDL 同步过程中重启 DM-worker。
由 DM-master 维护的信息包括以下两种。重启 DM-master 不会持久化保存这些信息的相关数据。
ansible-playbook rolling_update.yml --tags=dm-worker
ansible-playbook stop.yml --tags=dm-worker &&
ansible-playbook start.yml --tags=dm-worker
ansible-playbook rolling_update.yml --tags=dm-master
ansible-playbook stop.yml --tags=dm-master &&
ansible-playbook start.yml --tags=dm-master
假设您想要在机器 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_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
假设机器 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
假设机器 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 目录进行手动修复。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3165681/ ,如需转载,请注明出处,否则将追究法律责任。