Судя по всему, доставка журналов postgresql не работает

Есть два сервера. Одним из них является сервер базы данных на месте; другой - сервер резервного копирования вне сайта. Поскольку локальный сервер базы данных уже содержит всего лишь 900 ГБ данных, резервные копии очень важны. Первоначально мы использовали ежедневный pg_dumpall, но по соображениям производительности это больше не вариант.

Так как обновление сервера базы данных, включая обновление самого postgresql (с postgresql 9.1 до 9.4), в любом случае должно было произойти, я решил попытаться использовать доставку WAL на сторонний сервер, чтобы резервные копии работали. Вот что я сделал до сих пор:

  • Создать новый кластер на новом сервере
  • Остановите сервер базы данных на новом сервере, rsync каталог данных на стороннем сервере (чтобы у меня была базовая резервная копия)
  • Настройте postgresql.conf на новом сервере, чтобы wal_level установлен в hot_standby, archive_mode в on, а также archive_command в test ! -f /srv/pg_wal/%f && cp %p /srv/pg_wal/%f
  • Запустите кластер на новом сервере
  • ssh oldserver pg_dumpall | psql читать в данных, которые генерируют большое количество сегментов WAL
  • Скопируйте сегменты WAL по довольно медленной линии связи (от 1 до 6 Мбит, в зависимости от времени суток) на сторонний сервер. Это заняло несколько дней
  • Создать restore.conf в каталоге данных стороннего сервера, содержащем restore_command = 'cp /srv/pg_wal/%f "%p"' а также standby_mode = on,
  • Запустил postgresql на стороннем сервере
  • Понял, что это должно было быть recovery.conf, поэтому снова остановил сервер и переместил файл на правильное имя.

К сожалению, это не похоже на работу. Когда я смотрю на файл журнала прямо сейчас, я вижу следующее:

2016-07-25 12:30:59 CEST [137390-71] LOG:  record with zero length at 0/2000200
2016-07-25 12:31:04 CEST [137390-72] LOG:  restored log file "000000010000000000000002" from archive
2016-07-25 12:31:04 CEST [137390-73] LOG:  record with zero length at 0/2000200
2016-07-25 12:31:09 CEST [137390-74] LOG:  restored log file "000000010000000000000002" from archive

Это повторяется снова и снова.

Проверка pg_xlog каталог на стороннем сервере показывает, что там есть два файла: один 000000010000000000000002, которая имеет ту же контрольную сумму, что и с тем же именем в /srv/pg_wal; другой...03, чего нет.

мой /srv/pg_wal содержит все сегменты WAL, включая также 000000010000000000000001 (самый первый сегмент, который сделал оригинальный сервер базы данных). Тем не менее, я не могу загрузить их на сторонний сервер.

Вопрос: могу ли я в данной ситуации каким-то образом втиснуть внешний сервер, чтобы он по-прежнему принимал эти журналы WAL? Если так, как я должен продолжить?

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

0 ответов

Другие вопросы по тегам