我正在设置 bi-direction replication在四个 PostgreSQL 工作人员之间,我想让我的 Go 数据库连接池处理与所有四个工作人员的连接。它应该能够为它们创建多个连接,为任何给定的查询随机选择一个,并在连接断开时进行故障转移。这在 Go 数据库库中可行吗?或者我应该只使用 pgBouncer而不是试图获得 database/sql或 pgx处理这种平衡?
最佳答案
每当您调用sql.Open(driverName, dataSourceName)
时,golang 中的连接池就会创建,其中dataSourceName
是用于连接的特定于驱动程序的配置
到数据库。每当我们更改配置
(即更改主机地址、模式、用户名等)时,我们都需要打开新连接,因此将创建新连接池。如果驱动程序可以处理负载平衡,则它应该在 dataSourceName
中是可配置的,例如如 MariaDB Connector/J高可用性配置。
据我所知,lib/pq 尚不支持负载均衡和 pgx .在您的情况下,要连接到集群中的数据库服务器,您需要为每个服务器打开不同的连接池,然后手动管理连接(并执行负载平衡)。这种方法需要做很多工作。我认为使用 pgBouncer 更好。
关于postgresql - 如何获取 Golang 数据库连接池来管理集群中多台主机的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599172/