Найти тему
WindowsProfs

БазыДанных

Установка и настройка БД:

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 <название БД>