当网格不再启动时,如何恢复数据库?

时间:2018-08-31 09:44:22

标签: gentics-mesh

由于内存不足,我们的网格实例崩溃并导致数据库处于不一致状态。网格不再启动,我没有机会使用还原端点。有没有其他还原数据库的方法?

以下是错误输出:

SEVERE: $ANSI{green {db=storage}} Exception during index 'e.has_branch_inout' deletion
com.orientechnologies.orient.core.exception.OPageIsBrokenException: Following files and pages are detected to be broken ['e.has_field_container_branch_type_lang.hib' :86;], storage is switched to 'read only' mode. Any modification operations are prohibited. To restore database and make it fully operational you may export and import database to and from JSON.
DB name="storage"
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.checkLowDiskSpaceRequestsAndReadOnlyConditions(OAbstractPaginatedStorage.java:5143)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.deleteIndexEngine(OAbstractPaginatedStorage.java:2113)
        at com.orientechnologies.orient.core.index.OIndexAbstract.create(OIndexAbstract.java:259)
        at com.orientechnologies.orient.core.index.OIndexMultiValues.create(OIndexMultiValues.java:258)
        at com.orientechnologies.orient.core.index.OIndexMultiValues.create(OIndexMultiValues.java:44)
        at com.orientechnologies.orient.core.index.OIndexManagerShared$RecreateIndexesTask.createAutomaticIndex(OIndexManagerShared.java:600)
        at com.orientechnologies.orient.core.index.OIndexManagerShared$RecreateIndexesTask.recreateIndex(OIndexManagerShared.java:586)
        at com.orientechnologies.orient.core.index.OIndexManagerShared$RecreateIndexesTask.recreateIndexes(OIndexManagerShared.java:534)
        at com.orientechnologies.orient.core.index.OIndexManagerShared$RecreateIndexesTask.run(OIndexManagerShared.java:515)
        at java.lang.Thread.run(Thread.java:745)

谢谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我们通过使用OrientDB Shell来恢复数据库。

  • 首先,我们删除了所有* .hib文件
  • 通过docker启动OrientDB Shell
  • 然后我们导出了旧数据
  • 创建了一个新数据库
  • 最后,我们将旧数据导入到新数据库中并开始网格化

答案 1 :(得分:0)

您可以尝试删除存储目录中的所有* .hib文件,然后重新启动Mesh。 (预先创建备份)

否则,很不幸,您需要下载OrientDB 2.2.x,在OrientDB安装中添加mesh数据库并调用导入/导出:

https://orientdb.com/docs/2.2.x/Export-Format.html

如果Gentics Mesh的REST API可以访问,您还可以尝试调用备份和还原端点。这可以通过 mesh-cli 完成:

mesh admin backup
mesh admin restore