Data Migration 常见问题

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: DM 是否支持同步阿里 RDS 以及其他云数据库的数据?DM 仅支持解析标准版本的 MySQL/MariaDB 的 binlog,对于阿里云 RDS 以及其他云数据库没有进行过测试,如果确认其 binlog 为标准格式,则可以支持。task 配置中的黑白名单的正则表达式是否支持非获取匹配(?!)?目前不支持,DM 仅支持 golang 标准库的正则,可以通过 re2-syntax 了解 golang 支持的正则表达式。如果在上游执行的一个 statement 包含多个 DDL 操作,DM 是否支持同步?DM 会尝试将包含多个 DDL 变更操作的单条语句拆分成只包含一个 DDL 操

DM 是否支持同步阿里 RDS 以及其他云数据库的数据?
DM 仅支持解析标准版本的 MySQL/MariaDB 的 binlog,对于阿里云 RDS 以及其他云数据库没有进行过测试,如果确认其 binlog 为标准格式,则可以支持。

task 配置中的黑白名单的正则表达式是否支持非获取匹配(?!)?
目前不支持,DM 仅支持 golang 标准库的正则,可以通过 re2-syntax 了解 golang 支持的正则表达式。

如果在上游执行的一个 statement 包含多个 DDL 操作,DM 是否支持同步?
DM 会尝试将包含多个 DDL 变更操作的单条语句拆分成只包含一个 DDL 操作的多条语句,但是可能没有覆盖所有的场景。建议在上游执行的一条 statement 中只包含一个 DDL 操作,或者在测试环境中验证一下,如果不支持,可以给 DM 提 issue。

如何处理不兼容的 DDL 语句?
你需要使用 dmctl 手动处理 TiDB 不兼容的 DDL 语句(包括手动跳过该 DDL 语句或使用用户指定的 DDL 语句替换原 DDL 语句,详见

注意:

TiDB 目前并不兼容 MySQL 支持的所有 DDL 语句。

如何重置数据同步任务?
在以下情况中,你需要重置整个数据同步任务:

上游数据库中人为执行了 RESET MASTER,造成 relay log 同步出错

relay log 或上游 binlog event 损坏或者丢失

此时,relay 处理单元通常会发生错误而退出,且无法优雅地自动恢复,因此需要通过手动方式恢复数据同步:

使用 stop-task 命令停止当前正在运行的所有同步任务。

使用 DM-Ansible

手动清理掉与 binlog event 被重置的 MySQL master 相对应的 DM-worker 的 relay log 目录。

如果是使用 DM-Ansible 部署,relay log 目录即 <deploy_dir>/relay_log 目录。
如果是使用二进制文件手动部署,relay log 目录即 relay-dir 参数设置的目录。
清理掉下游已同步的数据。

使用 DM-Ansible

以新的任务名重启数据同步任务,或设置 remove-meta 为 true 且 task-mode 为 all。

设置了 online-ddl-scheme: "gh-ost", gh-ost 表相关的 DDL 报错该如何处理?
[unit=Sync] ["error information"="{\"msg\":\"[code=36046:class=sync-unit:scope=internal:level=high] online ddls on ghost table xxx._xxxx_gho\ngithub.com/pingcap/dm/pkg/terror.(*Error).Generate ......
出现上述错误可能有以下原因:

DM 在最后 rename ghost_table to origin table 的步骤会把QQ靓号买号平台内存的 DDL 信息读出,并且还原为 origin table 的 DDL。而内存中的 DDL 信息是在 alter ghost_table 的时候进行dm_meta.{task_name}_onlineddl 中读取出来。

因此,如果在增量同步过程中,指定的 Pos 跳过了 alter ghost_table 的 DDL,但是该 Pos 仍在 gh-ost 的 online-ddl 的过程中,就会因为 ghost_table 没有正确写入到内存以及 dm_meta.{task_name}_onlineddl,而导致该问题。

可以通过以下方式绕过这个问题:

取消 task 的 online-ddl-schema 的配置。

把 _{table_name}_gho、_{table_name}_ghc、_{table_name}_del 配置到 black-white-list.ignore-tables 中。

手工在下游的 TiDB 执行上游的 DDL。

待 Pos 同步到 gh-ost 流程的位置之后,再重新启用 online-ddl-schema 以及注释掉 black-white-list.ignore-tables。

"Data Migration 常见问题" 更新于 Apr 8 2020: aliases: change stable to v3.0 in aliases (#21) (374695a)

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
API
【Azure API 管理】解决API Management添加AAD Group时遇见的 Failed to query Azure Active Directory graph due to error 错误
【Azure API 管理】解决API Management添加AAD Group时遇见的 Failed to query Azure Active Directory graph due to error 错误
|
3月前
|
JSON API 网络架构
【Azure Developer】Azure REST API: 如何通过 API查看 Recovery Services Vaults(恢复保管库)的备份策略信息? 如备份中是否含有虚拟机的Disk
【Azure Developer】Azure REST API: 如何通过 API查看 Recovery Services Vaults(恢复保管库)的备份策略信息? 如备份中是否含有虚拟机的Disk
|
4月前
|
SQL 分布式计算 DataWorks
MaxCompute操作报错合集之遇到报错:"Catalog Service Failed",该如何处理
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
5月前
|
分布式计算 安全 大数据
MaxCompute操作报错合集之创建oss外部表时出现了报错:"Semantic analysis exception - external table checking failure, error message:,该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
140 1
|
5月前
|
监控 Cloud Native 网络协议
函数计算操作报错合集之出现“make sure that the nas mount point address is correct and is accessible from the service vpc”的提示,需要如何排查
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
6月前
|
Oracle 关系型数据库 数据库
实时计算 Flink版操作报错合集之错误信息"ORA-65040: operation not allowed from within a pluggable database"如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
310 2
|
5月前
|
分布式计算 DataWorks 数据库连接
DataWorks操作报错合集之同步脚本报错This error often occurs when a lot dirty data exists in the source data. 是什么原因
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
弹性计算 移动开发 Serverless
Serverless 应用引擎操作报错合集之部署stable启动时出现:Function instance health check failed on port 5000 in 120 seconds该怎么解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
6月前
|
存储 NoSQL 关系型数据库
实时计算 Flink版操作报错之抽取Oracle11g时,报错: "Retrieve schema history failed, the schema records for engine ... has been removed",怎么处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
6月前
|
消息中间件 Oracle 关系型数据库
实时计算 Flink版操作报错合集之报错io.debezium.DebeziumException: The db history topic or its content is fully or partially missing. Please check database history topic configuration and re-execute the snapshot. 是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
333 0
下一篇
无影云桌面