Serverspace Black Friday
JH
Joe Harris
September 8, 2020
Updated August 19, 2024

How to Backup PostgreSQL on Ubuntu Server 20.04 with Bacula

Backup Databases Linux Ubuntu

The installation and initial configuration of Bacula is described here: How to Backup Ubuntu Server 20.04 with Bacula. In this tutorial, we will add settings for creating a PostgreSQL database backup.

First, you need to back up the database using the built-in DBMS tool, and then copy the result-ing file. Bacula allows you to run scripts before and after the backup process.

Step 1 - Preparing and creating scripts

First, let's create a pre-psql-backup.sh script in the /etc/bacula/ folder that will make the dump.

sudo nano /etc/bacula/pre-psql-backup.sh

Write the following commands to it.

#!/bin/bash
# Clearing, creating, and configuring a folder for the dump
rm -rf /opt/psql-backup/
mkdir -p /opt/psql-backup/
chown -R postgres:postgres /opt/psql-backup/
# Backup all PostgreSQL databases in SQL format
sudo -u postgres pg_dumpall --clean --inserts --verbose --file=/opt/psql-backup/$(date +%Y-%m-%d_%H:%M).sql 2>/var/log/bacula-pg_dump.log

Let's create a script for cleaning the temporary folder.

sudo nano /etc/bacula/post-psql-backup.sh

Copy the following lines there.

#!/bin/bash
rm -f /opt/psql-backup/*

Now let's make the scripts executable.

chmod 750 /etc/bacula/pre-psql-backup.sh
chmod 750 /etc/bacula/post-psql-backup.sh

Step 2 – Configuring Bacula

The next section will describe our Job. Paste it into the /etc/bacula/bacula-dir.conf file.

Job {
Name = "PSQL-backup"
JobDefs = "DefaultJob"
Enabled = yes
Level = Full
FileSet = "PSQL"
Schedule = "LocalDaily"
Storage = LocalSD
Write Bootstrap = "/var/lib/bacula/PSQLBackup.bsr"
# Executing scripts
ClientRunBeforeJob = "/etc/bacula/pre-psql-backup.sh"
ClientRunAfterJob = "/etc/bacula/post-psql-backup.sh"
}

Now the section describing the target folder for backup.

FileSet {
Name = "PSQL"
Include {
Options {
signature = MD5
}
File = /opt/psql-backup/
}
}

Save and close the file, then restart Bacula to apply the changes.

systemctl reload bacula-dir

Now the script will make dumps, and Baсula will write them to the ‘LocalSD’ storage according to the ‘LocalDaily’ schedule.

Vote:
5 out of 5
Аverage rating : 5
Rated by: 1
33145 North Miami, FL 2520 Coral Way apt 2-135
+1 302 425-97-76
700 300
ITGLOBAL.COM CORP
700 300
We use cookies to make your experience on the Serverspace better. By continuing to browse our website, you agree to our
Use of Cookies and Privacy Policy.