Backup and Restore PostgreSQL Database on CentOS 7
Databases are crucial components of many systems and software. Thus, knowing how to backup and restore them becomes an essential skill. This article will guide you through the process of backing up and restoring a database in PostgreSQL on a CentOS 7 system.
Backup
The first step is to backup the database. In PostgreSQL, you can use the pg_dump
command to achieve this. Here’s an example of using this command:
pg_dump -h 0.0.0.0 -p 5432 -U postgres -F c -b -v -f "/usr/local/backup/db.dump" db -W
Command Option | Description |
---|---|
-h | Specifies the host |
-p | Specifies the port |
-U | Specifies the user |
-F c | Creates a custom-format archive |
-b | Includes large objects in the dump |
-v | Enables verbose mode |
-f | Specifies the filename for the output |
db | Indicates the name of the database to be dumped |
-W | prompts for password |
Before executing this command, make sure the backup directory exists by running
mkdir /usr/local/backup
Restore
Once the backup is complete, the next step is to restore it. The pg_restore
command is used for this purpose. Here’s an example of how to use it:
pg_restore -d db -U postgres -C "usr/local/backup/db.dump" -W
Command Option | Description |
---|---|
-d | Specifies the database to restore |
-U | Specifies the user |
-C | Specifies the path to the dump file |
-W | prompts for password |
This command instructs PostgreSQL to restore the database db
using the user postgres
and the dump file db.dump
.
Troubleshooting
In case of encountering errors like FATAL: Peer authentication failed for user "postgres"
or FATAL: Indent authentication failed for user "postgres"
, the issue usually lies with the pg_hba.conf
file.
To solve this, change peer
or indent
to md5
in pg_hba.conf
. Here’s an example of how to do this:
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
The pg_hba.conf
file is usually located in /var/lib/pgsql/<version>/data/pg_hba.conf
.
By following these steps, you can effectively backup and restore your PostgreSQL databases on a CentOS 7 system.