Thread: Best Practices for Checking PostgreSQL Server Mode with Multiple Connections
Best Practices for Checking PostgreSQL Server Mode with Multiple Connections
Hi Team,
I’m currently implementing a solution to establish more than 500 database connections to a single server to verify whether the PostgreSQL server is in read-only or read-write mode.
My current approach is to create individual database connections and execute the pg_is_in_recovery()
function for each connection to determine the mode.
I’m curious if there are any best practices or more efficient methods to achieve this.
Additionally, I’m not very familiar with Psycopg, so I would greatly appreciate any advice or suggestions on areas that might need improvement.
Looking forward to your insights!
Re: Best Practices for Checking PostgreSQL Server Mode with Multiple Connections
On 12/8/24 04:45, YoungUk Song wrote: > Hi Team, > > I’m currently implementing a solution to establish more than 500 > database connections to a single server to verify whether the PostgreSQL > server is in read-only or read-write mode. The server as whole is either in recovery or it is not, that takes one connection to determine. What are the remaining 499 connections for? > > My current approach is to create individual database connections and > execute the |pg_is_in_recovery()| function for each connection to > determine the mode. > > I’m curious if there are any best practices or more efficient methods to > achieve this. > > Additionally, I’m not very familiar with Psycopg, so I would greatly > appreciate any advice or suggestions on areas that might need improvement. > > Looking forward to your insights! > -- Adrian Klaver adrian.klaver@aklaver.com
Re: Best Practices for Checking PostgreSQL Server Mode with Multiple Connections
Thank you for your response!
I apologize for the confusion in my earlier message.
I need to check whether more than 500 different database servers (not just one) are operating in read-only or read-write mode using Psycopg.
Are there any best practices for efficiently handling this task across such a large number of servers?
Additionally, I’m considering using the target_session_attrs
parameter to solve this problem.
However, I’m unsure how to handle connection errors effectively in this context.
Specifically, I’d like to differentiate between connection failures and situations where the server is not in standby mode.
Can this be achieved using Psycopg's error-handling features, as described here: https://www.psycopg.org/psycopg3/docs/api/errors.html?
Thanks!
Thanks for your reply!
Actually, I made a mistake in my previous message. I need to check whether more than 500 different database servers (not just one) are in read-only or read-write mode using psycopg. I’m wondering if there are any best practices for checking all of them.
Also, I’m not sure, but can the
target_session_attrs
parameter be used in this situation?Thanks!
2024년 12월 9일 (월) 오전 2:10, Adrian Klaver <adrian.klaver@aklaver.com>님이 작성:On 12/8/24 04:45, YoungUk Song wrote:
> Hi Team,
>
> I’m currently implementing a solution to establish more than 500
> database connections to a single server to verify whether the PostgreSQL
> server is in read-only or read-write mode.
The server as whole is either in recovery or it is not, that takes one
connection to determine. What are the remaining 499 connections for?
>
> My current approach is to create individual database connections and
> execute the |pg_is_in_recovery()| function for each connection to
> determine the mode.
>
> I’m curious if there are any best practices or more efficient methods to
> achieve this.
>
> Additionally, I’m not very familiar with Psycopg, so I would greatly
> appreciate any advice or suggestions on areas that might need improvement.
>
> Looking forward to your insights!
>
--
Adrian Klaver
adrian.klaver@aklaver.com
Re: Best Practices for Checking PostgreSQL Server Mode with Multiple Connections
> On Dec 9, 2024, at 06:04, YoungUk Song <pidaoh@g.skku.edu> wrote: > Are there any best practices for efficiently handling this task across such a large number of servers? Out of curiosity, shouldn't something in your infrastructure know this information already? After all, something createdall these servers. That being said, you will need to open connections to the servers to determine if they are in recovery or not. You mightbe able to do a small optimization in that, when you connect, you also query to see what servers are attached to thatserver as binary replicas: you can then remove them from the list of servers that need to be checked, since you knowthey are in recovery. If you have cascaded binary replicas, however, this could end up creating more work than it solves.
Re: Best Practices for Checking PostgreSQL Server Mode with Multiple Connections
On 12/9/24 06:04, YoungUk Song wrote: > Thank you for your response! > > I apologize for the confusion in my earlier message. > > I need to check whether more than 500 different database servers (not > just one) are operating in read-only or read-write mode using Psycopg. > > Are there any best practices for efficiently handling this task across > such a large number of servers? It is a matter of looping over a set of connection settings and recording the results. To me that points at a Postgres table with the connections settings and another table that tracks the results of the connection attempts. Then it is a matter of writing code that uses psycopg to make connections using the connection data on whatever schedule you want to follow. The results of the connection are then written out to the status table. Where results can be 1) Successful connection and server mode. 2) Unsuccessful connection and connection error. > > Can this be achieved using Psycopg's error-handling features, as > described here: https://www.psycopg.org/psycopg3/docs/api/errors.html > <https://www.psycopg.org/psycopg3/docs/api/errors.html>? Yes use try/except for the connection attempts and capture the error if there is one. > > > Thanks! > -- Adrian Klaver adrian.klaver@aklaver.com