Running pgbackrest on FreeBSDpgbackrest is an amazing tool for backup and recovery of a PostgreSQL database. Quite frankly, it is my favourite backup solution because it is reliable, fast and supports a lot of interesting features including retention policies and encryption.
I have already written about some problems in running pgbackrest on FreeBSD, and the problem were not related to the application itself, rather to the compilation process.
I’m really glad that now pgbackrest fully supports non-Linux platforms, including FreeBSD, thanks to the changes in the compilation approach. It is therefore a simple process to get pgbackrest installed on your FreeBSD machine!
Installing pgbackrest on FreeBSDIn order to see how simple it is now to install pgbackrest on FreeBSD, let’s download the latest stable release, the
2.27one, and install it. The only advice is that the project needs to be compiled with
GNU make, that means you have to digit
gmakeinestead of usual
I’ve decided to install it on a specific path,
% wget https://github.com/pgbackrest/pgbackrest/archive/release/2.27.tar.gz % tar xzvf 2.27.tar.gz % cd pgbackrest-release-2.27 % cd src % ./configure --prefix=/usr/local/pgbackrest % gmake % sudo gmake install
/usr/local/pgbackrestjust to avoid messing with other binaries, but you can install in the default FreeBSD location
/usr/local/. If everything was succesful, you can then proceed to testing the program:
Great! Installing on FreeBSD is now really simple!
% export PATH=/usr/local/pgbackrest/bin:$PATH % pgbackrest pgBackRest 2.27 - General help Usage: pgbackrest [options] [command] Commands: archive-get Get a WAL segment from the archive. archive-push Push a WAL segment to the archive. backup Backup a database cluster. check Check the configuration. expire Expire backups that exceed retention. help Get help. info Retrieve information about backups. restore Restore a database cluster. stanza-create Create the required stanza data. stanza-delete Delete a stanza. stanza-upgrade Upgrade a stanza. start Allow pgBackRest processes to run. stop Stop pgBackRest processes from running. version Get version. Use 'pgbackrest help [command]' for more information.
Some recent history about pgbackrestIn the last few month the porject was deply improved, and I’m not going to quote the whole release history here. However, there are two major aspects that I found really interesting.
AutoconfAs you probably have noted in the above installation example, pgbackrest now uses autoconf to understand how to correctly configure the project for the hosting operating system. Autoconf was introduced in the previous year as a reaction to a pull request I opened to compile on FreeBSD.
Migrating to Cpgbackrest was initially developed mainly in Perl, with little parts written in C to deal with performances and internals of PostgreSQL WAL files format.
As of January 2020, release
2.21, the whole codebase is in C. Well, this is not fully true, since the testing and documentation part is still written in Perl, at least to my understanding, but the whole
pgbackrestproduction thing is now in C.
The fact that the application is now written in C makes a clear distinction between
pgbackrestand other similar backup solutions, that indeed take advantages of existing tools to behave as “glue” between small pieces. Moreover, it means that the backup, and most notably the restore, can run at full speed.
My little messy contributionA long time ago… I tried to contribute to a requested feature that sounded very easy to implement, and of course it was not!
2.25there is the
--dry-runflag for the
Add –dry-run option to the expire command. Use dry-run to see which backups/archive would be removed by the expire command without actually removing anything. (Contributed by Cynthia Shang, Luca Ferrari. Reviewed by David Steele. Suggested by Marc Cousin.)Unluckily, I was unable to complete the effort because I was unable to use the testing system, and it was my fault, I underestimated the problem. But there are two very good news about this:
- the project provide me a very quick, polite and constant support in trying to fix my issues;
- they required me to test my changes instead of doing the testing by themselves.
ConclusionsI have already used
pgbackreston FreeBSD, but now that it is *natively** supporting this platform I believe that the project will attrac more and more users. Moreover, now that all the code has been converted to C, the already optimal performances will be much more impressive.
pgbackrest is definetely my backup solution of choice, and not only for its features, but also for the clean and rigorous way the project is mantained and improved.