如何使用ArangoDB转储所有数据库

时间:2018-05-31 02:22:13

标签: arangodb database-backups

我在本地运行ArangoDB,其中包含来自其中几个不同项目的数据库,集合,数据和图形。我想备份所有内容,以便重建我的系统。我知道如何备份单个数据库,但因为我有一堆我希望一次性完成这项工作。

基本上,我正在寻找与ArangoDB相当的

mysqldump -u root -p --all-databases > alldb.sql

显然ArangoDB相当于

mysql -u root -p < alldb.sql

也很高兴知道。

3 个答案:

答案 0 :(得分:0)

从版本3.3开始,arangodump不支持一次性转储所有数据库。这是每个数据库。

为了使其转储所有数据库,可以在所有数据库的循环中调用它,例如

# loop over all databases
for db in `arangosh --javascript.execute-string "db._databases().forEach(function(db) { print(db); });"` # host, user and password go here...
  do
    arangodump --sever.database "$db" # host, user and password go here...
  done

如果有一个用户拥有所有数据库的访问权限,这将有效。

答案 1 :(得分:0)

虽然先前的脚本几乎是正确的,但是它不能用于多个数据库,因为它将开始抱怨转储目录,并要求您将DECLARE @dateTo AS DATE = '01.01.2018' DECLARE @tank_Id int = null SELECT sum(field_1 - field_2) FROM myTable WHERE dt < @dateTo AND ( tank_id = @tank_id OR @tank_id IS NULL ) 添加到命令中。这将无法正常运行,因为它只会输出最新的数据库。

我们使用以下脚本,该脚本与stj的答案稍有不同(或者至少以下是备份过程的一部分),以获取我们拥有的所有数据库的转储:

--overwrite true

答案 2 :(得分:0)

我遇到了这个线程,看到有很多自定义解决方案。只想提一下:

从 Arango v.3.5.0 开始,arangodump(以及 arangorestore)支持 --all-databases true 参数

<块引用>

arangodump 有一个选项 --all-databases 使其转储所有可用的数据库,而不仅仅是通过选项 --server.database 指定的单个数据库。

当设置为 true 时,这会使 arangodump 转储当前用户有权访问的所有可用数据库。选项 --all-databases 不能与选项 --server.database 结合使用。

当使用--all-databases 时,arangodump 将创建一个子目录,其中包含每个转储数据库的数据。数据库将一个后转储。但是,在每个数据库内部,可以使用多个线程并行转储数据库的集合。转储所有数据库时,arangodump 的一致性保证与单独转储多个单个数据库时相同,因此转储不提供数据的跨库一致性。

arangorestore 有一个选项 --all-databases 使其从指定转储目录的子目录中恢复所有数据库,而不仅仅是通过选项 --server.database 指定的单个数据库。

使用 arangorestore 选项仅对使用 arangodump 和 --all-databases 选项创建的转储有意义。对于 arangodump,不能同时使用 --all-databases 和 --server.database 这两个选项调用 arangorestore。此外,选项 --force-same-database 不能与 --all-databases 一起使用。

如果目标服务器上不存在要恢复的数据库,则将数据恢复到其中将失败,除非还为 arangorestore 指定了 --create-database 选项。请注意,在这种情况下,必须使用有权访问 _system 数据库的数据库用户,以便在还原时创建数据库。

参考:https://www.arangodb.com/docs/stable/release-notes-new-features35.html#dump-and-restore-all-databases