pg_checksums 1.0 released
Version 1.0 of pg_checksums has been released. pg_checksums verifies, activates or deactivates data checksums in PostgreSQL instances.
It is based on the pg_checksums utility in PostgreSQL 12, with the following additions:
1. Online verification of checksums
The pg_checksums utility in PostgreSQL 12 (or the pg_verify_checksums utility in PostgreSQL 11) requires an offline PostgreSQL instance in order to verify checksums, which is usually not an option for production systems. Furthermore, base backup directories cannot be verified directly either but need to be started and stopped again before verification. pg_checksums 1.0 allows to verify checksums in online instances as well, making checksum verification feasible in production systems.
2. Compatibility with all supported PostgreSQL versions
pg_checksums is compatible with all versions of PostgreSQL since the introduction of data checksums in PostgreSQL 9.3. Debian and Ubuntu packages for all supported versions of PostgreSQL are available from https://apt.postgresql.org.
3. Activation of progress reporting during operation
Progress reporting (see below) can additionally be switched on or off via the SIGUSR1 signal (not available on Windows). This is useful when checksums are activated on a large instance and progress reporting was not requested at the start of the operation, allowing to estimate the remaining time.
4. I/O rate limiting
When activating or verifying checksums, the I/O can be limited to a particular rate of MB/s. This is useful to limit resource usage when verifying checksums of an online instance.
In addition, the following features have been first developed for pg_checksums and have since been integrated into version 12 of PostgreSQL:
1. Offline activation and deactivation of checksums
Up to and including PostgreSQL 11, data checksums could only be activated during instance creation via a non-default initdb option. In PostgreSQL 12, the pg_verify_checksums utility (from which the pg_checksums code was forked) was modified to allow for offline (de)activation of checksums and renamed to pg_checksums. This is a major new feature of PostgreSQL 12.
2. Progress reporting
Checksum activation of large instances can take a long time while the instance has to be offline. In order to assess the remaining time of the operation, this option displays the progress and I/O rate every second.
pg_checksums is being developed by credativ GmbH and is under the PostgreSQL license. The source code is available on GitHub.