PostgreSQL

Диагностика, базы, таблицы, дампы и восстановление.

Статус и подключение

Сначала проверить сервис и простое подключение.

systemctl status postgresql --no-pager
sudo -u postgres psql -c 'select version();'
sudo -u postgres psql -c '\l'
psql -d DB_NAME -c 'select now();'

Базы, таблицы, размер

Быстро понять, где данные и сколько они занимают.

psql -d DB_NAME -c '\dt'
psql -d DB_NAME -c '\du'
psql -d DB_NAME -c 'select pg_size_pretty(pg_database_size(current_database()));'
psql -d DB_NAME -c 'select relname, pg_size_pretty(pg_total_relation_size(relid)) from pg_catalog.pg_statio_user_tables order by pg_total_relation_size(relid) desc;'

Дамп

Для обычной переносимой копии удобен custom-формат `-Fc`.

pg_dump -d DB_NAME > db_backup.sql
pg_dump -Fc -d DB_NAME -f db_backup.dump
pg_dump -Fc -d DB_NAME | gzip > db_backup.dump.gz
pg_dumpall > all_databases.sql

Восстановление

Восстанавливать лучше сначала в тестовую базу, если есть сомнения.

createdb DB_RESTORE
psql -d DB_RESTORE < db_backup.sql
pg_restore -d DB_RESTORE db_backup.dump
gzip -dc db_backup.dump.gz | pg_restore -d DB_RESTORE