课程名称:3.6.3 Data migration from Aurora(如何将数据从 Aurora 迁移到 TiDB)
学习时长:
20分钟
课程收获:
了解分库分表架构下数据库数据如何迁移至 TiDB
课程内容:
DM工具支持上游数据库分库分表、数据合并和单库数据库同步至TiDB的功能
一、DM架构
- dmctl是用来控制DM集群的命令行工具,负责创建、更新删除数据迁移任务;查看数据迁移状态;处理数据迁移错误;以及校验数据迁移任务配置的正确性
- DM-master是管理节点,负责管理和调度数据迁移的各项工作;保存DM集群的拓扑信息;监控DM-worker的集群及数据迁移任务的运行状态;提供数据迁移管理的统一入口;以及分库分表场景下各个实例分表的DDL迁移
- DM-worker是工作节点,负责执行具体的数据迁移任务;将Binlog持久化保存至本地;保存数据迁移子任务的数据信息;编排数据迁移子任务的运行;监控迁移子任务的运行状况
二、DM工具同步流程
- 两种数据迁移模式
- Full全量模式
- Incremental增量模式
- DM All工作流
- DM数据导出并全量导入(只用于首次初始化)
- 全量导入完成DM自动根据位置点位拉取上游MySQL数据库binlog日志存储至本地的Relay log通过DM binlog replication消费到下游
三、示例
- 注意及检测事项
- Aurora读取器不能开启Binlog,不能作为DM迁移上游数据库Master Server,基于GTID的数据迁移需要MySQL5.7、Aurora2.0.4.1或更高版本
- DM增量同步阶段需要ROW格式的Binlog,未开启ROW格式Binlog及设置正确的Binlog格式,则不能正常使用DM进行数据同步。
- 上下游数据库实例用户相关同步权限需要单独设置
- 上游数据库实例与TiDB表兼容性需要额外检查,比如外键、字符集等
- 上游分库分表一致性以及自增组件检查,包括冲突组件检查
四、DM迁移
- 注意:上游数据库密码需要加密,以及是否需要通过GTID模式同步
- DM常用维护操作
- 确认互信和tidb用户状态
ansible -i inventory.ini all -m shell -a ‘whoami’ && ansible -i inventory.ini all -m shell -a ‘whoami’ - 集群部署
ansible-playbook deploy.yml - 启动
ansible-playbook start.yml - 停止
ansible-playbook stop.yml
五、task配置
- 示例:Aurora1和Aurora2实例Test DB库中的test_table表全量加增量同步到下游TiDB中的Test DB库中的test_table表
- Task任务配置好后需要通过dmctl工具启动
- 启动dmctl
$ ./dmctl -master-addr 172.16.10.71:8261 - 启动task任务
start-task ./task.yaml - 查看task状态
query-status