如何通过ArangoDB Go驱动程序设置ArangoDB复制

wgeznvg7  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(145)

我需要使用辅助数据库设置一个简单的复制模式。我发现使用arangosh可以通过以下命令设置它:

db._useDatabase("myDB");
require("@arangodb/replication").setupReplication({
  endpoint: "tcp://main-server:8529",
  username: "user",
  password: "pass",
  verbose: false,
  includeSystem: false,
  incremental: true,
  autoResync: false,
  autoStart: true,
  restrictType: "include",
  restrictCollections: [ "Products" ]
});

然而,此设置似乎并不持久。连接断开,或服务器重新启动使其消失。
所以,我想在我的Go程序中设置一些监控和重建复制。
我搜索了ArangoDB网站的手册页和Go驱动程序文档,但我找不到任何允许我使用驱动程序在Go中运行上述设置的东西。
另外,我没有找到如何与arangosh接口,也没有找到运行上面的JS代码并得到结果的方法。使用Go驱动程序有可能吗?

zsbz8rwp

zsbz8rwp1#

我无意中发现了一个解决办法。
Golang驱动程序不提供此功能,但Arango有一个非常简单的基于HTTP的API,允许访问数据库引擎的所有功能和特性。
下面是我使用的文档的链接:https://www.arangodb.com/docs/3.8/http/index.html(我使用的是3.8版,因为在此之后,我所需要的复制类型不再是社区版的一部分)。
设置复制只需要两个步骤:

  • 使用JSON负载将请求放置到/_db/* 您的数据库名称 */_API/replication/applier-config:
{
    "endpoint":"tcp://serverIP:8529",
    "database":"yourDBname",
    "username":"root",
    "password":"password",
    "autoResync": true,
    "autostart":true
}
  • 另一个PUT请求实际启动复制,发送到/_db/yourDBname/_API/replication/applier-start。
  • 要查看运行情况,您可以向/_db/yourDBname/_API/replication/applier-state发出GET请求

所有这些请求都需要一个JWT标记,您可以通过对/_open/auth的POST请求获得该标记,有效负载为:

{
  "username": "user",
  "password": "passwd"
}

您收到的令牌需要作为承载令牌包含在HTTP头中。非常简单。

相关问题