Потоковая репликация завершается неудачно после копирования большого CSV в postgreSQL - PullRequest
0 голосов
/ 27 июня 2019

Я установил кластер postgreSQL в Streaming Replication с одним ведущим и двумя подчиненными.

Я создал несколько баз данных и увидел, что они реплицированы на подчиненные. Затем я выполнил команду COPY для импорта большого набора данных (3 ГБ) на мастер. Когда команда COPY завершила с сообщением: COPY 43928933 Я наблюдаю странное поведение. Данные, импортированные из csv, не реплицируются на ведомые устройства, и потоковая репликация больше не работает. Я создаю базу данных на главном узле, которая не реплицируется на ведомые устройства.

Я вижу логи одного раба с

tail -f 100 /var/log/postgresql/postgresql-9.4-main.log

и я вижу это:

2019-06-27 14: 12: 48.919 UTC [13099] LOG: началась потоковая передача WAL с первичный в 0/20000000 в сроки 1 2019-06-27 14: 12: 48.919 UTC [13099] FATAL: не удалось получить данные из потока WAL: ERROR: запрошенный сегмент WAL 000000010000000000000020 уже был удалено

2019-06-27 14: 12: 53.931 UTC [13104] LOG: запущена потоковая передача WAL от первичного в 0/20000000 на временной шкале 1 2019-06-27 14: 12: 53.931 UTC [13104] FATAL: не удалось получить данные из потока WAL: ОШИБКА: запрошенный сегмент WAL 000000010000000000000020 уже был удален

2019-06-27 14: 12: 58.943 UTC [13113] LOG: началась потоковая передача WAL с первичный в 0/20000000 в сроки 1 2019-06-27 14: 12: 58.943 UTC [13113] FATAL: не удалось получить данные из потока WAL: ОШИБКА:
запрошенный сегмент WAL 000000010000000000000020 уже был удален

Кто-нибудь знает, как это исправить? Я не понимаю это поведение.

1 Ответ

0 голосов
/ 27 июня 2019

Для postgresql 9.4 вам нужно увеличить wal_keep_segments или использовать слотов репликации , чтобы основной не перезаписывал WAL до того, как подчиненные смогут их получить.

...