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

标签 postgresql go replication connection-pooling postgresql-bdr

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

最佳答案

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

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

关于postgresql - 如何获取 Golang 数据库连接池来管理集群中多台主机的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599172/

相关文章:

sql - 请解释为什么脚本以这种方式工作

去选择 channel 并收集结果

谷歌表格 API : golang BatchUpdateValuesRequest

spring - 无法获取 MongoDbConnectionException : Failed to authenticate to database

CouchDB 复制覆盖文档

elasticsearch - 我们如何知道 elasticsearch 中的复制状态?

sql - 在 PostgreSQL 中,如何根据分类列中每个级别的比例从表中随机抽样?

python - Postgres 引发 "ACTIVE SQL TRANSACTION"(错误代码 : 25001)

json - Postgres 10,从包含json对象数组的json对象中选择

mongodb - golang上的mongo随机记录