PostgreSQL Database Dump and Restore

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

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 a Database

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:

Create a User

Also, the user should be granted sufficient permissions:

Granting Privileges on a Database

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