Docs / Backup & Recovery / PostgreSQL Point-in-Time Recovery Setup

PostgreSQL Point-in-Time Recovery Setup

By Admin · Mar 30, 2026 · Updated Apr 24, 2026 · 8 views · 3 min read

In this article, we'll walk through the complete process of working with postgresql in a server environment. Understanding pitr is essential for maintaining a reliable and performant infrastructure.

Prerequisites

  • Sufficient storage for backups (2-3x data size)
  • A registered domain name (for public-facing services)
  • Basic familiarity with the Linux command line
  • Root or sudo access to the server
  • A remote storage destination (S3, B2, or another server)

Backup Configuration

Performance benchmarks show that properly tuned postgresql can handle significantly more concurrent connections than the default configuration. The key improvements come from adjusting worker processes and connection pooling.


# Install and initialize backup tool
sudo apt install -y postgresql
postgresql init --repo /backup/repo

# Create first backup
postgresql backup --repo /backup/repo /etc /home /var/www

# List backups
postgresql snapshots --repo /backup/repo

The configuration above sets the recommended values for a VPS with 2-4GB of RAM. Adjust the memory-related settings proportionally if your server has different specifications.

Scheduling Automated Backups

Performance benchmarks show that properly tuned postgresql can handle significantly more concurrent connections than the default configuration. The key improvements come from adjusting worker processes and connection pooling.


# Automated backup script: /usr/local/bin/backup.sh
#!/bin/bash
set -euo pipefail

BACKUP_REPO="/backup/repo"
LOG_FILE="/var/log/backup.log"
DATE=$(date +%Y-%m-%d_%H-%M)

echo "[$DATE] Starting backup..." >> $LOG_FILE

# Database dump
mysqldump --all-databases | gzip > /tmp/db-$DATE.sql.gz

# Run backup
postgresql backup --repo $BACKUP_REPO /etc /home /var/www /tmp/db-$DATE.sql.gz

# Cleanup old backups (keep 30 days)
postgresql forget --repo $BACKUP_REPO --keep-daily 7 --keep-weekly 4 --keep-monthly 3 --prune

rm /tmp/db-$DATE.sql.gz
echo "[$DATE] Backup completed successfully" >> $LOG_FILE

This configuration provides a good balance between performance and resource usage. For high-traffic scenarios, you may need to increase the limits further.

Encryption and Security

Before making changes to the configuration, always create a backup of the existing files. This ensures you can quickly roll back if something goes wrong during the setup process.


# Install and initialize backup tool
sudo apt install -y postgresql
postgresql init --repo /backup/repo

# Create first backup
postgresql backup --repo /backup/repo /etc /home /var/www

# List backups
postgresql snapshots --repo /backup/repo

Each line in the configuration serves a specific purpose. The comments explain the reasoning behind each setting, making it easier to customize for your specific use case.

Important Notes

If you encounter issues during setup, check the system logs first. Most problems can be diagnosed by examining the output of journalctl or the application-specific log files in /var/log/.

  • Keep all software components up to date
  • Use SSH keys instead of password authentication
  • Set up fail2ban for brute force protection

Next Steps

With postgresql now set up and running, consider implementing monitoring to track performance metrics over time. Regularly review your configuration as your workload changes and scale resources accordingly.

Was this article helpful?