PostgreSQL Database Dump and Restore
Internal
Overview
This article describes the dump and restore procedure for a PostgreSQL database. The procedure can be used in various situations, such as when the database needs to be backed up and restored, or transferred into another physical RDBMS. Database export will be performed using the pg_dump utility. The import will be performed with psql.
Procedure
Dump the Database
Get Access to Host Database is Running On
pg_dump utility needs to run on the host the database to be dumped runs on.
Dump the Database
While the database is running (do we need to drop connections and prevent new connections being accepted while doing it?) execute the following command:
pg_dump -U database-user-name database-name > database-name-user-name-export.pgsql
The database-name-user-name-export.pgsql file now contains all of the data for the database-name database.
Import the Database
Get Access to Host Database is Running On
It is preferable if psql utility runs on the database host while the import is being performed.
Transfer the dump file locally.
Create the Empty Database
If the database we're importing into does not exist, it has to be created before the import starts. This is how a database is created:
Create the User
If the user we are importing on behalf of does not exist, it will have to be created. This is how a user is created:
Also, the user should be granted sufficient permissions:
How is the password handled when recreating the user? Will the import procedure restore it?
Import the Database
psql -U database-user-name database-name < ./database-name-user-name-export.pgsql