2017-08-09 21 views
0

我想知道是否可以删除一个不允许我使用NDB_RESTORE工具执行还原的表片段。MySQL簇7.4.15 - Ndb_Restore由于孤岛片段而失败

当我运行恢复,它引发以下错误:

创建表db_died_maestro/def/NDB$FKM_3194_0_mae_tipo_reg_evaluacion失败:721:带指定名称的架构对象已经存在 恢复:无法恢复表:db_died_maestro/def/NDB$FKM_3194_0_mae_tipo_reg_evaluacion ...退出 NDBT_ProgramExit :1 - 失败

我已经删除DB_DIED_MAESTRO数据库以前运行还原,但此片段不会与数据库一起被删除。

我有检查,该片段是在数据库目录中使用该querys:

* SELECT * FROM ndbinfo.operations_per_fragment 其中fq_name像 'db_died_maestro%' *

query result

这查询:

* select * from ndbinfo.memory_per_fragment 其中fq_name如'%FKM_3194_0_mae_tipo_reg_evaluacion'*

query 2 result

该片段在NDB_RESTORE工具的先前运行产生。请帮帮我。

回答

0

该表是外键“模拟”表(由名称NDB $ FKM前缀指示)。

在某些情况下,为了实现MySQL的foreign_key_checks = 0功能,会暂时创建外键模拟表。此功能要求存储引擎支持无序地创建具有部分定义的外键约束的表,这些约束可以在以后随时启用(无需重新验证)。

外键模拟表通常完全由MySQL的Ndb存储引擎组件管理,因此除非出现某种故障或错误,否则不应该可见。

如果您可以共享关于在此问题发生之前发生的活动的信息,那么这将帮助我们了解这是怎么发生的以及是否可以避免。

作为解决方法,在重新尝试失败的恢复之前,应该可以使用ndb_drop_table实用程序删除此表。您可能不得不从作为shell命令行参数传递的名称中跳过$。可能您应该检查类似情况下的任何其他NDB $ FKM表格。

+0

这是一个新的集群安装,当我第一次运行NDB_RESTORE工具失败时,因为表的数量超过了集群配置文件中的MaxNoOfTables参数。所以,我必须更改配置文件中的参数,重新启动群集,删除由失败的恢复创建的所有数据库并再次尝试,但后来我得到了我的问题中解释的错误。作为解决方法,我已经使用“ndbd --initial”选项重新创建数据节点,并且它可以工作,但是我想知道现在是否可以通过执行此解决方法来解决此问题。 –

相关问题