开发者社区 问答 正文

federated类型的表的存在性检查

这个配置项只有当进行进行MySQL->MySQL增量迁移时,才会检查。这个检查项主要检查源数据库中是否存在增量迁移不支持的存储引擎。目前增量迁移不支持federated, mrg_myisam两种存储引擎。


  • 当检查失败,且失败原因为源数据库中存在引擎为FEDERATED的表时,说明源数据库中要迁移的部分表的存储引擎为federated,所以导致检查失败。

  • 当检查失败,失败原因为源数据库中存在引擎为MRG_MYISAM的表时,说明源数据库中要迁移的部分表的存储引擎为mrg_myisam,所以导致检查失败。

  • 当检查失败时,对于这些存储引擎为federated或mrg_myisam的表,修改迁移任务,将这些表从迁移列表删除掉。然后单独创建一个迁移任务,对这些表进行结构迁移+全量数据迁移。

展开
收起
云栖大讲堂 2017-10-31 10:43:51 1630 分享 版权
阿里云 AI 助理回答

您提到的情况是关于使用阿里云数据传输服务(Data Transmission Service,简称DTS)进行MySQL数据库增量迁移时遇到的存储引擎兼容性问题。DTS在设计上为了确保数据迁移的顺利进行,会对源数据库的表结构和存储引擎进行一系列检查,以确保目标数据库能够正确地处理这些数据。

问题解析

  • FEDERATED引擎:这是一种允许访问其他MySQL服务器上的表的存储引擎,它实际上不存储数据,而是提供对远程表的透明访问。由于这种特殊性,增量迁移通常不支持此引擎,因为这涉及到跨服务器的数据操作,难以实时跟踪和复制变化。

  • MRG_MYISAM引擎:又称为合并表引擎,它本身不存储数据,而是作为一个代理,合并多个MyISAM表来查看。这种类型的表也不适合增量迁移,因为它依赖于静态数据集的组合,而不是动态变化的数据。

解决方案

  1. 移除不支持的表:如您所述,首先需要从增量迁移任务中排除这些使用了FEDERATEDMRG_MYISAM引擎的表。可以通过修改迁移任务配置,从迁移列表中删除这些特定表。

  2. 单独迁移:对于被移除的表,可以创建一个新的迁移任务,专门用于这些表的结构迁移和全量数据迁移。这意味着先执行一次性的全量数据同步,而非持续的增量同步。

  3. 考虑数据架构调整:如果条件允许,评估是否可以将这些表转换为支持增量迁移的存储引擎,比如InnoDB,这样就可以直接包含在增量迁移任务中。但请注意,这可能涉及数据库架构的重大调整以及潜在的数据迁移风险和停机时间。

  4. 使用DTS特性:利用DTS提供的功能,如任务管理、数据校验等,确保在调整迁移策略后,数据的一致性和完整性得到维护。

实施步骤简述

  • 登录阿里云控制台。
  • 进入DTS服务页面,找到您的迁移任务。
  • 检查并编辑迁移任务设置,移除不支持增量迁移的表。
  • 保存更改并启动或重新启动迁移任务。
  • 对于被移除的表,创建新的迁移任务,选择全量迁移模式,并指定相应的源和目标表。
  • 监控迁移过程,确保任务顺利完成。

通过上述步骤,您可以有效解决因存储引擎不兼容导致的增量迁移失败问题,确保数据迁移项目顺利进行。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答