Postgresql – установка и кластеризация

Сейчас мы обсудим некоторые вопросы установки и базовой настройки СУБД Postgresql, немного коснемся создания Master – Slave кластера, а вопросы углубленной настройки, SQL-синтаксиса и т.п. оставим для другой статьи.

Установка свежих версий Postgresql в Ubuntu Linux

Снимаем полный дамп текущей базы данных

# su postgres
$ pg_dumpall >/tmp/full_dump.sql

Удаляем все пакеты Postgresql

# apt-get purge postgresql-*

Подключаем репозитарий и устанавливаем самый свежий на данный момент Postgresql

# sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# apt -y update
# apt-get install postgresql-15-*

Восстанавливаем полный дамп Postgresql

# su postgres
$ cat /tmp/full_dump.sql | psql

Настройка Master-Slave репликации в Postgresql

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

Создаем пользователя на master-сервере:

CREATE ROLE replicator REPLICATION LOGIN PASSWORD 'xxxSecretPasswordxxx';

Прописываем разрешения на доступ в pg_hba.conf:

local   replication     all                                     md5
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5
host    replication     all             10.54.130.115/32        md5

Конфигурация Master-сервера (отличия от штатного):

max_connections = 1000
wal_level = replica
archive_mode = on
archive_command = 'test ! -f /opt/postgresql_archive_log/%f && cp %p /opt/postgresql_archive_log/%f'
wal_keep_segments = 16
log_timezone = 'Asia/Almaty'
timezone = 'Asia/Almaty'

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

Копируем данные с Master-сервера

# mkdir /tmp/backup/
# pg_basebackup -h 10.54.130.102 -D /tmp/backup/ -U replicator -v -P -R -X stream -c fast

Последовательность дальнейших действий

  • Останавливаем Postgresql
  • Очистим хранилище data (/var/lib/postgresql/data)
  • Скопируем полученные данные в хранилище (/var/lib/postgresql/data)
  • Правим права доступа к каталогу (/var/lib/postgresql/data)

Правки в конфигурации recovery.conf:

restore_command = 'cp /opt/postgresql_archive_log/%f %p'
archive_cleanup_command = 'pg_archivecleanup  /opt/postgresql_archive_log/ %r'

Прочие заметки и замечания

PgPool2 – Настройка логирования в текстовый файл

Так-как конфигурация Pgpool2 подразумевает логирование или в  stderr или syslog, то для логирования в файл придется немного пошаманить.

Переключаем вывод логов в stderr

/etc/pgpool2/pgpool.conf
log_destination = 'stderr'

Создаем правило переопределения для SystemD-сервиса

Команда редактирования сервиса:

# systemctl edit pgpool2

Добавляем

[Service]
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=pgpool2
StandardOutput=file:/var/log/pgpool/pgpool.log
StandardError=file:/var/log/pgpool/pgpool.log

Перезапускаем сервис

# systemctl daemon-reload
# systemctl restart pgpool2

Таким образом мы логируем и в отдельный файл и в syslog.

Настраиваем logrotate-правило

Файл /etc/logrotate.d/pgpool2

/var/log/pgpool/*.log {
   rotate 12
   weekly
   compress
   missingok
}

Видео-инструкция по настройке подключения к базе данных в DbBeaver

Настройка подключения к базе данных в DBbeaver

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *