Сегодня будем настраивать основной сервер базы данных Postgre и сервер репликации на Альт Север 10.
Начнем с того, что установим PosgreSQL:
apt-get install -y postgresql16 postgresql16-contrib
systemctl enable postgresql
/etc/init.d/postgresql initdb
Выполним настройку основного сервера:
nano /etc/postgresql/12/main/pg_hba.conf
Найдем в нем строчку «If you want to allow non-local connections, you need to add more» и впишем после нее такую строчку:
host replication postgres REPLICA_ВНУТРЕННИЙ_IP/24 md5
Отредактируем конфиг:
nano /etc/postgresql/12/main/postgresql.conf
находим в нем эти параметры, раскомментируем их и подставляем указанные значения
listen_addresses = 'localhost, MASTER_ВНУТРЕННИЙ_IP'
wal_level = hot_standby
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 8
hot_standby = on
systemctl restart postgresql
Теперь перейдем к настройке баз основного сервера:
psql -u postgres
Чтобы создать пользователя вводим команду:
create user <dbuser> with passsword '<password>';
Чтобы выдать пользователю права администратора домена:
alter user <dbuser> superuser;
Список всех баз:
\list
Выбор базы:
\c <dbname>
Список всех таблиц и их вес:
\dt+
Вывод таблицы:
select * from <table name>;
Сменить пользователя:
\c - <uname>
Для выдачи прав чтения и записи таблиц в выбранной базе:
grant pg_write_all_data to <dbuser>;
grant pg_read_all_data to <dbuser>;
Создадим пользователя dbadmin и разрешим ему подключение ко всем базам:
create user dbadmin with passsword 'P@ssw0rd';
alter user dbadmin superuser;
nano /etc/postgresql/12/main/pg_hba.conf
Найдем в нем строчку local all all peer
Измените значение строки на local all dbadmin md5
Для подключения пользователей к конкретной базе:
Раздел IPv4 local connections
добавить строки host <dbname> <dbuser> <ip клиента>/<mask> md5
для каждого пользователя
Пример: host all dbadmin 10.0.20.11/24 md5
Для проверки доступа подключаемся командой:
psql -d <dbname> -U <dbuser>
Чтобы заполнить базу случайными данными:
pgbench -i <dbname> -U <superuser>
Аналогично настроим сервер репликации:
Найдем в нем строчку «If you want to allow non-local connections, you need to add more» и впишем после нее такую строчку:
host replication postgres MASTER_ВНУТРЕННИЙ_IP/24 md5
nano /etc/postgresql/12/main/postgresql.conf
находим в нем эти параметры, раскомментируем их и подставляем указанные значения
listen_addresses = 'localhost, REPLICA_ВНУТРЕННИЙ_IP'
wal_level = hot_standby
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 8
hot_standby = on
Перейдем в пользователя postgres и скопируем базу основного сервера:
su - postgres (на AltLinux su - postgres -s /bin/bash)
rm -rf /var/lib/pgsql/data/*
pg_basebackup -h 10.0.10.2 -U postgres -D /var/lib/pgsql/data --wal-method=stream --write-recovery-conf
Выход из пользователя postgres:
exit
service postgresql start
Проверка репликации:
psql -u postgres
CREATE TABLE test_table;
На сервере репликации она должна появится:
\list
Источники: sysahelper, selectel