问题:如何获取Golang数据库连接池来管理集群中多台主机的连接?

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

解答

sql.Open(driverName, dataSourceName)dataSourceNameconfigurationconfigurationdataSourceName

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