процесс доставки журнала (archive_timeout)

Я очень новичок в postgresql. Я хочу спросить о процессе репликации доставки журналов. Я знаю, что параметр тайм-аута является необязательным в процессе доставки журнала. Он указывает, что мы не хотим, чтобы postgreSQL ждал, пока файлы WAL будут содержать 16 МБ для отправки, как это происходит по умолчанию. Мой вопрос: лучше иметь параметр тайм-аута (например: archive_timeout = 60) или нет? это когда мы делаем параметр тайм-аута, процесс файла WAL в доставке журналов происходит быстрее, чем по умолчанию (значение 0 по умолчанию указывает, что это будет происходить до тех пор, пока WAL не будет заполнен)? Зачем?

Извините, я все еще запутался в этой ситуации.


person Najwa    schedule 17.11.2014    source источник


Ответы (1)


Если вам нужна своевременная репликация, я предлагаю включить потоковую репликацию, а также доставку журналов.

Основная цель archive_timeout — гарантировать, что при использовании доставки журналов для резервных копий PITR существует максимальное временное окно потери данных в ситуациях, когда сервер не создает много WAL, поэтому ротация сегментов в противном случае будет нечастой.

person Craig Ringer    schedule 17.11.2014
comment
Спасибо за ваш ответ. Извините, я не понимаю, что означает, что сервер не генерирует много WAL, поэтому в противном случае ротация сегментов была бы нечастой? Вы можете объяснить больше об этом? и еще 1 вещь, я также выполняю потоковую репликацию, и это работает, но затем, когда я выполняю доставку журналов, это не работает, потому что на ведомом устройстве запускается система базы данных. Я ссылаюсь на этот шаг на themagicnumber.es/replication-in-postgresql-i?lang=en. Я использую postgresql версии 9.3. Я надеюсь, что вы можете мне помочь. - person Najwa; 17.11.2014
comment
@Najwa Ну, скажем, вы делаете одну маленькую INSERT каждую минуту. Это, вероятно, будет производить менее КБ WAL за одну запись, поэтому с сегментами размером 16 МБ потребуется justify_interval(INTERVAL '16384' SECOND) = около 4 с половиной часов, прежде чем он отправит сегмент WAL в архив. Возможно, вы захотите, чтобы он был отправлен намного раньше, чтобы вы могли гарантировать, что, скажем, вы потеряете не более 10 минут данных в случае сбоя. Вот для чего нужен archive_timeout. - person Craig Ringer; 17.11.2014
comment
значит, чем больше времени уходит на отправку сегмента файла WAL в архив, тем выше вероятность сбоя данных? - person Najwa; 18.11.2014
comment
@Najwa Сбой / пожар / что-то еще, что приводит к полной потере основной базы данных (так что все, что у вас есть, это заархивированный WAL и ваши базовые резервные копии), да. Это не имеет значения для простой неожиданной перезагрузки, принудительного перезапуска сервера postgres и т. д., конечно, поскольку Pg устойчив к сбоям. Но опять же... используйте потоковую репликацию и все будет в порядке. Этот параметр существует главным образом для обеспечения доступности данных для PITR в ограниченное время. - person Craig Ringer; 18.11.2014
comment
Требует ли изменение значения archive_timeout перезагрузки/перезапуска postgres? - person zypro; 11.03.2019