forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.LINUX

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 28.02.2017, 18:11
Anton Gorlov
Guest
 
Сообщений: n/a
По умолчанию postgresql нативная репликация

Anton Gorlov написал(а) к All в Feb 17 16:47:56 по местному времени:

Привет All!

Добрались наконец-то руки до нативной репликации postgresql (9.6).

Настроил на мастере:

wal_level = replica
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/9.6/main/archive/%f'
maxwalsenders = 1
walkeepsegments = 64


В pg_hba.conf соотвественно

host replication postgres 192.168.150.10/32 trust

Где 192.168.150.10/32 - это слейв.

Далее на слейве (сервис ращумеется остановлен)

В /var/lib/postgresql/9.6/main/recovery.conf прописываю

standby_mode = 'on'
primary_conninfo = 'host=192.168.150.9 port=5432 user=postgres'
trigger_file = '/var/lib/postgresql/9.6/main/trigger'
restore_command = 'cp /var/lib/postgresql/9.6/main/archive/%f "%p"'

После этого на мастере выполняю

psql -c "SELECT pgstart_backup('mybackup', true)"
копирую на слейв /var/lib/postgresql/9.6/main/
Далее на мастере выполняю psql -c "SELECT pgstopbackup()"

Запускаю слев. Они вроде как успешно синхронизируются, но в логе слейва полно записей типа

cp: не удалось выполнить stat для '/var/lib/postgresql/9.6/main/archive/00000001000000000000000E': Нет такого файла или каталога

При копировании с мастера на слейв в archive был только
00000001000000000000000D

00000001000000000000000E есть только в
main/pg_xlog


Вопрос что пропустил? Делалось согласно тфм https://wiki.postgresql.org/wiki/Streaming_Replication






С уважением. Anton aka Stalker

Linux Registered User #386476
[#TEAM:*#] [#Злой СисОп_#] [*Нeavy Metal!*] [*_Усачи]
--- GoldED+/LNX 1.1.5-b20160322
Ответить с цитированием
  #2  
Старый 01.03.2017, 11:11
Den Grigoriev
Guest
 
Сообщений: n/a
По умолчанию postgresql нативная репликация

Den Grigoriev написал(а) к Anton Gorlov в Mar 17 09:13:36 по местному времени:

Привет, Anton!

28 фев 17 16:47, Anton Gorlov -> All:

AG> Привет All!

AG> Добрались наконец-то руки до нативной репликации postgresql (9.6).

На мастере и на слейве желательно сделать:

kernel.shmmax = 1000000000
kernel.shmall = 2097152

AG> Настроил на мастере:

AG> wal_level = replica
AG> archive_mode = on
AG> archive_command = 'cp %p /var/lib/postgresql/9.6/main/archive/%f'
AG> maxwalsenders = 1
AG> walkeepsegments = 64

wallevel = hotstandby
archive_mode = on
archive_command = 'scp %p 192.168.150.10:/var/lib/postgresql/archive/'
maxwalsenders = 1
walkeepsegments = 64

WAL-сегменты должны копироваться на слейва.
Папочку '/var/lib/postgresql/archive' надо создать
и принадлежать она должна пользователю postgres.
(архивный каталог не должен быть вместе с базой данных)

Соответственно не слейве надо поднять SSН (apt-get install openssh-server),
сделать на мастере ключи SSН для пользователя postgres
и задеплоить публичный ключ на слейв
(приватный ключ должен быть без пароля):

$ sudo -i
# su -l postgres
$ mkdir .ssh
$ chown postgres.postgres .ssh
$ chmod 700 .ssh
$ ssh-keygen
$ ssh-copy-id postgres@192.168.150.10

AG> В pg_hba.conf соотвественно

AG> host replication postgres 192.168.150.10/32 trust

AG> Где 192.168.150.10/32 - это слейв.
Нехорошо делать репликацию от postgres.

CREATE USER repl SUPERUSER;

host replication repl 192.168.150.10/32 trust

AG> Далее на слейве (сервис ращумеется остановлен)

В postgresql.conf надо прописать:

hot_standby = on
effectivecachesize = 1GB
track_functions = all

AG> В /var/lib/postgresql/9.6/main/recovery.conf прописываю

AG> standby_mode = 'on'
AG> primary_conninfo = 'host=192.168.150.9 port=5432 user=postgres'
AG> trigger_file = '/var/lib/postgresql/9.6/main/trigger'
AG> restore_command = 'cp /var/lib/postgresql/9.6/main/archive/%f "%p"'

standby_mode = 'on'
primary_conninfo = 'host=192.168.150.9 port=5432 user=repl'
restore_command = 'cp /var/lib/postgresql/archive/%f %p'
archivecleanup_command = '/usr/lib/postgresql/9.6/bin/pgarchivecleanup /var/lib/postgresql/archive %r'

AG> После этого на мастере выполняю

AG> psql -c "SELECT pgstart_backup('mybackup', true)"
AG> копирую на слейв /var/lib/postgresql/9.6/main/
AG> Далее на мастере выполняю psql -c "SELECT pgstopbackup()"

AG> Запускаю слев. Они вроде как успешно синхронизируются, но в логе
AG> слейва полно записей типа

AG> cp: не удалось выполнить stat для
AG> '/var/lib/postgresql/9.6/main/archive/00000001000000000000000E': Нет
AG> такого файла или каталога

AG> При копировании с мастера на слейв в archive был только
AG> 00000001000000000000000D

AG> 00000001000000000000000E есть только в
AG> main/pg_xlog


AG> Вопрос что пропустил? Делалось согласно тфм
AG> https://wiki.postgresql.org/wiki/Streaming_Replication






AG> С уважением. Anton aka Stalker

AG> Linux Registered User #386476
AG> [#TEAM:*#] [#Злой СисОп_#] [*Нeavy Metal!*] [*_Усачи]
AG> --- GoldED+/LNX 1.1.5-b20160322
AG> * Origin: Sin rulez!!! Arcctg Must Die!!! (2:5059/37)

С наилучшими пожеланиями, Den.

--- -------------------------------
Ответить с цитированием
  #3  
Старый 01.03.2017, 13:21
Alexey Vissarionov
Guest
 
Сообщений: n/a
По умолчанию postgresql нативная репликация

Alexey Vissarionov написал(а) к Den Grigoriev в Mar 17 11:33:00 по местному времени:

Доброго времени суток, Den!
01 Mar 2017 09:13:36, ты -> Anton Gorlov:

AG>> Добрались наконец-то руки до нативной репликации postgresql (9.6).
DG> archive_command = 'scp %p 192.168.150.10:/var/lib/postgresql/archive/'

Коллега, вот при всем уважении: не scp, а все же rsync.

DG> Папочку '/var/lib/postgresql/archive' надо создать

Папочка сношает мамочку, а в файловой системе - каталоги.

DG> Соответственно не слейве надо поднять SSН (apt-get install

Фу.

DG> $ ssh-keygen

И не просто ssh-keygen, а ssh-keygen -t rsa -b 8192 -N ''

DG> primary_conninfo = 'host=192.168.150.9 port=5432 user=repl'

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


--
Alexey V. Vissarionov aka Gremlin from Kremlin
gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii

... Зеленого змия - в Красную книгу
--- /bin/vi
Ответить с цитированием
  #4  
Старый 02.03.2017, 05:52
Den Grigoriev
Guest
 
Сообщений: n/a
По умолчанию postgresql нативная репликация

Den Grigoriev написал(а) к Alexey Vissarionov в Mar 17 18:10:48 по местному времени:

Привет, Alexey!

01 мар 17 11:33, Alexey Vissarionov -> Den Grigoriev:

AV> Коллега, вот при всем уважении: не scp, а все же rsync.

Запуск rsync для переноса одного файла?
Да оно думает ещё, когда scp уже все сделал.

AV> Папочка сношает мамочку, а в файловой системе - каталоги.

Не хами.

DG>> $ ssh-keygen

AV> И не просто ssh-keygen, а ssh-keygen -t rsa -b 8192 -N ''

-t rsa щас и так по умолчанию, и нафига такой длинный ключ внутри сети?
Ну и вместо -N рука не отвалится два раза ENTER нажать...

DG>> primary_conninfo = 'host=192.168.150.9 port=5432 user=repl'

AV> Если логи завершения транзакций копируем внешними средствами, то
AV> работать с базой лучше через localhost.

Ага, со слейва на мастер через localhost... воздушно капельным путем.

С наилучшими пожеланиями, Den.

--- -------------------------------
Ответить с цитированием
  #5  
Старый 02.03.2017, 06:30
Alexey Vissarionov
Guest
 
Сообщений: n/a
По умолчанию postgresql нативная репликация

Alexey Vissarionov написал(а) к Den Grigoriev в Mar 17 05:00:00 по местному времени:

Доброго времени суток, Den!
01 Mar 2017 18:10:48, ты -> мне:

AV>> Коллега, вот при всем уважении: не scp, а все же rsync.
DG> Запуск rsync для переноса одного файла?
DG> Да оно думает ещё, когда scp уже все сделал.

Секретный параметр подсказать, или сами в `man rsync` найдете?

AV>> Папочка сношает мамочку, а в файловой системе - каталоги.
DG> Не хами.

В мыслях не было. А то, что вы путаете элемент файловой системы и абстракцию пользовательского интерфейса - увы, лишь показывает вашу однобокость как специалиста.

Попробую угадать: DBA, ага? Причем исключительно PostgreSQL, ага?

DG>>> $ ssh-keygen
AV>> И не просто ssh-keygen, а ssh-keygen -t rsa -b 8192 -N ''
DG> -t rsa щас и так по умолчанию,

На умолчания лучше не закладываться.

DG> и нафига такой длинный ключ внутри сети?

4096 - абсолютный минимум. 8192 - разумное значение на ближайшие 5 лет.

DG> Ну и вместо -N рука не отвалится два раза ENTER нажать...

Ааааа... это у вас количество вторичников никогда не измерялось десятками :-)

DG>>> primary_conninfo = 'host=192.168.150.9 port=5432 user=repl'
AV>> Если логи завершения транзакций копируем внешними средствами,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AV>> то работать с базой лучше через localhost.
DG> Ага, со слейва на мастер через localhost... воздушно капельным путем.

Помедитируйте на отмеченное. Мало ли, вдруг просветление наступит?..


--
Alexey V. Vissarionov aka Gremlin from Kremlin
gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii

... Пароль - как коньяк: чем больше звездочек, тем лучше
--- /bin/vi
Ответить с цитированием
  #6  
Старый 02.03.2017, 10:21
Den Grigoriev
Guest
 
Сообщений: n/a
По умолчанию postgresql нативная репликация

Den Grigoriev написал(а) к Alexey Vissarionov в Mar 17 11:36:40 по местному времени:

Привет, Alexey!

02 мар 17 05:00, Alexey Vissarionov -> Den Grigoriev:

AV> Секретный параметр подсказать, или сами в `man rsync` найдете?

Не надо. Про -W я лет двадцать как знаю.
Лично мне scp удобнее. При нашей нагрузке на базу (~гектар инсертов в сутки)
это не критично.

AV> В мыслях не было. А то, что вы путаете элемент файловой системы и
AV> абстракцию пользовательского интерфейса - увы, лишь показывает вашу
AV> однобокость как специалиста.

Я ничего не путаю, это ты придираешься.
А так, да я - очень однобокий специалост :-)

AV> Попробую угадать: DBA, ага? Причем исключительно PostgreSQL, ага?

Ага, весь такой DBA.
Первый мой компутер был CM-1420 на кафедре математики Ленинградского института киноинженеров.
Я на нем ещё студентом на фортране курсовики писал с 1987 года.
Потом различные ДВК-1/2/3 или DEC PDP/DEC MicroVAX, подсоединенные к чему-нибудь специфичному,
типа хроматографа или рентгеновского спектрометра, писал для них разное на ассемблере и C.
Потом, года с 1991 уже пошли всякие "IBM/PC-совместимые".
В 1997 пересел на Linux.
Так что я не разу не DBA, PostgreSQL у меня по необходимости, поскольку в конторе
есть два ораклоида и три SQLевода, а про постгрес тока я знаю...

DG>>>> primary_conninfo = 'host=192.168.150.9 port=5432 user=repl'
AV>>> Если логи завершения транзакций копируем внешними средствами,
AV> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AV>>> то работать с базой лучше через localhost.
DG>> Ага, со слейва на мастер через localhost... воздушно капельным
DG>> путем.

AV> Помедитируйте на отмеченное. Мало ли, вдруг просветление наступит?..

Пять раз промедитировал.

Слейв обращается к мастеру в псевдобазу "replication" пользователем "repl".
Он хочет знать какие файлы логов он ещё не обработал (это потому, что у нас
может отсутсвовать "archivecleanupcommand" и в архивном каталоге помойка)

Где тут localhost?


С наилучшими пожеланиями, Den.

--- -------------------------------
Ответить с цитированием
  #7  
Старый 02.03.2017, 21:31
Alexey Vissarionov
Guest
 
Сообщений: n/a
По умолчанию postgresql нативная репликация

Alexey Vissarionov написал(а) к Den Grigoriev в Mar 17 20:00:00 по местному времени:

Доброго времени суток, Den!
02 Mar 2017 11:36:40, ты -> мне:

AV>> Секретный параметр подсказать, или сами в `man rsync` найдете?
DG> Не надо. Про -W я лет двадцать как знаю.

А про --size-only ?

DG> Лично мне scp удобнее.

Скорее, привычнее. Мне когда-то тоже было привычнее...

AV>> В мыслях не было. А то, что вы путаете элемент файловой системы
AV>> и абстракцию пользовательского интерфейса - увы, лишь показывает
AV>> вашу однобокость как специалиста.
DG> Я ничего не путаю, это ты придираешься.

А как еще мне следовало ответить на огульное обвинение в хамстве?
Может, реальным хамством? Ну, чтобы уж точно сомнений не возникало?

AV>> Попробую угадать: DBA, ага? Причем исключительно PostgreSQL, ага?
DG> Ага, весь такой DBA.

А вот я ни разу не DBA. Тем не менее, меня в документации по MySQL разок процитировали...

DG> Первый мой компутер был CM-1420

Слышу звон седин, слышу... :-)


--
Alexey V. Vissarionov aka Gremlin from Kremlin
gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii

... Безумству храбрых - минута молчания
--- /bin/vi
Ответить с цитированием
  #8  
Старый 02.03.2017, 23:32
Anton Gorlov
Guest
 
Сообщений: n/a
По умолчанию postgresql нативная репликация

Anton Gorlov написал(а) к Den Grigoriev в Mar 17 22:08:02 по местному времени:

Привет Den!

01 мар 17 года (а было тогда 09:13)
Den Grigoriev в своем письме к Anton Gorlov писал:

AG>> Привет All!
AG>> Добрались наконец-то руки до нативной репликации postgresql
AG>> (9.6).
DG> На мастере и на слейве желательно сделать:
DG> kernel.shmmax = 1000000000
DG> kernel.shmall = 2097152

Это понятно и разумеется сделано

AG>> Настроил на мастере:
AG>> wal_level = replica
AG>> archive_mode = on
AG>> archive_command = 'cp %p /var/lib/postgresql/9.6/main/archive/%f'
AG>> maxwalsenders = 1
AG>> walkeepsegments = 64

DG> wallevel = hotstandby
DG> archive_mode = on
DG> archive_command = 'scp %p 192.168.150.10:/var/lib/postgresql/archive/'
DG> maxwalsenders = 1
DG> walkeepsegments = 64

Начиная с версии 9.6 нету wallevel = hotstandby, вместо него replica
https://www.postgresql.org/docs/9.6/...onfig-wal.html

In releases prior to 9.6, this parameter also allowed the values archive and hot_standby. These are still accepted but mapped to replica.

DG> WAL-сегменты должны копироваться на слейва.
DG> Папочку '/var/lib/postgresql/archive' надо создать
DG> и принадлежать она должна пользователю postgres.
DG> (архивный каталог не должен быть вместе с базой данных)
DG> Соответственно не слейве надо поднять SSН (apt-get install
DG> openssh-server), сделать на мастере ключи SSН для пользователя
DG> postgres и задеплоить публичный ключ на слейв (приватный ключ должен
DG> быть без пароля):

Да но в даннм случае это не спасёт. Так как тот указанный файл копируется в архив из pg_xlog в archive после унфриза мастера, то биш после
psql -c "SELECT pgstopbackup()"

А слейв, судя по мануалу нужно запускать до того как на мастере снимаю фриз

https://wiki.postgresql.org/wiki/Streaming_Replication
==========
$ psql -c "SELECT pgstartbackup('label', true)"
$ rsync -ac ${PGDATA}/ standby:/srv/pgsql/standby/ --exclude postmaster.pid
$ psql -c "SELECT pgstopbackup()"
==========

То есть на слейве этого файла всё равно не будет наомомент старта слейва

DG> $ sudo -i
DG> # su -l postgres
DG> $ mkdir .ssh

Настраивать ssh я умею :)

DG> Нехорошо делать репликацию от postgres.
DG> CREATE USER repl SUPERUSER;
DG> host replication repl 192.168.150.10/32 trust

Это тестовая песочница..так ч опокане более чем опыты.

AG>> Далее на слейве (сервис разумеется остановлен)
DG> В postgresql.conf надо прописать:
DG> hot_standby = on
DG> effectivecachesize = 1GB
DG> track_functions = all


В рассылке поцгреса вот что ответили:


==========
Looks like everything is fine.

The standby recovered all WAL it could find in /var/lib/postgresql/9.6/main/archive/
and then connected to the primary for streaming replication.

000000010000000000000012 is not archived yet, so the standby cannot find it.

Test replication by changing something on the primary and checking if the
change gets replicated.

===========






С уважением. Anton aka Stalker

Linux Registered User #386476
[#TEAM:*#] [#Злой СисОп_#] [*Нeavy Metal!*] [*_Усачи]
--- GoldED+/LNX 1.1.5-b20160322
Ответить с цитированием
  #9  
Старый 03.03.2017, 06:41
Eugene Muzychenko
Guest
 
Сообщений: n/a
По умолчанию postgresql нативная репликация

Eugene Muzychenko написал(а) к Alexey Vissarionov в Mar 17 09:15:09 по местному времени:

Привет!

02 Mar 17 20:00, you wrote to Den Grigoriev:

DG>> Первый мой компутер был CM-1420

AV> Слышу звон седин, слышу... :-)

А мой первый компьютер был БЭСМ-6 в 1980-м - можно, я тут в уголке посижу? :)

Всего доброго!
Евгений Музыченко
eu-gene@muzy-chen-ko.net (все дефисы убрать)

--- GoldED+/W32-MSVC 1.1.5-b20161221
Ответить с цитированием
  #10  
Старый 03.03.2017, 06:51
Den Grigoriev
Guest
 
Сообщений: n/a
По умолчанию postgresql нативная репликация

Den Grigoriev написал(а) к Alexey Vissarionov в Mar 17 08:29:00 по местному времени:

Привет, Alexey!

02 мар 17 20:00, Alexey Vissarionov -> Den Grigoriev:

AV> А про --size-only ?

Зачем? -W, --whole-file - никаких проверок, тупо копируем файл,
ИМХО, самый быстрый алгоритм.

AV> А вот я ни разу не DBA. Тем не менее, меня в документации по MySQL
AV> разок процитировали...

И чё?

А моё ПО автоматизации испытаний фотоматериалов по всем Штатам продавалось,
(поскольку расчитано было на Brumicro-совместимое оборудование, другого у нас не было)
пока эра цифровой фотографии не наступила.

Дальше будем пиписьками меряться?


С наилучшими пожеланиями, Den.

--- -------------------------------
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 07:25. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot