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:
- Смотрим список всех баз данных: