PostgreSQL для системных администраторов
PostgreSQL становится стандартом для корпоративных баз данных в России — особенно в связке с 1С и собственными разработками. Но переход с MS SQL или установка с нуля вызывают множество вопросов: как настроить автоматические бэкапы, перенести базу на другой диск, сбросить пароль и не потерять данные при сбое.
Этот раздел — практические инструкции для администраторов, которым нужно быстро развернуть PostgreSQL в production-среде, настроить надежное резервное копирование и диагностировать проблемы производительности. Все команды проверены на PostgreSQL 10-16 в Debian/Ubuntu, CentOS/RHEL и Windows.
Статьи и руководства по PostgreSQL
- Резервное копирование PostgreSQL с помощью pg_dump и pg_restore — создание логических бэкапов, сжатие, автоматизация через cron, восстановление отдельных таблиц и баз данных. Сравнение с физическими бэкапами.
- Сброс пароля пользователя 1С через SQL Server / PostgreSQL — прямой доступ к таблицам пользователей 1С, безопасная замена хеша пароля и восстановление доступа к информационной базе.
- Перенос базы данных PostgreSQL на новый жесткий диск — миграция данных на другой том без простоя сервера, изменение расположения data directory.
- PostgreSQL: ошибка «encoding does not match template database» — решение проблемы несовместимости кодировок при создании базы данных.
- Мониторинг баз данных PostgreSQL Exporter — интеграция с Prometheus и Grafana для отслеживания производительности и состояния СУБД.
- Сброс пароля в PostgreSQL на Windows-платформах — восстановление доступа к СУБД при утере пароля пользователя postgres на Windows.
- Ошибка СУБД: relation does not exist — диагностика и решение проблемы отсутствия таблиц или представлений в базе данных.
- Поднимаем сервер 1С 8.x на Windows 2008 R2 + PostgreSQL — полная инструкция по установке и связке сервера 1С с СУБД PostgreSQL.
Часто задаваемые вопросы
Чем pg_dump отличается от физических бэкапов (pg_basebackup)?
pg_dump создает логическую копию базы в виде SQL-скрипта или пользовательского формата. Он удобен для миграций между версиями, частичного восстановления (отдельные таблицы) и не требует остановки сервера. Физические бэкапы (pg_basebackup) копируют файлы данных на уровне блоков, работают быстрее для больших баз и поддерживают point-in-time recovery (PITR) через WAL-архивы. Подробное сравнение и настройка автоматических бэкапов в статье Резервное копирование PostgreSQL через pg_dump.
Как настроить автоматический бэкап PostgreSQL на Linux?
Создайте скрипт /usr/local/bin/pg_backup.sh с командой pg_dump -U postgres -Fc -f /backup/db_$(date +%Y%m%d).sql database_name. Добавьте в crontab: 0 2 * * * /usr/local/bin/pg_backup.sh. Настройте ротацию через find /backup -name «*.sql» -mtime +7 -delete. Для production используйте pgBackRest или WAL-G с инкрементальными бэкапами и отправкой в S3. Пошаговая инструкция в статье Резервное копирование PostgreSQL.
Как перенести базу PostgreSQL на другой диск без простоя?
Остановите PostgreSQL, скопируйте содержимое data directory на новый диск, измените параметр data_directory в postgresql.conf, установите права доступа (chown postgres:postgres) и запустите сервер. Для минимизации простоя используйте rsync с последующей синхронизацией. Подробная инструкция в статье Перенос базы данных PostgreSQL на новый жесткий диск.
Что делать с ошибкой «encoding does not match template database»?
Эта ошибка возникает, когда вы пытаетесь создать базу с кодировкой, отличной от template1. Решение: используйте template0 вместо template1 при создании базы: CREATE DATABASE dbname WITH TEMPLATE = template0 ENCODING = ‘UTF8’;. Или измените кодировку template1. Подробный разбор в статье Ошибка кодировки PostgreSQL.
Как сбросить пароль postgres на Windows, если я потерял доступ?
Отредактируйте pg_hba.conf, заменив метод аутентификации на trust для локальных подключений. Перезапустите службу PostgreSQL, подключитесь без пароля и выполните ALTER USER postgres WITH PASSWORD ‘new_password’;. Верните md5 или scram-sha-256 в pg_hba.conf и перезапустите службу. Инструкция с скриншотами в статье Сброс пароля в PostgreSQL на Windows.
Как восстановить базу из бэкапа pg_dump?
Для SQL-формата: psql -U postgres -d database_name -f backup.sql. Для пользовательского формата (-Fc): pg_restore -U postgres -d database_name -1 backup.dump. Для восстановления в новую базу: createdb new_database, затем pg_restore. Если нужна замена существующей базы, используйте флаг -c (clean) для удаления объектов перед восстановлением. Все варианты с примерами в статье Резервное копирование PostgreSQL через pg_dump.
Дополнительные материалы
PostgreSQL часто используется в связке с 1С — подробности в разделе администрирование 1С. Для сравнения с MS SQL Server и миграции изучите раздел MS SQL для администраторов. Вопросы мониторинга СУБД пересекаются с материалами по Zabbix и PostgreSQL Exporter для Prometheus.
