Установка и настройка БД:
apt-get update
apt-get install postgresql12-server postgrelsql12-contrib
Перед запуском службы необходимо создать системные базы данных: /etc/init.d/postgresql initdb
systemctl start postgresql
systemctl enable postgresql
в конец /var/lib/pgsql/data/postgresql.conf дописываем:
listen_addresses = '*'
в конец /var/lib/pgsql/data/pg_hba.conf дописываем:
host all all 0.0.0.0/0 password
Подключится к БД, создать базы, пользователя и настроить привилегии:
psql -U postgres
CREATE DATABASE prod;
CREATE DATABASE test;
CREATE DATABASE dev;
CREATE USER dbadmin WITH PASSWORD 'P@ssw0rd';
GRANT ALL PRIVILEGES ON DATABASE prod to dbadmin;
GRANT ALL PRIVILEGES ON DATABASE test to dbadmin;
GRANT ALL PRIVILEGES ON DATABASE dev to dbadmin;
\l
\du
\q
pgbench -U postgres -i prod
pgbench -U postgres -i test
pgbench -U postgres -i dev
Репликация и отказоустойчивость БД
https://postgrespro.ru/docs/postgresql/16/runtime-config-replication
На мастере
psql -U postgres
CREATE USER replica WITH REPLICATION PASSWORD 'password';
vim /var/lib/pgsql/data/pg_hba.conf
#
host replication replica 0.0.0.0/0 password
vim /var/lib/pgsql/data/postgresql.conf
#
wal_level = logical
#
На слейве
systemctl stop postgresql
rm -rf /var/lib/pgsql/data/*
pg_basebackup -h адрес_SRV-HQ -U replica -P -R -D /var/lib/pgsql/data
systemctl start postgresql
если нет прав доступа:
ls -lsa /var/lib/pgsql/data
chown postgres:postgres /var/lib/pgsql/data -R
Проверить на мастере:
psql -U postgres -c “select state,reply_time from pg_stat_replication”
На SW-HQ(отказоустойчивость):
apt-get install haproxy
systemctl enable haproxy
vim /etc/haproxy/haproxy.cfg
#
frontend dbms.company.prof
bind *:5432
mode tcp
default_backend pg_servers
backend pg_servers
mode tcp
server SRV-HQ адрес_SRV-HQ:5432 check
server SRV-BR адрес_SRV-BR:5432 check backup
#
haproxy -c -f /etc/haproxy/haproxy.cfg
systemctl restart haproxy
Проверить: нужно подключиться с любого SRV с помощью утилиты psql по имени
psql -h dbms.company.prof -U dbadmin -d <название БД>