Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 6

Не работает репликация

22.06.2022, 15:23. Показов 1311. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Подскажите, как починить не работающую репликацию в postgres 14.3

pgpool2 10.99.2.30
master 10.99.2.31
slave 10.99.2.31

Создал тестовую БД bench_replication через pgpool Она есть, если подключаться к pgpool и slave, но нет на master.

Подскажите, куда смотреть?

pg_pool.conf

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
backend_clustering_mode = 'streaming_replication'
listen_addresses = '*'
port = 5432
pcp_listen_addresses = '*'
pcp_port = 9898
backend_hostname0 = '10.99.2.31'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/var/lib/postgresql/14/main'
backend_flag0 = 'ALLOW_TO_FAILOVER'
backend_application_name0 = 'master'
backend_hostname1 = '10.99.2.32'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/var/lib/postgresql/14/main'
backend_flag1 = 'ALLOW_TO_FAILOVER'
backend_application_name1 = 'slave0'
enable_pool_hba = on
pool_passwd = 'pool_passwd'
allow_clear_text_frontend_auth = on
num_init_children = 256
max_pool = 16
child_life_time = 5min
child_max_connections = 0
connection_life_time = 0
client_idle_limit = 0
log_destination = 'stderr'
syslog_facility = 'LOCAL0'
syslog_ident = 'pgpool'
pid_file_name = '/var/run/postgresql/pgpool.pid'
logdir = '/var/log/postgresql'
connection_cache = on
reset_query_list = 'ABORT; DISCARD ALL'
replicate_select = on
insert_lock = on
replication_stop_on_mismatch = off
load_balance_mode = on
ignore_leading_white_space = on
sr_check_period = 10
sr_check_user = 'postgres'
sr_check_password = 'BEtkwLzcetzYg6ZIcMj6HYey'
sr_check_database = 'postgres'
health_check_period = 10
health_check_timeout = 20
health_check_user = 'postgres'
health_check_password = 'BEtkwLzcetzYg6ZIcMj6HYey'
health_check_database = 'postgres'
failover_command = '/var/lib/postgresql/bin/failover.sh %d %P %H %R'
hostname0 = ''
pool_hba.conf
Code
1
2
3
4
5
6
7
host    all         all         10.99.0.0/32          scram-sha-256
host    all         postgres    0.0.0.0/0             scram-sha-256
local   all         all                               md5
local   all         postgres                          scram-sha-256
host    all         all         127.0.0.1/32          md5
host    all         all         ::1/128               md5
host    all         all         0.0.0.0/0             md5
postgresql.conf на master
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
data_directory = '/var/lib/postgresql/14/main'          # use data in another directory
hba_file = '/etc/postgresql/14/main/pg_hba.conf'        # host-based authentication file
ident_file = '/etc/postgresql/14/main/pg_ident.conf'    # ident configuration file
external_pid_file = '/var/run/postgresql/14-main.pid'                   # write an extra PID file
listen_addresses = '*'          # what IP address(es) to listen on;
port = 5432                             # (change requires restart)
max_connections = 100                   # (change requires restart)
unix_socket_directories = '/var/run/postgresql' # comma-separated list of directories
ssl = on
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
shared_buffers = 128MB                  # min 128kB
dynamic_shared_memory_type = posix      # the default is the first option
wal_level = logical                     # minimal, replica, or logical
max_wal_size = 1GB
min_wal_size = 80MB
max_wal_senders = 8             # max number of walsender processes
log_line_prefix = '%m [%p] %q%u@%d '            # special values:
log_timezone = 'Europe/Moscow'
cluster_name = '14/main'                        # added to process titles if nonempty
stats_temp_directory = '/var/run/postgresql/14-main.pg_stat_tmp'
datestyle = 'iso, dmy'
timezone = 'Europe/Moscow'
lc_messages = 'ru_RU.UTF-8'                     # locale for system error message
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'
include_dir = 'conf.d'                  # include files ending in '.conf' from
pg_hba.conf на master

Code
1
2
3
4
5
6
7
8
9
10
11
local   all             postgres                                peer
local   all             all                                     peer
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             ::1/128                 scram-sha-256
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256
host    replication    replication      10.99.2.32/32           md5
host    replication    postgres      10.99.2.32/32              scram-sha-256
host    all             all             0.0.0.0/0               md5
host    all            postgres      10.99.2.32/32              trust
postgresql.conf на slave
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
data_directory = '/var/lib/postgresql/14/main'          # use data in another directory
hba_file = '/etc/postgresql/14/main/pg_hba.conf'        # host-based authentication file
ident_file = '/etc/postgresql/14/main/pg_ident.conf'    # ident configuration file
external_pid_file = '/var/run/postgresql/14-main.pid'                   # write an extra PID file
listen_addresses = '*'          # what IP address(es) to listen on;
port = 5432                             # (change requires restart)
max_connections = 100                   # (change requires restart)
unix_socket_directories = '/var/run/postgresql' # comma-separated list of directories
ssl = on
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
shared_buffers = 128MB                  # min 128kB
dynamic_shared_memory_type = posix      # the default is the first option
wal_level = replica                     # minimal, replica, or logical
max_wal_size = 1GB
min_wal_size = 80MB
max_wal_senders = 8             # max number of walsender processes
primary_conninfo = 'host=10.99.2.31 port=5432 user=replication password=Pa$$w0rd123'                    # connection string to sending server
promote_trigger_file = '/var/lib/postgresql/trigger'            # file name whose presence ends recovery
hot_standby = on                        # "off" disallows queries during recovery
log_line_prefix = '%m [%p] %q%u@%d '            # special values:
log_timezone = 'Europe/Moscow'
cluster_name = '14/main'                        # added to process titles if nonempty
stats_temp_directory = '/var/run/postgresql/14-main.pg_stat_tmp'
datestyle = 'iso, dmy'
timezone = 'Europe/Moscow'
lc_messages = 'ru_RU.UTF-8'                     # locale for system error message
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'
include_dir = 'conf.d'                  # include files ending in '.conf' from
pg_hba.conf на slave
Code
1
2
3
4
5
6
7
8
9
10
local   all             postgres                                peer
local   all             all                                     peer
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             ::1/128                 scram-sha-256
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256
host    all             all             0.0.0.0/0               md5
host    replication     replication     10.99.2.31/32           md5
host    replication     postgres      10.99.2.32/32              scram-sha-256
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.06.2022, 15:23
Ответы с готовыми решениями:

CRM Dynamics 2011/MS SQL репликация не работает
Всем привет! Ребят, нужна помощь. Суть в следующем: есть CRM Dynamics 2011 (Win2012 Server, MS SQL Server 2012), которая работает уже...

Репликация
Можно ли создать реплику access-базы, расположенную на удаленном web-сервере? При попытке создать реплику с помощью команды...

Репликация
Пытаюсь сделать репликацию на MS SQL Server 2008. Создал публикацию, создал локальную подписку, всё создалось без ошибок. Но когда захожу в...

6
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
23.06.2022, 09:03
Если я правильно помню, то режим backend_clustering_mode = 'streaming_replication' обозначает, что за репликацию отвечают сами инстансы PostgreSQL. То есть вы должны были сами вручную настроить эту репликацию.
Соответственно у вас должен быть recovery.conf файл на ведомом узле, покажите его. Есть такой??
Если нет, значит потоковая репликация настроена неверно и вам сюда.
0
0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 6
23.06.2022, 11:18  [ТС]
Этого файла нет, начиная с 12 он включен в postgresql.conf
Нужно настраивать именно на ведомом хосте? На нем тестовая таблица как раз есть, а на мастере - нет.
Посмотрю настройки на slave и master.
0
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
23.06.2022, 15:14
Насчет файла Вы правы! Конечно! Что-то я проморгал много раз 14 и не придал этому значения.

Но вот насчет тестовой таблицы непонятно.
Как это на ведомом что-то есть в обход мастера??
Такого в принципе не может быть, значит у вас ведомый - не является ведомым.
Когда он ведомый, он не может исполнять RW-запросы (будет ошибка), только RO (у вас стоит host_standby=on)

Еще обязательно надо смотреть в логи, что там пишется при запуске каждого инстанса

Если инстансы у вас запускаются см. статус репликации запросами к представлениям
pg_stat_replication на ведущем
и кажется pg_stat_wal_receiver на ведомом
0
0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 6
23.06.2022, 19:12  [ТС]
Всю голову разбил, ничего не получается
Эти команды ничег оне выдают на мастере и слейве соответственно.
select * from pg_stat_replication;
select * from pg_stat_wal_receiver;
0
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
24.06.2022, 00:29
Значит репликация не настроена.
Давайте начнем последовательно. Сначала надо запустить мастер.
Убедитесь, что он стартует и в логах СУБД все ок - никаких ошибок и предупреждений.
Потом запустите ведомый сервер.
Также смотрите статус по логам СУБД.
В них должна быть надпись, что СУБД перешла в recovery mode и готова принимать подключения.

Если этого не происходит, значит надо повторно переделывать реплику по документации из ссылки выше.
Готовить basebackup и далее по описанию.

Потом уже можно перейти к pgpool как контролирующему процессу.
0
0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 6
24.06.2022, 20:38  [ТС]
Настроил по этой инструкции https://dondub.com/2022/06/pot... ostgresql/ Похоже изначально репликация была сделана неправильно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2022, 20:38
Помогаю со студенческими работами здесь

репликация 2
как сделать так, чтоб люди могли заполнять данные БД на разных машинах (без лок.сети), а потом это все сливалось в одну БД?? ...

репликация
как сделать так чтобы данные из разных реплик не конфликтовали, и передавались в основную БД???

Репликация
Извините, мало понимаю в БД, но нужно для лабы организовать репликацию м/у 2ух баз. Захожу в entrprize manager, мои БД находятся в sql...

Репликация
После переноса сервера на новое железо, появилась след проблема: Unable to replicate with server xx/xxxx: network operation did not...

репликация
помогите не могу создать в MS SQL 2014 Распространитель(distribution), а на 2012 как то все просто все и есть работает буду очень...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru