I have 2 DB instances, 1 master node1
1 read replica node2
.
I have 2 apps. 1 for writing app1
one for reading app2
Here is the connection string for app1
jdbc:postgresql://node1,node2/db?targetServerType=primary
.
Here is the connection string for app2
jdbc:postgresql://node1,node2/db?targetServerType=preferSecondary
.
When node1
fails, and node2
gets promoted to master, will jdbc driver in app1
auto connect to the node2
for writing? Will the jdbc driver in app2
start checking if a read replica exist and switch traffic if so (when node1
come up)?
The client connected to the failed primary server will connect to the promoted standby when it tries to reconnect. (But you must write the application so that it tries to reconnect.)
The client connected to the standby will stay connected when the standby is promoted. It won't switch over to a new standby server, unless you do that deliberately in your application. To test if you are connected to a standby server, you can run
That will return
TRUE
on the standby.