Установка и конфигурация PostgreSQL

Материал из ARK-HOSTER.RU | Документация хостинга
Версия от 08:35, 15 октября 2025; Admin (обсуждение | вклад) (Новая страница: «= Установка и конфигурация PostgreSQL = == 1. Подготовка системы == * Войдите в систему под учетн…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Установка и конфигурация PostgreSQL

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.

2. Установка PostgreSQL =

Обновление системы

1. Обновите систему: sudo apt update

2. Установите необходимые пакеты: sudo apt install -y wget ca-certificates

Установка PostgreSQL

1. Добавьте официальный репозиторий PostgreSQL: wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

2. Добавьте репозиторий в источники: echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

3. Обновите список пакетов: sudo apt update

4. Установите PostgreSQL 15: sudo apt install -y postgresql-15 postgresql-client-15 postgresql-contrib-15

5. Проверьте версию: psql --version

3. Первоначальная настройка =

Запуск PostgreSQL

1. Запустите и включите автозапуск PostgreSQL: sudo systemctl start postgresql sudo systemctl enable postgresql

2. Проверьте статус: sudo systemctl status postgresql

Настройка пользователя postgres

1. Переключитесь на пользователя postgres: sudo -u postgres psql

2. Установите пароль для пользователя postgres: ALTER USER postgres PASSWORD 'your_strong_password';

3. Выйдите из psql: \q

Создание базы данных и пользователя

1. Создайте нового пользователя: sudo -u postgres createuser --interactive

2. Создайте базу данных: sudo -u postgres createdb mydatabase

3. Подключитесь к базе данных: sudo -u postgres psql mydatabase

4. Конфигурация PostgreSQL =

Основные настройки

1. Найдите файл конфигурации: sudo find /etc -name "postgresql.conf" 2>/dev/null

2. Отредактируйте основной конфигурационный файл: sudo nano /etc/postgresql/15/main/postgresql.conf

3. Настройте основные параметры: # Сетевые настройки listen_addresses = '*' port = 5432

  1. Настройки памяти

shared_buffers = 256MB effective_cache_size = 1GB work_mem = 4MB maintenance_work_mem = 64MB

  1. Настройки логирования

log_destination = 'stderr' logging_collector = on log_directory = 'pg_log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_rotation_age = 1d log_rotation_size = 100MB log_min_duration_statement = 1000 log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h ' log_checkpoints = on log_connections = on log_disconnections = on log_lock_waits = on

  1. Настройки безопасности

ssl = on ssl_cert_file = 'server.crt' ssl_key_file = 'server.key'

Настройка аутентификации

1. Отредактируйте файл pg_hba.conf: sudo nano /etc/postgresql/15/main/pg_hba.conf

2. Настройте методы аутентификации: # TYPE DATABASE USER ADDRESS METHOD

  1. "local" is for Unix domain socket connections only

local all postgres peer local all all md5

  1. IPv4 local connections:

host all all 127.0.0.1/32 md5 host all all 0.0.0.0/0 md5

  1. IPv6 local connections:

host all all  ::1/128 md5

Настройка SSL

1. Создайте SSL сертификаты: sudo -u postgres openssl req -new -x509 -days 365 -nodes -text -out /var/lib/postgresql/15/main/server.crt -keyout /var/lib/postgresql/15/main/server.key -subj "/CN=postgresql-server"

2. Установите права на сертификаты: sudo chmod 600 /var/lib/postgresql/15/main/server.key sudo chown postgres:postgres /var/lib/postgresql/15/main/server.*

5. Управление PostgreSQL =

Основные команды

1. Запуск PostgreSQL: sudo systemctl start postgresql

2. Остановка PostgreSQL: sudo systemctl stop postgresql

3. Перезапуск PostgreSQL: sudo systemctl restart postgresql

4. Проверка статуса: sudo systemctl status postgresql

5. Подключение к базе данных: psql -h localhost -U username -d database_name

Управление базами данных

1. Создание базы данных: sudo -u postgres createdb mydatabase

2. Удаление базы данных: sudo -u postgres dropdb mydatabase

3. Создание пользователя: sudo -u postgres createuser --interactive

4. Удаление пользователя: sudo -u postgres dropuser username

5. Изменение пароля пользователя: sudo -u postgres psql -c "ALTER USER username PASSWORD 'new_password';"

6. Резервное копирование =

Создание резервной копии

1. Полное резервное копирование: sudo -u postgres pg_dumpall > backup_all.sql

2. Резервное копирование конкретной базы данных: sudo -u postgres pg_dump mydatabase > mydatabase_backup.sql

3. Сжатое резервное копирование: sudo -u postgres pg_dump mydatabase | gzip > mydatabase_backup.sql.gz

4. Резервное копирование с настройками: sudo -u postgres pg_dump -h localhost -U postgres -Fc mydatabase > mydatabase_backup.dump

Восстановление из резервной копии

1. Восстановление из SQL файла: sudo -u postgres psql mydatabase < mydatabase_backup.sql

2. Восстановление из сжатого файла: gunzip -c mydatabase_backup.sql.gz | sudo -u postgres psql mydatabase

3. Восстановление из dump файла: sudo -u postgres pg_restore -d mydatabase mydatabase_backup.dump

7. Мониторинг и оптимизация =

Мониторинг производительности

1. Просмотр активных подключений: sudo -u postgres psql -c "SELECT * FROM pg_stat_activity;"

2. Просмотр размера баз данных: sudo -u postgres psql -c "SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;"

3. Просмотр медленных запросов: sudo -u postgres psql -c "SELECT query, mean_time, calls FROM pg_stat_statements ORDER BY mean_time DESC LIMIT 10;"

Оптимизация производительности

1. Анализ таблиц: sudo -u postgres psql -d mydatabase -c "ANALYZE;"

2. Переиндексация таблиц: sudo -u postgres psql -d mydatabase -c "REINDEX DATABASE mydatabase;"

3. Очистка базы данных: sudo -u postgres psql -d mydatabase -c "VACUUM FULL;"

8. Настройка репликации =

Настройка мастер-сервера

1. Отредактируйте postgresql.conf: sudo nano /etc/postgresql/15/main/postgresql.conf

2. Добавьте настройки репликации: wal_level = replica max_wal_senders = 3 max_replication_slots = 3 hot_standby = on

3. Настройте pg_hba.conf: host replication replicator 192.168.1.0/24 md5

Настройка слейв-сервера

1. Создайте пользователя для репликации: sudo -u postgres psql -c "CREATE USER replicator REPLICATION LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD 'replicator_password';"

2. Создайте базовую резервную копию: sudo -u postgres pg_basebackup -h master_server -D /var/lib/postgresql/15/main -U replicator -v -P -W

9. Безопасность =

Настройка файрвола

1. Разрешите порт PostgreSQL: sudo ufw allow 5432/tcp

2. Ограничьте доступ по IP: sudo ufw allow from 192.168.1.0/24 to any port 5432

Настройка SSL

1. Проверьте SSL соединения: sudo -u postgres psql -c "SHOW ssl;"

2. Проверьте SSL сертификаты: sudo -u postgres psql -c "SELECT * FROM pg_stat_ssl;"

10. Устранение неполадок =

Частые проблемы

1. PostgreSQL не запускается:

  • Проверьте логи: sudo journalctl -u postgresql
  • Проверьте конфигурацию: sudo -u postgres postgres --check-config
  • Проверьте права доступа: ls -la /var/lib/postgresql/15/main/

2. Ошибки подключения:

  • Проверьте pg_hba.conf
  • Проверьте сетевые настройки
  • Проверьте файрвол

3. Проблемы с производительностью:

  • Проверьте логи медленных запросов
  • Оптимизируйте индексы
  • Настройте параметры памяти

Диагностика

1. Проверка статуса: sudo systemctl status postgresql

2. Проверка подключений: sudo netstat -tlnp | grep :5432

3. Проверка логов: sudo tail -f /var/log/postgresql/postgresql-15-main.log

11. Полезные команды =

Администрирование

1. Просмотр всех баз данных: sudo -u postgres psql -l

2. Просмотр всех пользователей: sudo -u postgres psql -c "\du"

3. Просмотр таблиц в базе данных: sudo -u postgres psql -d mydatabase -c "\dt"

4. Просмотр схемы таблицы: sudo -u postgres psql -d mydatabase -c "\d table_name"

Мониторинг

1. Просмотр статистики: sudo -u postgres psql -c "SELECT * FROM pg_stat_database;"

2. Просмотр блокировок: sudo -u postgres psql -c "SELECT * FROM pg_locks;"

3. Просмотр активных запросов: sudo -u postgres psql -c "SELECT pid, now() - pg_stat_activity.query_start AS duration, query FROM pg_stat_activity WHERE (now() - pg_stat_activity.query_start) > interval '5 minutes';"

Заключение

PostgreSQL успешно установлен и настроен! Теперь у вас есть мощная система управления базами данных с возможностями репликации, мониторинга и резервного копирования.

Для размещения ваших баз данных на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой PostgreSQL и оптимизацией производительности ваших баз данных!