Задание:

4. Установка и настройка сервера баз данных

  • 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:

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

Последнее изменение: среда, 25 декабря 2024, 17:56