From f6d6d2920d2cddc4b381cbbf2915db9d985d20a9 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Sat, 14 Jan 2017 17:14:56 +0100 Subject: [PATCH] Change default values for backup and replication parameters This changes the default values of the following parameters: wal_level = replica max_wal_senders = 10 max_replication_slots = 10 in order to make it possible to make a backup and set up simple replication on the default settings, without requiring a system restart. Discussion: https://postgr.es/m/CABUevEy4PR_EAvZEzsbF5s+V0eEvw7shJ2t-AUwbHOjT+yRb3A@mail.gmail.com Reviewed by Peter Eisentraut. Benchmark help from Tomas Vondra. --- doc/src/sgml/backup.sgml | 3 ++- doc/src/sgml/config.sgml | 16 ++++++++-------- src/backend/utils/misc/guc.c | 6 +++--- src/backend/utils/misc/postgresql.conf.sample | 6 +++--- src/test/modules/commit_ts/t/002_standby.pl | 1 - src/test/modules/commit_ts/t/003_standby_2.pl | 1 - src/test/perl/PostgresNode.pm | 6 +++++- src/test/recovery/t/006_logical_decoding.pl | 1 - src/test/recovery/t/008_fsm_truncation.pl | 1 - 9 files changed, 21 insertions(+), 20 deletions(-) diff --git a/doc/src/sgml/backup.sgml b/doc/src/sgml/backup.sgml index 6eaed1efbe..d7df91090d 100644 --- a/doc/src/sgml/backup.sgml +++ b/doc/src/sgml/backup.sgml @@ -1420,7 +1420,8 @@ restore_command = 'cp /mnt/server/archivedir/%f %p' If more flexibility in copying the backup files is needed, a lower level process can be used for standalone hot backups as well. - To prepare for low level standalone hot backups, set wal_level to + To prepare for low level standalone hot backups, make sure + wal_level is set to replica or higher, archive_mode to on, and set up an archive_command that performs archiving only when a switch file exists. For example: diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 30dd54cd5d..07afa3c77a 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -2183,12 +2183,12 @@ include_dir 'conf.d' - wal_level determines how much information is written - to the WAL. The default value is minimal, which writes - only the information needed to recover from a crash or immediate - shutdown. replica adds logging required for WAL - archiving as well as information required to run - read-only queries on a standby server. Finally, + wal_level determines how much information is written to + the WAL. The default value is replica, which writes enough + data to support WAL archiving and replication, including running + read-only queries on a standby server. minimal removes all + logging except the information required to recover from a crash or + immediate shutdown. Finally, logical adds information necessary to support logical decoding. Each level includes the information logged at all lower levels. This parameter can only be set at server start. @@ -2926,7 +2926,7 @@ include_dir 'conf.d' Specifies the maximum number of concurrent connections from standby servers or streaming base backup clients (i.e., the maximum number of simultaneously running WAL sender - processes). The default is zero, meaning replication is + processes). The default is 10. The value 0 means replication is disabled. WAL sender processes count towards the total number of connections, so the parameter cannot be set higher than . Abrupt streaming client @@ -2951,7 +2951,7 @@ include_dir 'conf.d' Specifies the maximum number of replication slots (see ) that the server - can support. The default is zero. This parameter can only be set at + can support. The default is 10. This parameter can only be set at server start. wal_level must be set to replica or higher to allow replication slots to diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 5b23dbf4a0..4e2bd4c496 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -2315,7 +2315,7 @@ static struct config_int ConfigureNamesInt[] = NULL }, &max_wal_senders, - 0, 0, MAX_BACKENDS, + 10, 0, MAX_BACKENDS, NULL, NULL, NULL }, @@ -2326,7 +2326,7 @@ static struct config_int ConfigureNamesInt[] = NULL }, &max_replication_slots, - 0, 0, MAX_BACKENDS /* XXX? */ , + 10, 0, MAX_BACKENDS /* XXX? */ , NULL, NULL, NULL }, @@ -3749,7 +3749,7 @@ static struct config_enum ConfigureNamesEnum[] = NULL }, &wal_level, - WAL_LEVEL_MINIMAL, wal_level_options, + WAL_LEVEL_REPLICA, wal_level_options, NULL, NULL, NULL }, diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b3f29610d0..15669b83c7 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -174,7 +174,7 @@ # - Settings - -#wal_level = minimal # minimal, replica, or logical +#wal_level = replica # minimal, replica, or logical # (change requires restart) #fsync = on # flush data to disk for crash safety # (turning this off can cause @@ -229,12 +229,12 @@ # Set these on the master and on any standby that will send replication data. -#max_wal_senders = 0 # max number of walsender processes +#max_wal_senders = 10 # max number of walsender processes # (change requires restart) #wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables #wal_sender_timeout = 60s # in milliseconds; 0 disables -#max_replication_slots = 0 # max number of replication slots +#max_replication_slots = 10 # max number of replication slots # (change requires restart) #track_commit_timestamp = off # collect timestamp of transaction commit # (change requires restart) diff --git a/src/test/modules/commit_ts/t/002_standby.pl b/src/test/modules/commit_ts/t/002_standby.pl index 4dbde2978e..ff60044540 100644 --- a/src/test/modules/commit_ts/t/002_standby.pl +++ b/src/test/modules/commit_ts/t/002_standby.pl @@ -15,7 +15,6 @@ $master->append_conf( 'postgresql.conf', qq{ track_commit_timestamp = on max_wal_senders = 5 - wal_level = hot_standby }); $master->start; $master->backup($bkplabel); diff --git a/src/test/modules/commit_ts/t/003_standby_2.pl b/src/test/modules/commit_ts/t/003_standby_2.pl index 043ccb14a5..1775b22dad 100644 --- a/src/test/modules/commit_ts/t/003_standby_2.pl +++ b/src/test/modules/commit_ts/t/003_standby_2.pl @@ -14,7 +14,6 @@ $master->append_conf( 'postgresql.conf', qq{ track_commit_timestamp = on max_wal_senders = 5 - wal_level = hot_standby }); $master->start; $master->backup($bkplabel); diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm index d8be1bd3e1..932478183a 100644 --- a/src/test/perl/PostgresNode.pm +++ b/src/test/perl/PostgresNode.pm @@ -415,7 +415,6 @@ sub init if ($params{allows_streaming}) { - print $conf "wal_level = replica\n"; print $conf "max_wal_senders = 5\n"; print $conf "wal_keep_segments = 20\n"; print $conf "max_wal_size = 128MB\n"; @@ -424,6 +423,11 @@ sub init print $conf "hot_standby = on\n"; print $conf "max_connections = 10\n"; } + else + { + print $conf "wal_level = minimal\n"; + print $conf "max_wal_senders = 0\n"; + } if ($TestLib::windows_os) { diff --git a/src/test/recovery/t/006_logical_decoding.pl b/src/test/recovery/t/006_logical_decoding.pl index b80a9a9415..1716360a17 100644 --- a/src/test/recovery/t/006_logical_decoding.pl +++ b/src/test/recovery/t/006_logical_decoding.pl @@ -10,7 +10,6 @@ my $node_master = get_new_node('master'); $node_master->init(allows_streaming => 1); $node_master->append_conf( 'postgresql.conf', qq( -max_replication_slots = 4 wal_level = logical )); $node_master->start; diff --git a/src/test/recovery/t/008_fsm_truncation.pl b/src/test/recovery/t/008_fsm_truncation.pl index 9f6bdb0b64..5220611e44 100644 --- a/src/test/recovery/t/008_fsm_truncation.pl +++ b/src/test/recovery/t/008_fsm_truncation.pl @@ -14,7 +14,6 @@ $node_master->init(allows_streaming => 1); $node_master->append_conf('postgresql.conf', qq{ fsync = on -wal_level = replica wal_log_hints = on max_prepared_transactions = 5 autovacuum = off -- 2.40.0