ArangoDB - Резервное копирование и восстановление всех данных - PullRequest
2 голосов
/ 28 мая 2019

Моя цель - создать дамп базы данных arango (со всеми пользователями и паролями, разрешениями, базами данных, коллекциями, ролями и т. Д.), А затем полностью восстановить эти данные на другом сервере arango (который был установлен сну и пусто).

Я использую конфигурацию с одним узлом, версия arangodb: 3.4.4 [linux] .

По происхождению я делаю дамп каждогобаза данных:

USER=root
PASSWORD=***
for db in $(arangosh --server.username "$USER" --server.password "$PASSWORD" --javascript.execute-string "db._databases().forEach(function(db) { print(db); });")
do
  arangodump --output-directory /tmp/dump/"$db" --overwrite true --server.username "$USER" --server.password "$PASSWORD" --include-system-collections --server.database "$db"
done

Затем я перемещаю созданные папки на пустой сервер arangodb на этом сервере:

arangorestore --input-directory "/tmp/dump/_system/"
arangorestore --input-directory "/tmp/dump/collection/"
arangorestore --input-directory "/tmp/dump/collection2/"
...one by one 

В результате, если мои ожидания очень далеки, я просто получаю коллекциив базе данных _system для пользователя root (без других пользователей, без баз данных).

Что я делаю не так?Как сделать полное резервное копирование и восстановление?

Заранее спасибо.

1 Ответ

2 голосов
/ 28 мая 2019

arangorestore необходимо указать, в какую базу данных восстанавливать данные. Это может быть достигнуто путем предоставления опции --server.database таким же образом, как это может быть сделано для arangodump. Если для --server.database значение не указано, по умолчанию оно будет равно _system, что означает, что каждый последующий вызов arangorestore будет перезаписывать предыдущие данные в базе данных _system.

Если целевые базы данных еще не существуют на сервере резервного копирования, их можно создать на лету, используя опцию --create-database true. Кроме того, для восстановления системных коллекций arangorestore необходимо указать параметр --include-system-collections true.

Это означает, что если ваши базы данных действительно называются «collection» и «collection2», ваши команды восстановления должны выглядеть следующим образом:

arangorestore --input-directory "/tmp/dump/_system/" --server.database "_system" --include-system-collections true --create-database true
arangorestore --input-directory "/tmp/dump/collection/" --server.database "collection" --include-system-collections true --create-database true
arangorestore --input-directory "/tmp/dump/collection2/" --server.database "collection2" --include-system-collections true --create-database true

Также обратите внимание, что в ArangoDB 3.5 есть опция --all-databases для arangodump и arangorestore, которая должна значительно упростить процесс резервного копирования и восстановления.

...