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.
minimal level, WAL-logging of some bulk operations can be safely skipped, which can make those operations much faster (see populate-pitr). Operations in which this optimization can be applied include:
- CREATE TABLE AS
- CREATE INDEX
- COPY into tables that were created or truncated in the same transaction
replicaor higher must be used to enable WAL archiving (archive_mode) and streaming replication.
logical level, the same information is logged as with
replica, plus information needed to allow extracting logical change sets from the WAL. Using a level of
logical will increase the WAL volume, particularly if many tables are configured for
REPLICA IDENTITY FULL and many UPDATE and DELETE statements are executed.
In releases prior to 9.6, this parameter also allowed the values
hot_standby. These are still accepted but mapped to
- Can I change the wal_level from logical to replica? If so are any impact on the replication?
- pg_bulkload error: "FATAL: unrecognized configuration parameter "wal_level""
- Postgres FATAL: hot standby is not possible because wal_level was not set to "replica" or higher on the master server
- Postgres replication not starting due to wal error
- How to change postgres docker image wal level on setup?