Собираем кластер master-slave на postgres для 1с

  • 21 April 2019
  • taku

Маленькая статейка как запустить кластер master-slave для 1с.

1) определяемся где будет находится директория с базами для удобства управления 1кластер=1 база

2) mkdir /bd, форматируем раздел mkfs.ext4 /dev/sdb1 , монтируем раздел в mount /dev/sdb1 /bd не забываем прописать в fstab

3) устанавливаем PG на мастере

sh -c 'echo "deb http://1c.postgrespro.ru/deb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro-1c.list'
wget --no-verbose -O - http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C | apt-key add - && apt-get update
apt-get install postgresql-pro-1c-9.6

4) ставим кластер

pg_createcluster -p 5501 --locale ru_RU.UTF-8 9.6 bd_5501 -d /bd/bd_5501

5) настраиваем бд конфигурим /etc/postgres/postgresql.conf

# -----------------------------
# PostgreSQL configuration file
# -----------------------------
#------------------------------------------------------------------------------
# FILE LOCATIONS
#------------------------------------------------------------------------------

data_directory = '/bd/bd_5501'
hba_file = '/etc/postgresql/9.6/bd_5501/pg_hba.conf'
ident_file = '/etc/postgresql/9.6/bd_5501/pg_ident.conf'
external_pid_file = '/var/run/postgresql/9.6-bd_5501.pid'

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
listen_addresses = '*'
port = 5501
max_connections = 100
unix_socket_directories = '/var/run/postgresql'
ssl = true
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'

#------------------------------------------------------------------------------
# RESOURCE USAGE (except WAL)
#------------------------------------------------------------------------------

shared_buffers = 512MB
work_mem = 26214kB
maintenance_work_mem = 128MB
dynamic_shared_memory_type = posix
shared_preload_libraries = 'online_analyze, plantuner,pg_stat_statements'

#------------------------------------------------------------------------------
# WRITE AHEAD LOG
#------------------------------------------------------------------------------

wal_level = replica
wal_buffers = 16MB
max_wal_size = 2GB
min_wal_size = 1GB
checkpoint_completion_target = 0.9

#------------------------------------------------------------------------------
# REPLICATION
#------------------------------------------------------------------------------

max_wal_senders = 3
wal_keep_segments = 128

#------------------------------------------------------------------------------
# QUERY TUNING
#------------------------------------------------------------------------------
effective_cache_size = 4608MB

#------------------------------------------------------------------------------
# RUNTIME STATISTICS
#------------------------------------------------------------------------------

stats_temp_directory = '/var/run/postgresql/9.6-bd_5433.pg_stat_tmp'

#------------------------------------------------------------------------------
# CLIENT CONNECTION DEFAULTS
#------------------------------------------------------------------------------

datestyle = 'iso, dmy'
timezone = 'localtime'
lc_messages = 'ru_RU.UTF-8' # locale for system error message
 # strings
lc_monetary = 'ru_RU.UTF-8' # locale for monetary formatting
lc_numeric = 'ru_RU.UTF-8' # locale for number formatting
lc_time = 'ru_RU.UTF-8' # locale for time formatting

default_text_search_config = 'pg_catalog.russian'

#------------------------------------------------------------------------------
# LOCK MANAGEMENT
#------------------------------------------------------------------------------

max_locks_per_transaction = 300 # min 10

#------------------------------------------------------------------------------
# VERSION/PLATFORM COMPATIBILITY
#------------------------------------------------------------------------------
escape_string_warning = off
standard_conforming_strings = off

#------------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#------------------------------------------------------------------------------

online_analyze.threshold = 50
online_analyze.scale_factor = 0.1
online_analyze.enable = on
online_analyze.verbose = off
online_analyze.min_interval = 10000
online_analyze.table_type = 'temporary'
plantuner.fix_empty_table = false

####For 1c###
#autovacuum = on
#track_counts = on

###FOR PG_ProBackup###
full_page_writes = on

6) стартуем кластер pg_ctlcluster 9.6 bd_5501 start

7) добавляем роли

psql -p 5501 -U postgres -d postgres -c "CREATE ROLE replica WITH PASSWORD 'passwordchangeme' REPLICATION LOGIN;"
psql -p 5501 -U postgres -d postgres -c "CREATE ROLE user_1c WITH PASSWORD 'passwordchangeme' LOGIN SUPERUSER CREATEDB REPLICATION;"

8) разрешаем подключаться по порту редактируем /etc/postgres/pg_hba.conf добавляес строчку если ее нет, если есть вносим согласно изменениям (только сеть своя)

host    replication    replica        192.168.183.0/24    md5

host    all    user_1c        192.168.183.0/24    md5

Настраиваем слейв проделываем все, до пункта 6,

1) с мастера просто копируем конфиги на слейв pg_hba.conf, postgresql.conf

кластер не стартуем!

2) добавим в конец строки hot_standby = on

echo "hot_standby = on" >> /etc/postgresql/9.6/bd_5501/postgresql.conf

3) потом удаляем все в директории дата

rm -Rf /bd/bd_5501/*

4) su postgres -c "pg_basebackup -h 192.168.183.13 -p 5501 -D /bd/bd_5501 -R -P -U replica -W --xlog-method=stream"

где 192.168.183.13 это адрес мастера

5) стартуем кластер pg_ctlcluster 9.6 bd_5501 start

6) проверяем что кластер поднялся pg_lsclusters

 

Вложение: