powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Настройка потоковой репликации.
19 сообщений из 19, страница 1 из 1
Настройка потоковой репликации.
    #39480559
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Пытаюсь настроить потоковую репликацию.
настраиваю мастер
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.
Где блокируется?
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39480571
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ncux199rus,

Вопрос вообще не про базу а про основы system adminstration.
Наиболее вероятные варианты:
1)на мастер сервере стоит listen='localhost' или что то подобное и база не слушает внешнюю сеть
2)firewall на мастер сервере
3)firewall на реплике
4)нет вообще связи между 2 серверами
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39480828
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

1) listen_addresses = '*'
2)firewall на мастер сервере и реплике выключен следующим образом
Код: powershell
1.
2.
3.
 # service iptables save
# service iptables stop
# chkconfig iptables off


3)firewall на реплике отключен
4)сервера пингуются
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39480842
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ncux199rus4)сервера пингуютсяа telnet по 5432 ?
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39481642
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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



Куда смотреть?
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39481646
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ncux199rus,

ждать, пока слейв накатит wal'ы до консистентного состояния. В логе будет сообщение "database system is ready to accept connections" после этого реплика принимать коннекты будет.
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39481651
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ncux199rus,

Проверьте параметр hot_standby . Скорее всего он off. Это не позволяет подключаться к реплике.
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39481653
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ursido,

Ой! Он включен. Я ошибся.
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39481670
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ursido,
да hot_standby на обоих серверах on.

Melkij
как узнать однозначно что он сейчас wal`ы преобразовывает в таблицы? Можно ли посмотреть какой командой?
И не получается найти лог файл? Не могу найти каталог - pg_log.
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39481705
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ncux199rus,

У Вас стоит:

log_destination = 'stderr'

Лог нужно искать в системном каталоге. pg_log не будет сформирован.
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39481862
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ncux199rus[postgres@test2 ~]$ psql
FATAL: the database system is starting up
psql: FATAL: the database system is starting up

Куда смотреть?

если по прошествии долгого времени в базу так и не пускает, проверьте что standby_mode = on в recovery.conf на реплике.
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39482211
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Самостоятельно она так и не поднялась.
Создать новую машину с постгрес, без инциализации БД. Тогда заработало.
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39482455
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пришлось сделать инструкцию.
Может кому поможет.
Если что не корректно указано - говорите.

Потоковая репликация

Настройка мастера

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)





...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39482496
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...


Дооо! Офигенно безопасно.
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39482512
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ursidoДооо!до отвращения оригинально
и до омерзения прикольно
поубивал бы
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39482640
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwq,
Если недовольство только по поводу безопасности, то поднятие потоковой репликации описано верно?
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39482647
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ncux199rusqwwq,
Если недовольство только по поводу безопасности, то поднятие потоковой репликации описано верно?я не ДБА.

я высказывался по поводу одного лишь словечка, режущего лично мне ухо. и это словечко -- не из вашей реплики. извините за оффтоп.
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39493058
ncux199rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильно я понимаю что trigger_file в recovery_conf должен создаваться триггером если мастер сервер не отвечает?
Подскажите какой-нибудь пример?
...
Рейтинг: 0 / 0
Настройка потоковой репликации.
    #39493812
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ncux199rusПравильно я понимаю что trigger_file в recovery_conf должен создаваться триггером если мастер сервер не отвечает?
Подскажите какой-нибудь пример?

не, не так.
В trigger_file мы указываем путь до файла. Постгрес мониторит существование этого файла и работает в стендбай режиме до тех пор пока этого файла не существует. Как только мы захотим чтоб стендбай перешел в режим мастера (открылся на запись), то нужно создать этот файл. Имя файла и путь произвольный (но как правило указывают где-то внутри DATADIR)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Настройка потоковой репликации.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]