Requirement
Database Status
Primary server cluster should be “ONLINE“ and standby server cluster should be “HOT STANDBY“/”WARM STANDBY”
Drawio | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Trigger Graceful Switchover
Disable Control Center Behaviors
Disable Observer: Turn off the observer node to ensure a smooth switchover without conflicting activities
Disable Auto Update: Suspend any automatic update processes during the switchover procedure
Prepare for Sync Between Primary and Standby 1
If the backup mode is set to "Archive," generate a new WAL file as a reference point for synchronization checks
Code Block SELECT * from pg_switch_wal()
Otherwise skip
Stop Original Primary Cluster
Prepare for Sync Between Primary and Standby 2
If the backup mode is "Archive," skip this step as it's already done in step 3
If the backup mode is "Log Shipping," transmit all unapplied WAL files to the standby server via dbvnet
Code Block start_lsn: can be retrieved from backupInfo end_lsn: pg_controldata -D dataDir Any wal file with LSN: LSN > start_lsn && LSN <= end_lsn
If the backup mode is "Streaming," there's no need to sync as the WAL sync is accomplished before the primary cluster shutdown
Update Original Primary PostgreSQL Configuration
Adjust the original primary PostgreSQL configuration based on the backup mode. Convert its role to become the new standby database.
Sync Between Primary and Standby for Switchover 1
If the backup mode is "Archive," wait for the WAL file generated in step 3 to be applied in the original standby database.
Otherwise skip
Sync Between Primary and Standby for Switchover 2
If the backup mode is "Log Shipping," apply the WAL file transferred in step 5 to the original standby database.
Otherwise skip
Stop Original Standby Cluster
Update Original Standby PostgreSQL Configuration
Modify the original standby PostgreSQL configuration according to the backup mode, converting its role to the new primary database
Switch Role and Persist New Configuration Data
Start New Primary DatabaseCluster
Refresh Replication Slot on Primary Cluster (if Streaming Backup)
Code Block |
---|
SELECT * FROM pg_drop_replication_slot($1) WHERE EXISTS (SELECT * FROM pg_replication_slots WHERE slot_name = SLOT_NAME) SELECT * FROM pg_create_physical_replication_slot(SLOT_NAME, false, false) |
Start New Standby DatabaseCluster
Prepare for Sync validation Between Primary and Standby
If the backup mode is "Archive," create a new WAL file as a reference for synchronization checks.
If the backup mode is "Log Shipping," generate a new WAL file and transfer it to the new standby servercluster.
If the backup mode is "Streaming," verify that the current LSN on the new primary is applied in the new standby database.
Sync Between Primary and Standby for Validation 1
If the backup mode is "Archive," wait for the WAL file generated in step 15 to be applied in the new standby database.
Otherwise skip
Sync Between Primary and Standby for Validation 2
If the backup mode is "Log Shipping," apply the WAL file transferred in step 15 to the new standby database.
Otherwise skip
Enable Control Center Behaviors
Enable Observer
Enable Auto Update: Restore the automatic update processes
Execute User Script on New Primary and Standby Servers
Run any necessary user scripts on the new primary server and new standby servers server to complete the switchover process.
...