Налаштовував бекап на slave сервері, та зіткнувся з помилкою, яка призводить до падіння бекап процесу.
Запустив скрипта і тут таке:
1 2 3 4 |
pg_dump: error: Dumping the contents of table "table_13" failed: PQgetResult() failed. pg_dump: error: Error message from server: ERROR: canceling statement due to conflict with recovery DETAIL: User query might have needed to see row versions that must be removed. pg_dump: error: The command was: COPY public.table_13 (id, file_id, order_id, owner_id, content_type, data) TO stdout; |
Пошукавши в інеті інфо щодо цього повідослення, з’ясувалось таке – що під час створення дампу, slave очикував деякий час завершення транзакції на мастері, не дочекався і припинив процесс.
Вирішилась ситуація додаванням на слейв сервері параметрів у конфіг postgresql.conf
1 2 3 |
hot_standby_feedback = on max_standby_archive_delay = 900s max_standby_streaming_delay = 900s |
Розмір параметів:
1 2 |
max_standby_archive_delay max_standby_streaming_delay |
визначається експерементально – з огляду на час виконання максимально довгого запиту у базі.
Після цього перезапутити postgres та можна робити бекап.