TiDB Data Migration 1.0.x 版本间升级
本文档主要介绍各 TiDB Data Migration (DM) 1.0.x 版本间的升级操作步骤以及各版本的版本信息和主要变更。
注意:
- 若无特殊说明,各版本的升级操作均为从前一个有升级指引的版本向当前版本升级。
- 若无特殊说明,各升级操作示例均假定已经下载了对应版本的 DM 和 DM-Ansible 且 DM binary 存在于 DM-Ansible 的相应目录中。
- 若无特殊说明,各升级操作示例均假定升级前已停止所有迁移任务,升级完成后手动重新启动所有迁移任务。
- 以下版本升级指引逆序展示。
升级到 v1.0.5
版本信息
Release Version: v1.0.5
Git Commit Hash: a8e9f53f91e29756b09a22cdc37a6a6efcdfe55b
Git Branch: release-1.0
UTC Build Time: 2020-04-27 06:56:31
Go Version: go version go1.13 linux/amd64
主要变更
- 优化了
UNIQUE KEY
对应列含NULL
值时的增量复制速度 - 增加对 TiDB 返回的
Write conflict
(9007 与 8005)错误的重试 - 修复了全量数据导入过程中有可能触发
Duplicate entry
错误的问题 - 修复了全量导入完成后上游无数据写入时可能无法
stop-task
/pause-task
的问题 - 修复
stop-task
后监控 metrics 仍有数据显示的问题
升级操作示例
- 下载新版本 DM-Ansible,确认
inventory.ini
文件中dm_version = v1.0.5
- 执行
ansible-playbook local_prepare.yml
下载新的 DM binary 到本地 - 执行
ansible-playbook rolling_update.yml
滚动升级 DM 集群组件 - 执行
ansible-playbook rolling_update_monitor.yml
滚动升级 DM 监控组件
升级到 v1.0.4
版本信息
Release Version: v1.0.4-1-gd681c67
Git Commit Hash: d681c6731d3432f4d8f38ea651f44d49d6860269
Git Branch: release-1.0
UTC Build Time: 2020-03-16 09:45:29
Go Version: go version go1.13 linux/amd64
主要变更
- DM Portal 新增英文 UI 的支持
query-status
命令增加--more
参数用于显示完整的迁移状态信息- 修复到下游 TiDB 连接异常导致迁移暂停后,resume-task 可能无法正常恢复迁移的问题
- 修复 online DDL 执行失败后错误清理了 online DDL meta 信息而导致重启任务后无法继续正确处理 online DDL 迁移的问题
- 修复
start-task
异常返回的query-error
可能导致 DM-worker panic 的问题 - 修复
relay.meta
写入完成前,DM-worker 进程异常停止,导致重启 DM-worker 时可能无法正确恢复 relay log 文件与relay.meta
的问题
升级操作示例
- 下载新版本 DM-Ansible,确认
inventory.ini
文件中dm_version = v1.0.4
- 执行
ansible-playbook local_prepare.yml
下载新的 DM binary 到本地 - 执行
ansible-playbook rolling_update.yml
滚动升级 DM 集群组件 - 执行
ansible-playbook rolling_update_monitor.yml
滚动升级 DM 监控组件
升级到 v1.0.3
版本信息
Release Version: v1.0.3
Git Commit Hash: 41426af6cffcff9a325697a3bdebeadc9baa8aa6
Git Branch: release-1.0
UTC Build Time: 2019-12-13 07:04:53
Go Version: go version go1.13 linux/amd64
主要变更
- dmctl 支持命令式使用
- 支持迁移
ALTER DATABASE
DDL 语句 - 优化 DM 错误提示信息
- 修复全量导入模块在暂停或退出时 data race 导致 panic 的问题
- 修复对下游进行重试操作时,
stop-task
和pause-task
可能不生效的问题
升级操作示例
- 下载新版本 DM-Ansible,确认
inventory.ini
文件中dm_version = v1.0.3
- 执行
ansible-playbook local_prepare.yml
下载新的 DM binary 到本地 - 执行
ansible-playbook rolling_update.yml
滚动升级 DM 集群组件 - 执行
ansible-playbook rolling_update_monitor.yml
滚动升级 DM 监控组件
注意:
更新至 DM 1.0.3 版本时,需要确保 DM 所有组件 (dmctl/DM-master/DM-worker) 同时升级。不支持部分组件升级使用。
升级到 v1.0.2
版本信息
Release Version: v1.0.2
Git Commit Hash: affc6546c0d9810b0630e85502d60ed5c800bf25
Git Branch: release-1.0
UTC Build Time: 2019-10-30 05:08:50
Go Version: go version go1.12 linux/amd64
主要变更
- 支持自动为 DM-worker 生成部分配置项,减少人工配置成本
- 支持自动生成 mydumper 库表参数,减少人工配置成本
- 优化
query-status
默认输出,突出重点信息 - 直接管理到下游的 DB 连接而不是使用内置连接池,优化 SQL 错误处理与重试
- 修复 DM-worker 进程启动时、执行 DML 失败时可能 panic 的 bug
- 修复执行 sharding DDL(如
ADD INDEX
)超时后可能造成后续 sharding DDL 无法正确协调的 bug - 修复了有部分 DM-worker 不可访问时无法
start-task
的 bug - 完善了对 1105 错误的自动重试策略
升级操作示例
- 下载新版本 DM-Ansible, 确认
inventory.ini
文件中dm_version = v1.0.2
- 执行
ansible-playbook local_prepare.yml
下载新的 DM binary 到本地 - 执行
ansible-playbook rolling_update.yml
滚动升级 DM 集群组件 - 执行
ansible-playbook rolling_update_monitor.yml
滚动升级 DM 监控组件
注意:
更新至 DM 1.0.2 版本时,需要确保 DM 所有组件 (dmctl/DM-master/DM-worker) 同时升级。不支持部分组件升级使用。
升级到 v1.0.1
版本信息
Release Version: v1.0.1
Git Commit Hash: e63c6cdebea0edcf2ef8c91d84cff4aaa5fc2df7
Git Branch: release-1.0
UTC Build Time: 2019-09-10 06:15:05
Go Version: go version go1.12 linux/amd64
主要变更
- 修复某些情况下 DM 会频繁重建数据库连接的问题
- 修复使用
query-status
时潜在的 panic 问题
升级操作示例
- 下载新版本 DM-Ansible, 确认
inventory.ini
文件中dm_version = v1.0.1
- 执行
ansible-playbook local_prepare.yml
下载新的 DM binary 到本地 - 执行
ansible-playbook rolling_update.yml
滚动升级 DM 集群组件 - 执行
ansible-playbook rolling_update_monitor.yml
滚动升级 DM 监控组件
注意:
更新至 DM 1.0.1 版本时,需要确保 DM 所有组件 (dmctl/DM-master/DM-worker) 同时升级。不支持部分组件升级使用。
升级到 v1.0.0-10-geb2889c9 (1.0 GA)
版本信息
Release Version: v1.0.0-10-geb2889c9
Git Commit Hash: eb2889c9dcfbff6653be9c8720a32998b4627db9
Git Branch: release-1.0
UTC Build Time: 2019-09-06 03:18:48
Go Version: go version go1.12 linux/amd64
主要变更
- 常见的异常场景支持自动尝试恢复迁移任务
- 提升 DDL 语法兼容性
- 修复上游数据库连接异常时可能丢失数据的 bug
升级操作示例
- 下载新版本 DM-Ansible, 确认
inventory.ini
文件中dm_version = v1.0.0
- 执行
ansible-playbook local_prepare.yml
下载新的 DM binary 到本地 - 执行
ansible-playbook rolling_update.yml
滚动升级 DM 集群组件 - 执行
ansible-playbook rolling_update_monitor.yml
滚动升级 DM 监控组件
注意:
更新至 DM 1.0 GA 版本时,需要确保 DM 所有组件 (dmctl/DM-master/DM-worker) 同时升级。不支持部分组件升级使用。
升级到 v1.0.0-rc.1-12-gaa39ff9
版本信息
Release Version: v1.0.0-rc.1-12-gaa39ff9
Git Commit Hash: aa39ff981dfb3e8c0fa4180127246b253604cc34
Git Branch: dm-master
UTC Build Time: 2019-07-24 02:26:08
Go Version: go version go1.11.2 linux/amd64
主要变更
从此版本开始,将对所有的配置进行严格检查,遇到无法识别的配置会报错,以确保用户始终准确地了解自己的配置。
升级操作示例
启动 DM-master 或 DM-worker 前,必须确保已经删除废弃的配置信息,且没有多余的配置项,否则会启动失败。可根据失败信息删除多余的配置。
可能遗留的废弃配置:
dm-worker.toml
中的meta-file
task.yaml
中的mysql-instances
中的server-id