Моя цель — создать дамп базы данных arango (со всеми пользователями и паролями, разрешениями, базами данных, коллекциями, ролями и т. д.), а затем выполнить полное восстановление этих данных на другом сервере arango (который был установлен с нуля и пуст ).
Я использую конфигурацию с одним узлом, версия arangodb — 3.4.4 [линукс].
По происхождению я делаю дамп каждой базы данных:
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
Результат, если мои ожидания очень далеки, я просто получаю коллекции в базе данных _система для пользователя корень (без других пользователей, без баз данных).
Что я делаю неправильно? Как я могу сделать полную резервную копию и восстановить?
Заранее спасибо.
arangorestore
необходимо указать, в какую базу данных восстанавливать данные. Этого можно добиться, предоставив опцию --server.database
так же, как это можно сделать для arangodump
.
Если для --server.database
не указано значение, по умолчанию будет _system
, что означает, что каждый последующий вызов arangorestore перезапишет предыдущие данные в базе данных _system
.
Если целевые базы данных еще не существуют на резервном сервере, их можно создать на лету с помощью опции --create-database true
.
Кроме того, для восстановления системных коллекций arangorestore
необходимо указать параметр --include-system-collections true
.
Это означает, что если ваши базы данных действительно называются «коллекция» и «коллекция2», ваши команды восстановления должны выглядеть следующим образом:
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, что должно значительно упростить процесс резервного копирования и восстановления.
Чтобы снять дамп с удаленного или локального сервера, выполните команду
arangodump --server.endpoint tcp://ip_address:8529 --server.username test --server.password test --server.database dev --output-directory "dump"
Для восстановления из дампа выполните следующую команду
rangorestore --server.endpoint tcp://ip_address:8529 --server.username test --server.password test --server.database dev --input-directory "dump"
Большое спасибо! ArangoDB 3.5 уже выпущен? Не могу найти