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
Plan for restart
Changing wal_level requires a restart. Plan accordingly:
ALTER SYSTEM SET wal_level = 'replica';Restart PostgreSQL
Stop and start the server:
pg_ctl restart -D /path/to/dataVerify the change
After restart:
SHOW wal_level;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