mirror of
https://github.com/postgres/postgres.git
synced 2025-10-15 05:46:52 +03:00
Allow logical decoding on standbys
Unsurprisingly, this requires wal_level = logical to be set on the primary and standby. The infrastructure added in26669757b6
ensures that slots are invalidated if the primary's wal_level is lowered. Creating a slot on a standby waits for a xl_running_xact record to be processed. If the primary is idle (and thus not emitting xl_running_xact records), that can take a while. To make that faster, this commit also introduces the pg_log_standby_snapshot() function. By executing it on the primary, completion of slot creation on the standby can be accelerated. Note that logical decoding on a standby does not itself enforce that required catalog rows are not removed. The user has to use physical replication slots + hot_standby_feedback or other measures to prevent that. If catalog rows required for a slot are removed, the slot is invalidated. See6af1793954
for an overall design of logical decoding on a standby. Bumps catversion, for the addition of the pg_log_standby_snapshot() function. Author: "Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com> Author: Andres Freund <andres@anarazel.de> (in an older version) Author: Amit Khandekar <amitdkhan.pg@gmail.com> (in an older version) Reviewed-by: Andres Freund <andres@anarazel.de> Reviewed-by: FabrÌzio de Royes Mello <fabriziomello@gmail.com> Reviewed-by: Amit Kapila <amit.kapila16@gmail.com> Reviewed-By: Robert Haas <robertmhaas@gmail.com>
This commit is contained in:
@@ -4469,6 +4469,17 @@ LocalProcessControlFile(bool reset)
|
||||
ReadControlFile();
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the wal_level from the control file. For a standby, this value should be
|
||||
* considered as its active wal_level, because it may be different from what
|
||||
* was originally configured on standby.
|
||||
*/
|
||||
WalLevel
|
||||
GetActiveWalLevelOnStandby(void)
|
||||
{
|
||||
return ControlFile->wal_level;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialization of shared memory for XLOG
|
||||
*/
|
||||
|
Reference in New Issue
Block a user