2015-09-18 3 views
0

У меня возникли проблемы с восстановлением базы данных OrientDB из резервной копии. Я использую OrientDB версии 1.2.0 (эта резервная копия с ноября 2012 года), и резервная копия была создана OrientDB (той же версией) с использованием встроенной утилиты резервного копирования. Я пытаюсь восстановить резервную копию в новую базу данных с помощью консоли OrientDB:Не удается восстановить резервную копию OrientDB

create database remote:localhost/dbname root password local graph 
import database backup.json 

Но когда я запускаю эти команды, я получаю следующее сообщение об ошибке в консоли:

Importing indexes ... 
- Index 'dictionary'...Error on database import happened just before line 22258, column 6 
com.orientechnologies.orient.core.exception.OConcurrentModificationException: Cannot update record #0:1 in storage 'dbname' because the version is not the latest. Probably you are updating an old record or it has been modified by another user (db=v2 your=v1) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at com.orientechnologies.orient.enterprise.channel.binary.OChannelBinary.createException(OChannelBinary.java:429) 
    at com.orientechnologies.orient.enterprise.channel.binary.OChannelBinary.handleStatus(OChannelBinary.java:382) 
    at com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryAsynch.beginResponse(OChannelBinaryAsynch.java:145) 
    at com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryAsynch.beginResponse(OChannelBinaryAsynch.java:59) 
    at com.orientechnologies.orient.client.remote.OStorageRemote.beginResponse(OStorageRemote.java:1556) 
    at com.orientechnologies.orient.client.remote.OStorageRemote.command(OStorageRemote.java:727) 
    at com.orientechnologies.orient.client.remote.OStorageRemoteThread.command(OStorageRemoteThread.java:191) 
    at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:60) 
    at com.orientechnologies.orient.core.index.OIndexManagerRemote.dropIndex(OIndexManagerRemote.java:80) 
    at com.orientechnologies.orient.core.index.OIndexManagerProxy.dropIndex(OIndexManagerProxy.java:80) 
    at com.orientechnologies.orient.core.db.tool.ODatabaseImport.importIndexes(ODatabaseImport.java:687) 
    at com.orientechnologies.orient.core.db.tool.ODatabaseImport.importDatabase(ODatabaseImport.java:127) 
    at com.orientechnologies.orient.console.OConsoleDatabaseApp.importDatabase(OConsoleDatabaseApp.java:1419) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at com.orientechnologies.common.console.OConsoleApplication.execute(OConsoleApplication.java:238) 
    at com.orientechnologies.common.console.OConsoleApplication.executeCommands(OConsoleApplication.java:127) 
    at com.orientechnologies.common.console.OConsoleApplication.run(OConsoleApplication.java:92) 
    at com.orientechnologies.orient.console.OConsoleDatabaseApp.main(OConsoleDatabaseApp.java:130) 

Все из правильно импортирует импорт, но он не работает с индексами. У меня есть 15+ резервных копий одной и той же базы данных, и все они имеют эту проблему, поэтому маловероятно, что все они повреждены. Как восстановить базу данных? (Я в порядке с того, чтобы изменить JSON, если needbe.)


При попытке использовать локальный режим, а не удаленном режиме, я получаю другую ошибку:

Started import of database 'local:dbname' from dbname.json... 
Importing database info...OK 
Importing clusters... 
- Creating cluster 'internal'...OK, assigned id=0 
- Creating cluster 'default'...Error on database import happened just before line 13, column 52 
com.orientechnologies.orient.core.exception.OConfigurationException: Imported cluster 'default' has id=3 different from the original: 2. To continue the import drop the cluster 'manindex' that has 1 records 
    at com.orientechnologies.orient.core.db.tool.ODatabaseImport.importClusters(ODatabaseImport.java:544) 
    at com.orientechnologies.orient.core.db.tool.ODatabaseImport.importDatabase(ODatabaseImport.java:130) 
    at com.orientechnologies.orient.console.OConsoleDatabaseApp.importDatabase(OConsoleDatabaseApp.java:1414) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at com.orientechnologies.common.console.OConsoleApplication.execute(OConsoleApplication.java:269) 
    at com.orientechnologies.common.console.OConsoleApplication.executeCommands(OConsoleApplication.java:157) 
    at com.orientechnologies.common.console.OConsoleApplication.run(OConsoleApplication.java:97) 
    at com.orientechnologies.orient.graph.console.OGremlinConsole.main(OGremlinConsole.java:53) 

Error: com.orientechnologies.orient.core.db.tool.ODatabaseExportException: Error on importing database 'dbname' from file: dbname.json 
Error: com.orientechnologies.orient.core.exception.OConfigurationException: Imported cluster 'default' has id=3 different from the original: 2. To continue the import drop the cluster 'manindex' that has 1 records 

Похоже, проблема заключается в том, что мои старые идентификаторы кластера не соответствуют тем, которые содержатся в новой базе данных. Возможно, существуют варианты создания, которые влияют на создание кластеров по умолчанию?

+0

В какой версии OrientDB вы пытаетесь импортировать экспорт? – wolf4ood

+0

Попробуйте повторно импортировать базу данных, используя plocal, а не удаленный. Поэтому остановите сервер и создайте базу данных в своем локальном каталоге. – Lvca

+0

Извините, я должен был сделать это более ясным: я использую версию 1.2.0 для импорта резервной копии (той же версии, которая создала резервную копию). @Lvca, я пробовал использовать локальный режим и получил несколько другую ошибку, которую добавил к вопросу. – GJK

ответ

0

Оказывается, проблема заключалась в том, что база данных импортировалась с помощью OrientDB версии 1.2.0, но была создана с 1.0.1 (или 1.0.0). Файл JSON перечислил версию 1.2.0 как engine-version, но это был движок, который его поддерживал, а не создал. После того, как я попробовал предложение Lvca об использовании локального режима, я обнаружил, что идентификаторы кластера не совпадают. Оттуда я догадался, что номера версий могут быть неверными. Поэтому кажется, что, хотя я работал с базой данных с использованием сервера 1.2.0 и библиотеки Java 1.2.0, база данных никогда не обновлялась, чтобы использовать новую схему 1.2.0.

Благодаря Lvca для подталкивания в правильном направлении.

Смежные вопросы