I'm setting up bi-direction replication between four PostgreSQL workers, and I'd like to have my Go database connection pool handle connections to all four. It ought to be able to create multiple connections to them all, randomly select one for any given query, and fail over when a connection drops. Is this doable in the Go database library? Or should I just use pgBouncer and not try to get database/sql or pgx to handle that balancing?
How do I get a Golang Database connection pool to manage connections to multiple hosts in a cluster?
9k Views Asked by theory At
1
There are 1 best solutions below
Related Questions in POSTGRESQL
- Only the first SQL script gets executed inside Docker Postgres container
- Compare fields in two tables
- Hibernate ClobJdbcType bindings: what are the diferences?
- Postgres && statement Error in Mybatis Mapper?
- Can this query be optimized? (Choosing a random row to insert, that excludes previously inserted Rows)
- Connection terminated unexpectedly while performing multi row insert using pg-promise
- Processing multiple forms in nodejs and postgresql
- How to copy data from SQLite to postgreSQL?
- PGAdmin4 configured behind a reverse proxy but unable to connect to Postgresql server
- Updates to pgsodium encrypted values don't use specified key_id
- Connecting to Postgres running in a Docker container using psql
- Can't connect to local postgresql server from my docker container
- Django Arrayfield migration to cloud sql (Postgresql) not creating the column
- Get list of matching keywords for each post
- docker-compose can't reset postgresql database
Related Questions in GO
- Go Fiber and HTMX - HX-Trigger header is changed to Hx-Trigger, which is not what HTMX is listening for
- Golang == Error: OCI runtime create failed: unable to start container process: exec: "./bin": stat ./bin: no such file or directory: unknown
- Handling both JSON and form values in POST request body with unknown values in Golang
- invalid transaction: Transaction failed to sanitize accounts offsets correctly
- Golang lambda upload image into s3 static website
- Is there a way to get a list of selected module versions, but only for modules within the pruned graph?
- Save Interface in DB golang
- ERROR: column "country" is of type text[] but expression is of type record (SQLSTATE 42804)
- Trying to update the version.go file with the release tag from GitHub actions but its failing
- How can I optimize this transposition table for connect 4 AI?
- const declaration - How to evaluate expressions at compile time?
- How add array of authors for unique user in database in Goland IDE?
- Why is the main goroutine not blocked after write in unbuffered channel?
- Insert & Retrieve from a channel in same main function throws "goroutine 1 [chan receive]: main.main() /path exit status 2" error
- Gob error when decoding array of structs: decoding into local type but received remote type
Related Questions in REPLICATION
- Which column to use for ordering change data read from change tables in SQL Server?
- Postgresql Database Replicate Using Docker-Compose File
- PG_chameleon during start replica turns columns into UNKNOWN_COL{number}
- Consistency of replicated map across cluster nodes
- DB Replicating from different publisher to a sing subscriber
- How to route different db requests to read only instance
- Replication postgresql database error connection between master to standby
- mongodb statefulset pods restarting without any useful error during replication
- Snapshots in Logical Decoding
- SQL Server replication: Need to remove articles from the publication
- TSQL query for transactional replication log reader agent account in SQL Server
- Does PostgresSQL 16 support Active Active replication ? I am using the free version
- Invoke-Command to a DC for replication not working in Windows 11
- Postgres connection failed while Debezium connector streaming changes
- How to Achieve Master-Master Replication in MongoDB for Two Databases in Different Locations?
Related Questions in CONNECTION-POOLING
- How to configure connection pool c3p0 hibernate most efficiently for remote connection mySql
- Failed to connect to docker container running Postgres via pgbouncer
- How to establish connection pooling for HTTP Requests Lambda function attached to AWS API gateway?
- morphia client always makes more than 1 connection
- context deadline exceeded (Client.Timeout exceeded while awaiting headers)
- How to know DriverManagerDataSource has a connection pool
- How to view connection pool activity within Snowflake re: Looker?
- Why does connection pooling not work with pyodbc in my Linux image?
- SQLAlchemy QueuePool Overflow Issue in FastAPI Application with Uvicorn
- r2dbc-pool: Using the r2dbc connection pool slows down the execution of parallel transactions
- Jboss default idletimeout minutes if not mentioned
- How to efficiently define connection pool for multiple data sources with single database per tenant, in spring boot
- How to notify to reset tcp connection from target
- How to export Connection pool metrics of Tomcat like NumActive, NumIdle, MaxTotal via JMX exporte?
- AWS RDS Proxy avoid pinned connection with mysql and prepared statements
Related Questions in POSTGRESQL-BDR
- Rails' DelayedJob for a multi-master setup
- PostgreSQL BDR issues with replication slots
- Django + PostgreSQL with bi-directional replication
- PostgreSQL & BDR: Is BDR truly multi-master, is it Open Source and EOL for 1.x in 2019?
- Postgres: increasing the bdr.max_databases variable fails
- Couldn't install BDR-postgres on centos7
- Database is locked against ddl by another node in postgresql BDR
- what is better in my case Postgres BDR or Postgres-XL?
- BDR Replication
- How do I get a Golang Database connection pool to manage connections to multiple hosts in a cluster?
- Stop BDR from replicating DROP TABLE or CREATE TABLE
- Custom guc variables not set properly
- ERROR: establish BDR: FATAL: no pg_hba.conf entry for replication connection from host "[local]", user "postgres"
- How good is BDR for production Postgres sync?
- bdr_init_copy hangs indefinitely
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Connection pool in golang is created whenever you call
sql.Open(driverName, dataSourceName), wheredataSourceNameis driver specificconfigurationfor connecting to database. Whenever we change theconfiguration(i.e. changing host address, schema, username, etc) we need to open new connection, thus new connection pool will be created. If a driver can handle load balancing, it should be configurable indataSourceName, e.g. as in MariaDB Connector/J high availability configuration.AFAIK, load balancing not yet supported in lib/pq and pgx. In your case, to connect to database servers in cluster, you need to open different connection pool for each server, then manage the connections (and perform load balancing) manually. This approach needs a lot of work to be done. I think it is better to use pgBouncer.