我正在四个 PostgreSQL 工作人员之间设置双向复制,我想让我的 Go 数据库连接池处理与所有四个工作人员的连接。它应该能够为它们创建多个连接,为任何给定的查询随机选择一个,并在连接断开时进行故障转移。这在 Go 数据库中可行吗?还是我应该只使用pgBouncer而不是尝试让数据库/sql或pgx来处理这种平衡?
问问题
7158 次
1 回答
5
每当您调用时都会创建 golang 中的连接池sql.Open(driverName, dataSourceName)
,其中dataSourceName
驱动程序特定configuration
于连接到数据库。每当我们更改configuration
(即更改主机地址、模式、用户名等)时,我们都需要打开新连接,因此将创建新的连接池。如果驱动程序可以处理负载平衡,它应该是可配置的dataSourceName
,例如在MariaDB Connector/J高可用性配置中。
AFAIK, lib/pq和pgx尚不支持负载平衡。在您的情况下,要连接到集群中的数据库服务器,您需要为每个服务器打开不同的连接池,然后手动管理连接(并执行负载平衡)。这种方法需要做很多工作。我认为最好使用 pgBouncer。
于 2017-04-27T03:18:09.097 回答