Warning Configuration

WAL Level Minimal

WAL level is set to minimal, which disables replication and prevents point-in-time recovery.

What is this issue?

PostgreSQL's wal_level controls how much information is written to WAL:

- minimal: Just enough for crash recovery (no replication)
- replica: Supports streaming replication and PITR
- logical: Adds logical decoding for logical replication

With wal_level = minimal:
- No streaming replication possible
- No point-in-time recovery (PITR)
- No logical replication or CDC
- Limited to crash recovery only

Why it matters

No Replication

Cannot create read replicas or hot standbys

No PITR

Cannot recover to a specific point in time

No CDC

Cannot use logical replication or tools like Debezium

Limited DR

Disaster recovery options severely limited

How PG Pilot detects it

```sql
SELECT name, setting
FROM pg_settings
WHERE name = 'wal_level';
```

How to fix it

1

Plan for restart

Changing wal_level requires a restart. Plan accordingly:

ALTER SYSTEM SET wal_level = 'replica';
2

Restart PostgreSQL

Stop and start the server:

pg_ctl restart -D /path/to/data
3

Verify the change

After restart:

SHOW wal_level;
4

Set up archiving (optional)

For PITR, also configure WAL archiving:

ALTER SYSTEM SET archive_mode = on;
ALTER SYSTEM SET archive_command = 'cp %p /archive/%f';

Prevention

  • Set wal_level = 'replica' for all production databases
  • Use 'logical' if logical replication is needed
  • Only use 'minimal' for development/testing

Related Issues

Related Features

PostgreSQL Documentation