obloader恢复数据库失败

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OB
【 使用版本 】
【问题描述】
使用obloader进行整个库恢复时,因表有外键而报错
[WARN] …Executing: “drop TABLE zhlc_master.act_ge_bytearray;” failed. Error: Cannot drop table ‘act_ge_bytearray’ referenced by a foreign key constraint ‘ACT_FK_SUSPENDED_JOB_CUSTOM_VALUES’ on table ‘act_ru_suspended_job’]
ob是不支持对有外键的表进行备份恢复还是又怎样的解决办法?

以下是解决此问题的步骤:

  1. 禁用外键约束
    在恢复数据之前,可以暂时禁用外键约束检查。这样可以避免在删除或恢复表时因外键约束而报错。可以使用以下 SQL 语句禁用外键约束检查:
SET FOREIGN_KEY_CHECKS = 0;
  1. 删除表
    在禁用外键约束后,可以安全地删除表。例如:
DROP TABLE zhlc_master.act_ge_bytearray;
  1. 恢复数据
    使用 obloader 恢复数据。确保在恢复过程中外键约束检查仍然是禁用的。
  2. 启用外键约束
    在数据恢复完成后,重新启用外键约束检查。可以使用以下 SQL 语句启用外键约束检查:
SET FOREIGN_KEY_CHECKS = 1;
  1. 验证数据完整性
    在启用外键约束后,建议验证数据的完整性,确保外键关系没有因恢复操作而破坏。

总结来说,OceanBase 支持对有外键的表进行备份和恢复,但在恢复过程中需要暂时禁用外键约束检查以避免报错。恢复完成后,再重新启用外键约束检查并验证数据完整性。

2 个赞

正常其他数据库恢复也需要考虑这个,也是先禁用吧,恢复也不能确定基表和关联表的恢复顺序。

你好参考楼上提供方法解决了么