Database backups are extremely important and absolutely necessary for protection against data loss. The lack of database backups can totally mess up business operations and can be devastating for a business. In this tutorial below we will teach you how to backup a PostreSQL database. PostgreSQL is an object-relational database management system used by many developers to store and manipulate data for their applications and websites.
When you are storing important data in a PostgreSQL database like information about your customers, products, sales, employees etc. you need to make sure you have a full backup of that database. Performing regular database backups very important as it will save you lot of time in case of data loss. When you install PostgreSQL on a Linux VPS, it includes tool which helps you to better manage the database service. There is also a tool for generating database backups and it is really easy to use. Follow the steps bellow to find out.
How to backup a PostgreSQL database on a Linux VPS
One of the prerequisites is to have SSH access to your server. If you do have access to it, connect to your Linux VPS via SSH. Once you are connected to the server, switch to the postgres
user using the following command:
su - postgres
postgres
is the superuser in PostgreSQL and you can use it to perform many different operations like adding users, creating or deleting databases, assigning roles etc. In this case you will be using the superuser to generate a backup of your PostgreSQL database.
To backup a single database you can use the pg_dump
tool which is installed by default with your PostgreSQL service. You can use it no matter if you have an Ubuntu VPS or CentOS VPS. When you are using this tool to generate a backup of specific database, you should use the following syntax:
pg_dump [connection-option ...] [option ...] [dbname]
Now, to create a plaintext dump of the database, you can use the command bellow:
pg_dump database-name > database-name.sql
If you are not sure about the name of the database you are using for your application, you can easily check this with the psql
tool. This tool is also included with the PostgreSQL service during installation. Therefore, while logged in as postgres
user, type psql
in your terminal to activate the PostgreSQL interactive terminal:
postgres@host:~$ psql psql (9.5.13) Type "help" for help. postgres=#
Here, type \l
to list all of your PostgreSQL databases. The output will be similar to the one below, except there will be more databases:
postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres testdb | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (4 rows)
Now, lets say you want to backup the testdb
. The command you need to use is the following:
pg_dump testdb > testdb.sql
How to backup all your PostgreSQL databases on a Linux VPS
The pg_dumpall
tool that also comes with PostgreSQL allows you to backup multiple databases at once. You can use it to create a full backup of all your PostgreSQL database. To do that, run the command below in your terminal:
pg_dumpall > alldbs.sql
This will create a plaintext dump of all your databases currently stored in PostgreSQL so you can restore them later if needed.
How to restore PostgreSQL database on a Linux VPS
The psql
tool also allows you to easily restore a database from backup if needed. To restore a database from backup, you can simply run the following command in your terminal:
psql database-name < database-name.sql
Of course, you need to replace database-name
in the previous command with the name of your database. The restore operation will take some time depending on the size of the backup.
You can also restore all database from a previous backup using the following command:
psql -f alldbs.sql postgres
Make sure you replace alldbs.sql
with the name of the database backup file.
For more information and usage examples about these PostgreSQL tools we recommend you to check their respective documentation pages. The documentation for pg_dump
is available here, for psql
here, and for pg_dumpall
it is available here.
And that’s it, you have successfully learned to back and restore PostreSQL databases. We strongly suggest you do a regular daily backups of your databases and keep them in a safe place.
You really don’t need to back up or restore PostreSQL database if you use one of our premium server management services, in which case our system administrators will take care of your database backups, professionally and efficiently.