ArangoDB - резервное копирование и восстановление всех данных

Моя цель — создать дамп базы данных 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 

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

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

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
5
0
1 165
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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, что должно значительно упростить процесс резервного копирования и восстановления.

Большое спасибо! ArangoDB 3.5 уже выпущен? Не могу найти

dice2011 28.05.2019 12:48

Чтобы снять дамп с удаленного или локального сервера, выполните команду

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"

Другие вопросы по теме