PolarDB归档后,重新导入到polardb 失败,如何解决?
数据库 wzl_brand_11176_2022
ALTER TABLE order_log
ENGINE = InnoDB
ALTER TABLE order_order
ENGINE = InnoDB
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据用户描述,PolarDB归档后重新导入到PolarDB失败,涉及的表为order_log
和order_order
,操作语句为:
ALTER TABLE order_log ENGINE = InnoDB;
ALTER TABLE order_order ENGINE = InnoDB;
结合知识库资料,可能的原因包括以下几方面: 1. OSS表的只读状态:归档到OSS的表默认为只读状态,直接修改可能会导致失败。 2. 数据加密配置:如果归档时启用了TDE加密,需确保解密过程透明且无误。 3. DLM策略执行错误:归档过程中可能存在DLM策略执行失败的情况,需检查相关记录。 4. SQL语法或兼容性问题:PolarDB对SQL语法有特定限制,需确保语句符合规范。
以下是针对上述可能原因的详细解决方案。
归档到OSS的表默认为只读状态,无法直接执行INSERT
、UPDATE
或DELETE
操作。如果尝试将OSS表转换为InnoDB引擎时失败,可能是由于表仍处于只读状态。
解决方法: - 确认表是否为只读状态。如果报错信息为:
1036 - Table 'order_log' is read only
则需要先将OSS表转换为可读写的状态(如InnoDB表)。 - 使用以下语句将OSS表导回至PolarStore:
ALTER TABLE order_log ENGINE = InnoDB;
ALTER TABLE order_order ENGINE = InnoDB;
如果仍然失败,请检查是否有其他限制条件。
如果归档时启用了TDE加密(通过ENCRYPTION="Y"
参数),需确保解密过程透明且无误。加密和解密由后台自动完成,但若配置不当可能导致导入失败。
解决方法: - 确认归档时是否启用了TDE加密。如果是,请确保集群版本满足以下要求: - PolarDB MySQL版8.0.1版本,小版本需为8.0.1.1.47及以上; - PolarDB MySQL版8.0.2版本,小版本需为8.0.2.2.27及以上。 - 如果版本不满足要求,建议升级集群的小版本。
归档过程中可能涉及DLM(Data Lifecycle Management)策略的执行。如果DLM策略执行失败,可能导致归档数据无法正确导入。
解决方法: - 检查mysql.dlm_progress
表中是否存在状态为ARCHIVE_ERROR
的记录:
SELECT * FROM mysql.dlm_progress WHERE Archive_stage = "ARCHIVE_ERROR";
Extra_info
字段中查看详细错误信息,并根据提示解决问题。Archive_stage
为ARCHIVE_COMPLETE
,然后手动执行DLM策略:
CALL dbms_dlm.execute_all_dlm_policies;
PolarDB对SQL语法有特定限制,需确保语句符合规范。如果语法不符合要求,可能导致操作失败。
解决方法: - 确认ALTER TABLE
语句是否符合PolarDB的SQL语法标准。例如,PolarDB不支持某些MySQL关键字或函数。 - 如果报错信息为:
ERR-CODE: [TDDL-4500][ERR_PARSER] not support statement: '*****'
请检查SQL语句是否符合PolarDB兼容的SQL语法标准。
如果归档表已删除或导回至PolarStore,但OSS上的文件未同步删除,可能导致冲突。
解决方法: - 使用以下语句删除OSS上对应的文件:
CALL dbms_oss.delete_table_file('wzl_brand_11176_2022', 'order_log');
CALL dbms_oss.delete_table_file('wzl_brand_11176_2022', 'order_order');
OSS files are still in use
,请等待一段时间后再重新执行该命令。如果按照上述步骤操作后问题仍未解决,请提供具体的错误信息以便进一步分析。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。