|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
Добрый день. Пытаюсь настроить потоковую репликацию. настраиваю мастер postgresql.conf : listen_addresses = '*' , wal_level = replica, max_wal_senders = 5, wal_keep_segments = 32, hot_standby = on конфиг во вложении. pg_hba.conf - host replication postgres 192.168.100.0/24 trust host replication root 192.168.100.0/24 trust перезагржаю службу - service postgresql-9.6 restart В логах : < 2017-06-30 07:19:29.028 EDT > LOG: database system is shut down < 2017-06-30 07:19:30.049 EDT > LOG: database system was shut down at 2017-06-30 07:19:29 EDT < 2017-06-30 07:19:30.051 EDT > LOG: MultiXact member wraparound protections are now enabled < 2017-06-30 07:19:30.052 EDT > LOG: database system is ready to accept connections < 2017-06-30 07:19:30.052 EDT > LOG: autovacuum launcher started Потом пытаюсь подключиться со второго сервера bash-4.1$ pg_basebackup -P -R -X stream -c fast -h 192.168.100.44 -U postgres -D /var/lib/pgsql/slave could not change directory to "/root": Permission denied pg_basebackup: could not connect to server: could not connect to server: Connection refused Is the server running on host "192.168.100.44" and accepting TCP/IP connections on port 5432? bash-4.1$ И так же не могу подключиться через pg_admin. Где блокируется? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2017, 17:02 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ncux199rus, Вопрос вообще не про базу а про основы system adminstration. Наиболее вероятные варианты: 1)на мастер сервере стоит listen='localhost' или что то подобное и база не слушает внешнюю сеть 2)firewall на мастер сервере 3)firewall на реплике 4)нет вообще связи между 2 серверами ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2017, 17:31 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
Maxim Boguk, 1) listen_addresses = '*' 2)firewall на мастер сервере и реплике выключен следующим образом Код: powershell 1. 2. 3.
3)firewall на реплике отключен 4)сервера пингуются ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2017, 11:11 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ncux199rus4)сервера пингуютсяа telnet по 5432 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2017, 11:32 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
qwwq, Видимо был закрыт firewall. Еще отключил Selinux (etc/selinux/config, SELINUX=disabled). Резервную копию удалось сделать. И запустить репликацию. На мастере после команды "select * from pg_stat_replication ;" postgres=# select * from pg_stat_replication ; pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | sent_location | write_location | flush_location | replay_location | syn c_priority | sync_state ------+----------+----------+------------------+----------------+-----------------+-------------+-------------------------------+--------------+-----------+---------------+----------------+----------------+-----------------+---- -----------+------------ 6229 | 10 | postgres | walreceiver | 192.168.100.24 | | 44710 | 2017-07-03 03:34:59.061489-04 | | streaming | A/B46D9348 | A/B40AD628 | A/B40AD628 | A/B40AD628 | 0 | async (1 row) Значит удалось подключиться. Но на втором сервере не получается запустить команду psql чтоб проверить. [postgres@test2 ~]$ pg_ctl -D data1/ start server starting [postgres@test2 ~]$ LOG: database system was interrupted; last known up at 2017-07-03 05:13:56 EDT LOG: entering standby mode LOG: redo starts at A/F90000D0 LOG: consistent recovery state reached at A/FE6B1380 LOG: started streaming WAL from primary at A/FF000000 on timeline 1 [postgres@test2 ~]$ psql FATAL: the database system is starting up psql: FATAL: the database system is starting up Куда смотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2017, 12:21 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ncux199rus, ждать, пока слейв накатит wal'ы до консистентного состояния. В логе будет сообщение "database system is ready to accept connections" после этого реплика принимать коннекты будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2017, 12:25 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ncux199rus, Проверьте параметр hot_standby . Скорее всего он off. Это не позволяет подключаться к реплике. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2017, 12:28 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ursido, Ой! Он включен. Я ошибся. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2017, 12:30 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ursido, да hot_standby на обоих серверах on. Melkij как узнать однозначно что он сейчас wal`ы преобразовывает в таблицы? Можно ли посмотреть какой командой? И не получается найти лог файл? Не могу найти каталог - pg_log. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2017, 12:45 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ncux199rus, У Вас стоит: log_destination = 'stderr' Лог нужно искать в системном каталоге. pg_log не будет сформирован. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2017, 13:13 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ncux199rus[postgres@test2 ~]$ psql FATAL: the database system is starting up psql: FATAL: the database system is starting up Куда смотреть? если по прошествии долгого времени в базу так и не пускает, проверьте что standby_mode = on в recovery.conf на реплике. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2017, 15:30 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
Самостоятельно она так и не поднялась. Создать новую машину с постгрес, без инциализации БД. Тогда заработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 09:19 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
Пришлось сделать инструкцию. Может кому поможет. Если что не корректно указано - говорите. Потоковая репликация Настройка мастера 1. yum install gcc, readline-devel, zlib-devel 2. Отключаем firewall: 1. # service iptables save 2. # service iptables stop 3. # chkconfig iptables off 3. скачиваем, распаковываем https://www.postgresql.org/ftp/source/ (tar xzf postgresql*) 4. из папки распакованного архива $(#) ./configure 5. из папки распакованного архива $(#) make world (-world полный пакет) 6. из папки распакованного архива $(#) make install-world (-world полный пакет) 7. [root@1 ~]# adduser postgres 8. [root@1 ~]# passwd postgres 9. mkdir /usr/local/pgsql/data (директория для инициализации версии postgresql, может быть любая, можно создавать под пользователем postgres) 10. Переменные среды: 1. postgres> bash -c "echo 'export PATH=/usr/local/pgsql/bin:/usr/local/pgsql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' >> ~/.profile" 2. postgres> bash -c "echo 'export PGDATA=/usr/local/pgsql/data' >> ~/.profile" (путь из пункта mkdir) 3. . /home/postgres/.profile (применение переменных) 11. [postgres@1 ~]$ initdb -k (инициализация бд только на мастере) 12. [postgres@1 ~]$ vi /usr/local/pgsql/data/postgresql.conf 1. listen_addres (*) 2. wal_level = replica 3. max_wal_senders = 3 4. wal_keep_segments = 32 5. hot_standby = on 13. [postgres@1 ~]$ vi /usr/local/pgsql/data/pg_hba.conf 1. # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust host all postgres 192.168.100.0/24 trust # IPv6 local connections: #host all all ::1/128 trust # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres trust #host replication postgres 127.0.0.1/32 trust #host replication postgres ::1/128 trust host replication postgres 192.168.100.0/24 trust 14. [postgres@1 ~]$ pg_ctl -D /usr/local/pgsql/data start -w -l /usr/local/pgsql/data/logfile (restart) 1. server starting Настройка slave (с 1 по 10 пункты полностью совпадают): 1. yum install gcc, readline-devel, zlib-devel 2. Отключаем firewall: 1. # service iptables save 2. # service iptables stop 3. # chkconfig iptables off 3. скачиваем, распаковываем https://www.postgresql.org/ftp/source/ (tar xzf postgresql*) 4. из папки распакованного архива $(#) ./configure 5. из папки распакованного архива $(#) make world (-world полный пакет) 6. из папки распакованного архива $(#) make install-world (-world полный пакет) 7. [root@1 ~]# adduser postgres 8. [root@1 ~]# passwd postgres 9. mkdir /usr/local/pgsql/data (директория для инициализации версии postgresql, может быть любая, можно создавать под пользователем postgres) 10. Переменные среды: 1. postgres> bash -c "echo 'export PATH=/usr/local/pgsql/bin:/usr/local/pgsql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' >> ~/.profile" 2. postgres> bash -c "echo 'export PGDATA=/usr/local/pgsql/data' >> ~/.profile" (путь из пункта mkdir) 3. . /home/postgres/.profile (применение переменных) 11. [postgres@1 ~]$ pg_basebackup -P -R -X stream -c fast -h 192.168.100.33 -U postgres -D /usr/local/pgsql/data/ (-h мастер) 12. [postgres@1 ~]$ vi /usr/local/pgsql/data/recovery.conf 1. standby_mode = 'on' primary_conninfo = 'user=postgres host=192.168.100.33 port=5432 sslmode=disable sslcompression=1' trigger_file = '/usr/local/pgsql/data/failover' #добаляем эту строку 13. [postgres@1 ~]$ pg_ctl -D /usr/local/pgsql/data start -w -l /usr/local/pgsql/data/logfile (restart) 1. server starting Проверка: на мастере : [postgres@1 selinux]$ psql postgres=# select * from pg_stat_replication ; pid | usesysid | usename | application_name | client_addr | client_hostnam e | client_port | backend_start | backend_xmin | state | sen t_location | write_location | flush_location | replay_location | sync_priority | sync_state -------+----------+----------+------------------+---------------+--------------- --+-------------+-------------------------------+--------------+-----------+---- -----------+----------------+----------------+-----------------+---------------+ ------------ 30897 | 10 | postgres | walreceiver | 192.168.100.7 | | 45027 | 2017-07-04 07:43:07.205399-04 | | streaming | 0/3 000728 | 0/3000728 | 0/3000728 | 0/3000728 | 0 | async (1 row) на slave: [postgres@1 selinux]$ psql postgres=# select pg_is_in_recovery(); pg_is_in_recovery ------------------- t (1 row) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 15:10 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ncux199rus... host all all 127.0.0.1/32 trust host all postgres 192.168.100.0/24 trust ... host replication postgres 192.168.100.0/24 trust ... Дооо! Офигенно безопасно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 15:40 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ursidoДооо!до отвращения оригинально и до омерзения прикольно поубивал бы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 15:49 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
qwwq, Если недовольство только по поводу безопасности, то поднятие потоковой репликации описано верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 17:23 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ncux199rusqwwq, Если недовольство только по поводу безопасности, то поднятие потоковой репликации описано верно?я не ДБА. я высказывался по поводу одного лишь словечка, режущего лично мне ухо. и это словечко -- не из вашей реплики. извините за оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 17:44 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
Правильно я понимаю что trigger_file в recovery_conf должен создаваться триггером если мастер сервер не отвечает? Подскажите какой-нибудь пример? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2017, 16:41 |
|
Настройка потоковой репликации.
|
|||
---|---|---|---|
#18+
ncux199rusПравильно я понимаю что trigger_file в recovery_conf должен создаваться триггером если мастер сервер не отвечает? Подскажите какой-нибудь пример? не, не так. В trigger_file мы указываем путь до файла. Постгрес мониторит существование этого файла и работает в стендбай режиме до тех пор пока этого файла не существует. Как только мы захотим чтоб стендбай перешел в режим мастера (открылся на запись), то нужно создать этот файл. Имя файла и путь произвольный (но как правило указывают где-то внутри DATADIR) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 10:09 |
|
|
start [/forum/topic.php?fid=53&fpage=69&tid=1996339]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
102ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 186ms |
0 / 0 |