On Sun, Nov 24, 2024 at 09:35:15PM +0530, Subhash Udata wrote:
> Dear PostgreSQL Community,
>
> I have a production database setup with a primary server and a standby
> server. The database is currently running on PostgreSQL 15.0, and I plan
> to upgrade both servers to 15.9.
>
> I have the following questions regarding the upgrade and replication
> process:
>
> 1. Upgrade and Replication Compatibility:
>
> * My plan is to perform a failover, promote the standby server
> (currently 15.0) to primary, and then upgrade the old primary
> server to version 15.9.
1) Why do you want to use a switchover first?
You can upgrade the standby, then switchover to it.
(You could even don't switchover back, when the old primary
would be upgraded and synchonized).
> * After upgrading the old primary server to version 15.9, I want to
> configure it as a standby server and set up streaming replication
> with the new primary server, which will still be running version
> 15.0.
> * Is it possible to establish streaming replication between these
> two versions (15.0 as primary and 15.9 as standby)?
> 2. Efficient Replication Setup:
>
> * The production database is around 1TB in size, and creating
> replication using pg_basebackup is taking more than 2-3 hours to
> complete.
> * Is there an alternative method to set up replication without
> taking a full backup of the entire cluster but instead using only
> the WAL files that have changed on both servers?
Well, there are some.
pg_rewind is one of those (you should keep all the WAL files be-
tween switchover point and now on both servers. Also, maximum one
switchover/failover AFAIK. Also, it's a bit fragile nevertheless,
bad things could happen if you mix timelines from the very
straight scenario of one switchover+pg_rewind on the old prima-
ry).
Hoewever, I'd usually use rsync+low-level backup protocol
https://www.postgresql.org/docs/15/continuous-archiving.html#BACKUP-LOWLEVEL-BASE-BACKUP
This requires some manual commands, writing backup_label and so
on -- but looks more straightforward to me.
(And yes, rsync uses block-level comparision and transfers only
change blocks.
setting block-size to 8k in rsync could be beneficial).
>
> Your guidance and recommendations on these questions will be greatly
> appreciated.
>
> Thank you for your time and support!
>
> Best regards,
>
> Subhash