Форум программистов, компьютерный форум CyberForum.ru

PostgreSQL

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Viktor_99
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 54
#1

Настройка репликации - PostgreSQL

21.07.2016, 11:51. Просмотров 1594. Ответов 34
Метки нет (Все метки)

Помогите разобраться, как настроить Репликацию в PostgreSQL операционная система Windows 7

Делал следующим образом:
На стороне основного сервера

1) Создал пользователя User с правами, с которыми может создавать потоковую репликацию и резервные копии

2) В файле postgresql.conf сделал следующие изменения:

#max_wal_senders = 2
#wal_keep_segments = 256
#wal_level = hot_standby
#checkpoint_segments = 16 (данной строки не было, я прописал её отдельно)

3) В файле pg_hba дописал в конце ip адрес 2-ого сервера (именно дописал и ничего не менял)

host replication User 162.254.214.35/32 trust

(/32 в конце не знаю, нужно ли доставлять?)

-------------------------------------------------------------------------------------------------------------------
В резервном сервере:

1) В файле postgresql.conf изменил

#hot_standby = off на hot_standby = on

2) В файле recovery.conf дописал

standby_mode = 'on'
primary_conninfo = 'host=192.168.0.3 port=5433 user=User'
--------------------------------------------------------------------------------------------------------------------
Больше ничего не делал
Но ничего не работает.... Может кто подскажет, что я упустил или что сделал не так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mailomsk
1 / 1 / 0
Регистрация: 23.09.2016
Сообщений: 28
27.09.2016, 10:31     Настройка репликации #21
Цитата Сообщение от grgdvo Посмотреть сообщение
Да, там расписана настройка потоковой репликации. Архивирование логов включено дополнительно.
Только с версткой они там местами накосячили, слешей не хватает в командных строках.
Можно еще немного Вас помучить своими расспросами??
для резервного копирования БД 1с в колличестве 12 шт общим объемом под 300гб. Данный способ можно считать наиболее приемлемым?? Или лучше рассматривать иные настройки репликации!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grgdvo
504 / 445 / 121
Регистрация: 02.09.2012
Сообщений: 1,311
27.09.2016, 14:57     Настройка репликации #22
Риски здесь такие (вкратце):
1. Насколько я знаю в версиях 1C PostgreSQL будет работать только потоковая репликация. Честно говоря на прямую с 1C я редко сталкиваюсь, но успешные примеры настройки в интернете показывают, что это продолжает работать. Думаю вы знаете, что нужно использовать именно измененный PostgreSQL, выпущенный самой 1С. Другие версии не пашут.
2. Вообще репликация достаточно капризная технология (за ней нужно следить, иначе потом будете долго разгребать). Но ее бесспорное преимущество, что можно существенно сократить объем теряемых данных при аварии основного сервера (при правильной настройке и работе в худшем случае последние незавершенные транзакции, в терминах бухгалтерии, например, не провели 10 последних документов).
3. Репликация может быть заменена на непрерываное архивирование логов, если не нужно hot_standby. То есть, если вы готовые потратить время (и ваши бухгалтера готовы ждать некоторое время, требуемое на восстановление работы), чтобы поднять базу из архива, то лучше остановиться на архивировании. Объем теряемых данных сопоставим с п.1 (опять же, если все работает и мы следим, что оно действительно работает).
4. Если требования к теряемым в случае аварии данным не сильно велики (тут как построена работа бухгалтерии), то можно жить на обычных бакапах, которые просты в реализации и в принципе стабильны в работе. То есть: работа закончилась, в 22:00 запустили бакапирование, пока никого нет. Ну здесь риск потери данных увеличивается до суток. Есть возможность бакапировать чаще - ну значит можете сократить время.

Учитывая сказанное, также учитывая ваши 12 баз, да еще объем 300 гигабайт, да еще 1C (а это всегда огонь!!!), то по-хорошему надо искать возможность реализовать 1 + 2 ну или 2, если не так важна скорость восстановления после сбоя. Причем делать это хотя бы на два разных сервера. Все таки важность данных на мой взгляд перевешивает все остальное, а значит обычные бакапы не катят.

Как-то так.
mailomsk
1 / 1 / 0
Регистрация: 23.09.2016
Сообщений: 28
21.10.2016, 18:20     Настройка репликации #23
Доброго времени суток!
Возможно установить на 1 ПК (в данном случае на ПК который выполняет роль ведомого сервера)
Поднять дополнительно сервер PG для установки отдельных БД 1с и работы с ними.
Если 2 разные версии PG то устанавливается и можно работать, а вот если версия одна!
Если подскажете другой способ поднятия двух рабочих PG на 1 машине буду благодарен за поддержку!
grgdvo
504 / 445 / 121
Регистрация: 02.09.2012
Сообщений: 1,311
22.10.2016, 07:04     Настройка репликации #24
Много различных экземпляров (instance) PG может одновременно работать на одном и том же узле (host).
Для запуска достаточно соблюсти два условия:
1) естественно различные директории с данными
2) разные порты прослушивания
Возможно для 1С будут какие-то тонкости при установке - у них модифицированные версии PG, но вроде не должно.
Также возможно придется подкорректировать параметры системы и параметры самого PG по части тонкой настройки
(зависит от ваших объемов данных и нагрузки).
mailomsk
1 / 1 / 0
Регистрация: 23.09.2016
Сообщений: 28
30.10.2016, 18:25     Настройка репликации #25
Доброго времени суток! Подскажите по какой возможной причине не стартует PG ведомый (в ОС) в журнале запись что хз что случилось смотри в логе PG в логе только вот такая запись
2016-10-30 16:00:10 MSK СООБЩЕНИЕ: работа системы БД была прервана в процессе восстановления, время в журнале: 2016-10-30 14:05:30 MSK
2016-10-30 16:00:10 MSK ПОДСКАЗКА: Если это происходит постоянно, возможно, какие-то данные были испорчены и для восстановления стоит выбрать более раннюю точку.
2016-10-30 16:00:11 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:12 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:13 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:14 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:15 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:16 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:17 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:18 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:19 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:20 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:21 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:22 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:23 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:25 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:26 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:27 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:28 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:29 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:30 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:31 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:32 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:33 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:34 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:35 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:36 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:37 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:38 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:39 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:40 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:41 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:42 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:43 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:44 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:45 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:46 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:47 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:48 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:49 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:50 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:51 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:52 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:53 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:54 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:55 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:56 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:57 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:58 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:00:59 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:00 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:01 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:02 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:03 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:04 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:05 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:06 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:07 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:08 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:09 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:10 MSK ВАЖНО: система баз данных запускается
2016-10-30 16:01:27 MSK СООБЩЕНИЕ: переход в режим резервного сервера
2016-10-30 16:01:28 MSK СООБЩЕНИЕ: запись REDO начинается со смещения 899/A5000060
2016-10-30 16:01:28 MSK СООБЩЕНИЕ: согласованное состояние восстановления достигнуто по смещению 899/A5001090
2016-10-30 16:01:28 MSK СООБЩЕНИЕ: запись нулевой длины по смещению 899/A60003C0
2016-10-30 16:01:28 MSK СООБЩЕНИЕ: система БД готова к подключениям в режиме "только чтение"
2016-10-30 16:01:28 MSK СООБЩЕНИЕ: начало передачи журнала с главного сервера, с позиции 899/A6000000 на линии времени 1
Добавлено через 32 минуты
На Мастере никто не работает! 1с сервер выключен, данные в принципе не меняются!
На Слейве после попытки запуска PG и сообщении об ошибке в процессах висят 4-5 процессов PG!

Добавлено через 2 минуты
После повторной попытки запуска PG-Slave ошибка в журнале ОС
2016-10-30 20:37:45 +07 ВАЖНО: файл блокировки "postmaster.pid" уже существует
2016-10-30 20:37:45 +07 ПОДСКАЗКА: Другой экземпляр postmaster (PID 3152) работает с каталогом данных "D:/Bases1c_arh"?
Добавлено через 7 минут
Вообще ничего не понимаю! Служба GP не запущена! на Slave
Но PG работает!

Добавлено через 2 минуты
M-192.168.1.1-PG служба запущена и работает
S-192.168.1.2-PG служба не запускается но PG работает
Могу подключиться к PG как с M так и с S

Добавлено через 15 минут
Версиии на M и на S Одинаковые PostgresPro 1C_9.4.9_X64bit_1C

Добавлено через 16 минут
Рестарт S сервера помогло!

Добавлено через 1 час 1 минуту
Подскажите пожалуйста по поводу занимаемого места на диске резервных копий wal!
Включил archive_mode = on
archive_command = 'copy "%p" "d:\\pg_xlog_backup\\%f"'
Размер папки pg_xlog_backup вырос до 100 г.б.
Размер pg_xlog не превышает 2 г.б.
На M запустил только Vacuum Full

Добавлено через 1 минуту
Встречалось упоминание о (Внимание, они могут забить все место на диске, нужно настроить очистку при переполнении)
Как это сделать??
grgdvo
504 / 445 / 121
Регистрация: 02.09.2012
Сообщений: 1,311
31.10.2016, 00:01     Настройка репликации #26
Цитата Сообщение от mailomsk Посмотреть сообщение
Встречалось упоминание о (Внимание, они могут забить все место на диске, нужно настроить очистку при переполнении)
Как это сделать??
например, pg_archivecleanup или archive_cleanup_command настроить
только внимательно прочитайте, что ей на вход надо подсовывать
mailomsk
1 / 1 / 0
Регистрация: 23.09.2016
Сообщений: 28
01.11.2016, 08:36     Настройка репликации #27
Доброго времени суток!
На S-сервере сегодня появилась такая ошибка в лог файле
2016-11-01 10:52:56 +07 СООБЩЕНИЕ: начало передачи журнала с главного сервера, с позиции 8D9/99000000 на линии времени 1
2016-11-01 10:52:56 +07 ВАЖНО: не удалось извлечь данные из потока WAL: ОШИБКА: запрошенный сегмент WAL 00000001000008D900000099 уже удалён
Можно ли устранить не создавая репликацию с нуля!
Спасибо1

Добавлено через 18 минут
wal_keep_segments = 256
checkpoint_segments = 16
wal файлов 304 шт. размер 4,7 г.б.

Добавлено через 2 минуты
Увеличить количество checkpoint_segments??

Добавлено через 1 час 17 минут
Буду признателен в помощи по правильной настройке!
На Master включаю
archive_mode = on
archive_command = 'copy "%p" "p:\\pg_xlog_backup\\%f"' Каталог размером в 500г.б. iscsi (доступен всем серверам)
Исправил значения
wal_keep_segments = с 256 на 500
checkpoint_segments = с 16 на 50

На Slave
В файле recovery.conf
standby_mode='on'
primary_conninfo='host=192.168.1.1 port=5432 user=repl password=repl'
trigger_file = 'D:\Bases1c_arh\end_trig'

Как в него правильно записать и нужно ли! И как расположить команды в файле.
restore_command = 'cp /path/to/archive/%f %p'
для ОС windows
restore_command = 'copy "p:\\pg_xlog_backup\\%f" "%p"'

*archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r'
для ОС windows
как правильно записать команду я к сожалению не знаю
И с какой переодичностью архив будет подчищаться.
grgdvo
504 / 445 / 121
Регистрация: 02.09.2012
Сообщений: 1,311
01.11.2016, 16:09     Настройка репликации #28
Не вижу в конфигах, какое значение wal_level у вас выставлено? и вы какой метод репликации реализуете, потоковая репликация или архивирование логов?
По хорошему бы проанализировать логи, определить момент, когда первый раз произошла рассинхронизация слейва и мастера. Там же по логам скорее всего станет ясно, что произошло и почему не хватило wal_keep_segments=256.
wal_keep_segments можно действительно увеличить (если архивирование логов), а вот checkpoint_segments на слейве я бы не стал пока увеличивать.
архив подчищается (вызывается archive_cleanup_command) при restartpoint - это как checkpoint, только формируется при archive или standby режиме сервера.
mailomsk
1 / 1 / 0
Регистрация: 23.09.2016
Сообщений: 28
01.11.2016, 16:18     Настройка репликации #29
Цитата Сообщение от grgdvo Посмотреть сообщение
Не вижу в конфигах, какое значение wal_level у вас выставлено? и вы какой метод репликации реализуете, потоковая репликация или архивирование логов?
По хорошему бы проанализировать логи, определить момент, когда первый раз произошла рассинхронизация слейва и мастера. Там же по логам скорее всего станет ясно, что произошло и почему не хватило wal_keep_segments=256.
wal_keep_segments можно действительно увеличить (если архивирование логов), а вот checkpoint_segments на слейве я бы не стал пока увеличивать.
архив подчищается (вызывается archive_cleanup_command) при restartpoint - это как checkpoint, только формируется при archive или standby режиме сервера.
wal_level = 'hot_standby'
Репликация потоковая!
Архивирование на всякий случай!
Перезагружал оба сервера!
Настройки на обоих серверах идентичные так как происходит копирование всего мастера!
Только корректируются файлы на слейве!
grgdvo
504 / 445 / 121
Регистрация: 02.09.2012
Сообщений: 1,311
01.11.2016, 16:48     Настройка репликации #30
Цитата Сообщение от mailomsk Посмотреть сообщение
Репликация потоковая!
Может были моменты, когда рвалась и не восстанавливалась связь между мастером и слейвом, в результате пошла рассинхронизация при передаче логов. Или мастер перегружался, слейв становился мастером, потом обратное возвращение мастера происходило с ошибкой. В результате тоже проблемы с синхронизацией возникали.
mailomsk
1 / 1 / 0
Регистрация: 23.09.2016
Сообщений: 28
01.11.2016, 16:56     Настройка репликации #31
Не должен наверное переходить в Мастер слейв???
В файле recovery.conf
standby_mode='on'
primary_conninfo='host=192.168.1.1 port=5432 user=repl password=repl'
trigger_file = 'D:\Bases1c_arh\end_trig'
mailomsk
1 / 1 / 0
Регистрация: 23.09.2016
Сообщений: 28
03.11.2016, 11:46     Настройка репликации #32
Как правильно перезагружать сервера??
M потом S
Или на оборот??
Нужно выключить M сервер на 20-30 минут для ТО.
Что делать в это время с S сервером???
grgdvo
504 / 445 / 121
Регистрация: 02.09.2012
Сообщений: 1,311
04.11.2016, 00:33     Настройка репликации #33
Цитата Сообщение от mailomsk Посмотреть сообщение
Что делать в это время с S сервером???
Следите за логами. Должен восстановить коннект с мастером по его "возвращению".
mailomsk
1 / 1 / 0
Регистрация: 23.09.2016
Сообщений: 28
07.11.2016, 14:38     Настройка репликации #34
Цитата Сообщение от mailomsk Посмотреть сообщение
для ОС windows
restore_command = 'copy "p:\\pg_xlog_backup\\%f" "%p"'
*archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r'
для ОС windows
как правильно записать команду я к сожалению не знаю
И с какой переодичностью архив будет подчищаться.
С этим вопросом можете подсказать?
Как правильно на мастере указать что бы копировались логи и подчищались раз 1-2 дня
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2016, 16:00     Настройка репликации
Еще ссылки по теме:

PgAdmin настройка PostgreSQL
SQL Server Ошибка репликации транзакций
Настройка Репликации WS 2008r2 Windows Server Server 2008
PostgreSQL Настройка сети для работы с PostgreSQL

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

Или воспользуйтесь поиском по форуму:
grgdvo
504 / 445 / 121
Регистрация: 02.09.2012
Сообщений: 1,311
08.11.2016, 16:00     Настройка репликации #35
Минимальный набор параметров для архивирования
wal_level=archive
archive_mode = on
archive_command = '....' (см. в postgresql.conf пример или в документации, должна вернуть 0, когда сегмент лога скопирован)
надо перезапустить сервер
Если все идет тип-тор, то в pg_xlog файлы должны перезаписываться по мере работы базы.
А вот в директории архива (которая должна быть указана в archive_command), эти файлы должны копиться.
Суть этого накопления - иметь возможность восстановиться практически на любую транзакцию в прошлом.
Но это восстановление будет работать только в одном случае, если у вас есть некоторый базовый бакап всего кластера.
То есть для успешного восстановления нужно иметь: базовый бакап + историю логов.

Учитывая сказанное, "подчищение" логов должно быть реализована со смыслом.
Запоминаем текущую контрольную точку, делаем базовый бакап, удаляем логи раньше запомненной контрольной точки в архивной директории.
Таким образом, жизненный цикл получается
базовый бакап - отчищаем прошлую историю - копим новые логи - базовый бакап - отчищаем прошлую историю - копим новые логи - ........

Из сказанного... Если происходит накопление логов, значит где-то ошибка при копировании логов. Обязательно нужно следить, чтобы каждая последующая накопленная история логов согласовывалась со своим соответствующим базовым бакапом, иначе не получится восстановиться (только до состояния базового бакапа). Если у вас еще и репликация настроена (вы вроде выше писали об этом), то тут надо в двойне смотреть, что не пропадал рассинхронизация. Вообще обычно либо архивирование, либо репликация. "Двойные" схемы сложны в поддержке.
Yandex
Объявления
08.11.2016, 16:00     Настройка репликации
Ответ Создать тему
Опции темы

Текущее время: 11:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru