PostgreSQL configuration file parameters are very important when managing a PostgreSQL database, and this blog post will discuss the importance of backing those files up. The following are the primary configuration files of the PostgreSQL database:
PostgreSQL.conf: One of the most important configuration files for the PostgreSQL database is PostgreSQL.conf file. This file contains a range of parameters that determine the behavior of the database when it is started. When the PostgreSQL database is launched, it refers to the parameter values present in this file to determine how it will operate.
For instance, the port parameter present in this file specifies the port on which the PostgreSQL database will listen for incoming connections. This is just one example of how the parameters in the PostgreSQL.conf file can have a significant impact on the way the database operates. Overall, it is crucial to have a good understanding of these parameters to optimize the performance and functionality of your PostgreSQL database.
postgresql.auto.conf: The PostgreSQL.auto.conf file has the same structure as the postgresql.conf file. When we change the parameter values using the “alter system” command, those values will be stored in the postgresql.auto.conf file. This file is automatically updated; we don’t need to update it manually. Parameters in the postgresql.auto.conf file takes precedence over those in the postgresql.conf file. For instance, if the parameter “archive_mode” is set to “off” in the postgresql.conf file, but it is set to “on” in the postgresql.auto.conf file, the “archive_mode” parameter will be set to “on” when the database starts.
Include directives: PostgreSQL provides the below three directives/parameters for managing the postgresql.conf and pg_hba.conf effectively. The following can be used to divide the configuration files into different parts:
In the postgresql.conf file, we can specify another configuration file to read by using the include or include_if_exists parameter. The difference between the two is that include_if_exists will not throw an error when the referenced file is not present.
In the pg_hba.conf file, we can specify another set of authentication rules into different authentication files using the include parameter. The authentication records from the other authentication file will be placed where the included parameter is present in the pg_hba.conf file.
The include_dir parameter can be used to specify multiple configuration/authentication files. You can find more information regarding these directives by visiting the links provided at the bottom.
pg_hba.conf: The pg_hba.conf file is used for client authentication in PostgreSQL. This file consists of authentication records. In this file, you can find the authentication-related information, i.e., database name, database user name, etc.
pg_ident.conf: The pg_ident.conf file is an essential component in PostgreSQL’s ident authentication process. It maps the operating system user to the corresponding database user. In this file, you can find information related to ident authentication, such as map-name, system username, and database username. To enable access to the database, you must add the map-name in the pg_hba.conf file. In Postgres 15/16, the user mapping-related details can be accessed in the pg_ident_file_mappings view.
Backing up configuration files can be helpful in the following situations
- Reverting changes – For instance, if you make changes to a parameter value and the output is not as expected, you can refer to the old values in the configuration files backup or use the “show all” backup to revert back.
- Comparing parameter values over time – If you need to compare parameter values over a period of time, you can refer to both the current and old parameter values in the backup of the configuration files.
- Incorrect parameter value – In case a parameter value is updated incorrectly, you can use the configuration files backup to update the correct value.
How to backup configuration files
First, use the given commands to locate all four files and copy them to the backup location. Additionally, If you have any files mentioned in the included directives, copy them to the backup location.
We can manually copy the single file using the cp command or schedule the backup in the cron.
In the example below, all four files will be backed up every night at 12:30 AM. I’m using the /tmp location as a backup location for the demonstration.
Instead of copying the postgresql.conf and postgresql.auto.conf files, we can also backup current parameter values using the show all; command.
The show all; command is used to show the settings of run-time parameters.
We can schedule the show all; in the cron so that it runs automatically. The command will run automatically at night and copy the current values in the backup location.
In this article, we have seen various PostgreSQL configuration files, their locations, and methods for backing these configuration files. By understanding these concepts, database administrators can ensure that the backup of their PostgreSQL configuration files runs effectively. You can get more information about the configuration files at the links below.