Установка и настройка сервера баз данных Postgresql на ОС Linux


a) В качестве серверов баз данных используйте сервера SRV-HQ и SRVBR
•b) Разверните сервер баз данных на базе Postgresql
a. Создайте базы данных prod, test, dev
i. Заполните базы данных тестовыми данными при помо-щи утилиты pgbench. Коэффициент масштабирования сохраните по умолчанию.
Создайте пользователей produser, testuser, devuser, каждому из пользователей дайте доступ к соответствующей базе данных.
b. Разрешите внешние подключения для всех пользователей.
c. Сконфигурируйте репликацию с SRV-HQ на SRV-BR
Выполнение:
SVR-HQ:
• Установка пакетов базы данных:
apt-get install -y postgresql16 postgresql16-server postgresql16-contrib
• Создаём системные базы данных:
/etc/init.d/postgresql initdb

Включаем и добавляем в автозагрузку PostgreSQL:
systemctl enable —now postgresql
Разрешаем доступ к PostgreSQL из сети:
vim /var/lib/pgsql/data/postgresql.conf
— в конфигурационном файле находим строку «listen_addresses = «localhost» и приводим её к следующему виду:

Перезапускаем PostgreSQL:

systemctl restart postgresql

Проверяем:

Создаём базы данных и пользователей с необходимыми правами:
Для заведения пользователей и создания баз данных, необходимо переключиться в учётную запись «postgres»:
psql -U postgres

  • зададим пароль для пользователя «postgres»:
    ALTER USER postgres WITH ENCRYPTED PASSWORD ‘P@ssw0rd’;
  • Создаём базы данных «prod»,»test» и «dev»:
    CREATE DATABASE prod;
    CREATE DATABASE test;
    CREATE DATABASE dev;
  • Создаём пользователей «produser»,»testuser» и «devuser»:
    CREATE USER produser WITH PASSWORD ‘P@ssw0rd’;
    CREATE USER testuser WITH PASSWORD ‘P@ssw0rd’;
    CREATE USER devuser WITH PASSWORD ‘P@ssw0rd’;
  • Назначаем для каждой базы данных соответствующего владельца:
    — для базы данных «prod» назначаем владельцем пользователя «produser»:
    GRANT ALL PRIVILEGES ON DATABASE prod to produser;
    — для базы данных «test» назначаем владельцем пользователя «testuser»:
    GRANT ALL PRIVILEGES ON DATABASE test to testuser;
    — для базы данных «dev» назначаем владельцем пользователя «devuser»:
    GRANT ALL PRIVILEGES ON DATABASE dev to devuser;
  • Заполняем базы данных тестовыми данными при помощи утилиты pgbench:
    pgbench -U postgres -i prod
    pgbench -U postgres -i test
    pgbench -U postgres -i dev
  • Проверяем:
    psql -U postgres
    \c prod
    \dt+

Аналогично и для других баз данных:

  • Настраиваем парольную аутентификацию для удалённого доступа:

vim /var/lib/pgsql/data/pg_hba.conf

  •  добавляем следующую запись:
  • перезапускаем PostgreSQL:

systemctl restart postgresql

SRV-BR:
• Установка пакетов базы данных:
apt-get install -y postgresql16 postgresql16-server postgresql16-contrib
• Проверяем:
— подключаемся с SRV-BR к SRV-HQ:
— из под пользователя «produser» к базе данных «prod»:

— из под пользователя «testuser» к базе данных «test»:

— из под пользователя «devuser» к базе данных «dev»

Настраиваем репликацию с SRV-HQ на SRV-BR:
SRV-HQ:
• Открываем конфигурационный файл «/var/lib/pgsql/data/postgresql.conf»:
vim /var/lib/pgsql/data/postgresql.conf
• редактируем следующие параметры:

где:
wal_level указывает, сколько информации записывается в WAL (журнал операций, ко-торый используется для репликации);
max_wal_senders — количество планируемых слейвов;
max_replication_slots — максимальное число слотов репликации;
hot_standby — определяет, можно или нет подключаться к postgresql для выполнения запросов в процессе восстановления;
hot_standby_feedback — определяет, будет или нет сервер slave сообщать мастеру о запросах, которые он выполняет.
• Перезапускаем службу postgresql:
systemctl restart postgresql
SRV-BR:

• Останавливаем службу postgres:
systemctl stop postgresql
• Удаляем содержимое каталога с данными:
rm -rf /var/lib/pgsql/data/*
• И реплицируем данные с SRV-HQ сервера:
pg_basebackup -h 10.0.10.2 -U postgres -D /var/lib/pgsql/data —wal-method=stream —write-recovery-conf

  • Назначаем владельца:

chown -R postgres:postgres /var/lib/pgsql/data/

  • Снова запускаем сервис postgresql:

systemctl start postgresql

Проверяем репликацию:

SRV-HQ:

  • Создаём тестовую базу данных:

psql -U postgres

CREATE DATABASE test_replica;

SRV-BR:

  • Смотрим список всех баз данных: