我在本地运行ArangoDB,其中包含来自其中几个不同项目的数据库,集合,数据和图形。我想备份所有内容,以便重建我的系统。我知道如何备份单个数据库,但因为我有一堆我希望一次性完成这项工作。
基本上,我正在寻找与ArangoDB相当的
mysqldump -u root -p --all-databases > alldb.sql
显然ArangoDB相当于
mysql -u root -p < alldb.sql
也很高兴知道。
答案 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 数据库的数据库用户,以便在还原时创建数据库。