3

我正在四个 PostgreSQL 工作人员之间设置双向复制,我想让我的 Go 数据库连接池处理与所有四个工作人员的连接。它应该能够为它们创建多个连接,为任何给定的查询随机选择一个,并在连接断开时进行故障转移。这在 Go 数据库中可行吗?还是我应该只使用pgBouncer而不是尝试让数据库/sqlpgx来处理这种平衡?

4

1 回答 1

5

每当您调用时都会创建 golang 中的连接池sql.Open(driverName, dataSourceName),其中dataSourceName驱动程序特定configuration于连接到数据库。每当我们更改configuration(即更改主机地址、模式、用户名等)时,我们都需要打开新连接,因此将创建新的连接池。如果驱动程序可以处理负载平衡,它应该是可配置的dataSourceName,例如在MariaDB Connector/J高可用性配置中。

AFAIK, lib/pqpgx尚不支持负载平衡。在您的情况下,要连接到集群中的数据库服务器,您需要为每个服务器打开不同的连接池,然后手动管理连接(并执行负载平衡)。这种方法需要做很多工作。我认为最好使用 pgBouncer。

于 2017-04-27T03:18:09.097 回答