Postgresql Tips
+ +date: 2025-04-30
+Introduction
+Sometimes you want to recreate an postgresql database on a different +server or postgresql instance. +And so here are some tips how to do that.
+Backup and Restore Using Tar File
+create a backup with pg_dump
+-
+
- switch to postgres user
su - postgres
+ - create backup
pg_dump -d mytestdb -F tar -f mytestdb.tar
+ - or with specific port
pg_dump -p5432 -d mytestdb -F tar -f mytestdb.tar
+ - examine contents of tar
tar -tvf mytestdb.tar
+ - alternately make a compressed backup +
pg_dump -d mytestdb -Fc -f mytestdb_compressed_backup
+
restore with pg_restore
+-
+
- switch to postgres user
su - postgres
+ - start psql
psql -p5432
+ postgres# CREATE USER mytestuser;
+postgres# \password mytestuser
+postgres# CREATE DATABASE mytestdb WITH OWNER mytestuser;
+- list users
postgres# \du
+ - list databases
postgres# \l
+ exit
+pg_restore -p5432 -d mytestdb mytestdb.tar
+- or
pg_restore -p5432 -d mytestdb mytestdb_compressed_backup
+
verify the restored database
+-
+
- switch to postgres user
su - postgres
+ - start psql
psql -p5432
+ - change database
postgres# \c mytestdb
+ - list tables
postgres# \d
orpostgres# \dt
+
Backup and Restore Schema Only
+create a backup with pg_dump
+-
+
- switch to postgres user
su - postgres
+ - create backup
pg_dump --schema-only -d mytestdb -f mytestdb_schema.sql
+ - or with specific port
pg_dump -p54342 --schema-only -d mytestdb -f mytestdb_schema.sql
+ - examine sql file
less mytestdb_schema.sql
+ - note that the generated sql assigns ownership of each table, to that of the original database owner, upon creation +
restore with psql
command
+-
+
- switch to postgres user
su - postgres
+ psql -p5432 -d mytestdb -f mytestdb_schema.sql
+
verify the restored database
+-
+
- switch to postgres user
su - postgres
+ - start psql
psql -p5432
+ - change database
postgres# \c mytestdb
+ - list tables
postgres# \d
orpostgres# \dt
+