代码之家  ›  专栏  ›  技术社区  ›  mikewilliamson

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

  •  3
  • mikewilliamson  · 技术社区  · 7 年前

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

    基本上,我在找相当于

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

    显然,arangodb等价于

    mysql -u root -p < alldb.sql
    

    我也很想知道。

    2 回复  |  直到 7 年前
        1
  •  1
  •   stj    7 年前

    从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
    

    如果有一个用户对所有数据库都具有访问权限,则此操作将起作用。

        2
  •  0
  •   Jos Dirksen    7 年前

    虽然前面的脚本几乎是正确的,但它不能用于多个数据库,因为它将开始抱怨转储目录,并要求您添加 --overwrite true 命令。这不会起到很好的作用,因为它只输出最新的数据库。

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

    USER=...
    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 ~/dump/"$db" --overwrite true --server.username "$USER" --server.password "$PASSWORD" --server.database "$db" 
    done