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