Автозапуск PostgreSQL

1. denisros 05.10.20 11:20 Сейчас в теме
Здравствуйте!
Подскажите, может кто-нибудь сталкивался: при попытке сделать бэкап базы получаем ошибку

pg_basebackup: could not read COPY data: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.


База PostgreSQL 9.6 на Centos 7 (64-bit), размер - 78 Gb. Бэкап делаем командами
pg_basebackup -U postgres -D /var/lib/pgsql/9.6/backups/ --format=tar --compress=9 --no-password

или
pg_dump -U postgres base > /var/lib/pgsql/9.6/backups/base.sql 

На этом же сервере есть другая база, pg_dump для которой проходит без проблем. Эта база размером примерно 10 Gb
Я предполагаю, что сервер Postgres рестартует из-за OOM killer. Но как это подтвердить или исправить не знаю (знаний в Linux не много). Подскажите, что с этим можно делать и куда посмотреть?

И ещё, старый админ сервера каким-то образом сделал перезапуск службы сервера postgresql после падения. Новый админ не знает как его остановить. Я смотрел
systemctl edit postgresql-9.6
, но там пусто. Crontab -e под пользователями тоже пустые. Из-за чего это может происходить?
По теме из базы знаний
Найденные решения
3. ansh15 05.10.20 12:49 Сейчас в теме
Похоже, что так и есть.
Можно попробовать развернуть последнюю 11-ю редакцию PostgresSQL, может быть есть улучшения, а также увеличить размер памяти, или свопа на ssd, хотя бы.
denisros; +1 Ответить
6. ansh15 05.10.20 22:47 Сейчас в теме
(4)
Error message from server: ERROR: invalid memory alloc request size 1590249045

В таблице _document474 есть поле, в котором размер данных(обычно это бинарная строка типа bytea) превышает 500 МБ. Это давняя особенность pg_dump.
Здесь и здесь есть более подробные описания данной проблемы.
Для решения можно воспользоваться утилитами pg_dumpbinary/pg_restorebinary.
denisros; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ansh15 05.10.20 12:13 Сейчас в теме
Посмотреть в /var/log/messages что пишется по этому поводу. Возможно, процесс postgres, выполняющий выборку данных для pg_basebackup, забирает всю имеющуюся физическую память и убивается.
denisros; +1 Ответить
3. ansh15 05.10.20 12:49 Сейчас в теме
Похоже, что так и есть.
Можно попробовать развернуть последнюю 11-ю редакцию PostgresSQL, может быть есть улучшения, а также увеличить размер памяти, или свопа на ssd, хотя бы.
denisros; +1 Ответить
4. denisros 05.10.20 17:02 Сейчас в теме
(3)Спасибо большое за ответ, проверили, swop по htop во время бэкапа практически не задействован, используется только 4 Mb из 7,87 Gb

В /var/log/messages пишет
Oct 5 16:13:05 1c-server systemd: Created slice User Slice of root.
Oct 5 16:13:05 1c-server systemd: Started Session 113 of user root.
Oct 5 16:13:05 1c-server systemd-logind: New session 113 of user root.
Oct 5 16:13:06 1c-server systemd-logind: New session 114 of user root.
Oct 5 16:13:06 1c-server systemd: Started Session 114 of user root.
Oct 5 16:16:20 1c-server monit: 'postgres' failed protocol test [PGSQL] at /var/run/postgresql/.s.PGSQL.5432 -- PGSQL: connection terminator write error -- Broken pipe
Oct 5 16:16:20 1c-server monit: 'postgres' trying to restart
Oct 5 16:16:20 1c-server monit: 'postgres' stop: '/usr/sbin/service postgresql-9.6 stop'
Oct 5 16:16:20 1c-server systemd: Stopping PostgreSQL 9.6 database server...
Oct 5 16:16:21 1c-server systemd: Stopped PostgreSQL 9.6 database server.
Oct 5 16:16:21 1c-server monit: 'postgres' start: '/usr/sbin/service postgresql-9.6 start'
Oct 5 16:16:21 1c-server systemd: Starting PostgreSQL 9.6 database server...
Oct 5 16:16:21 1c-server postmaster: LOG: redirecting log output to logging collector process
Oct 5 16:16:21 1c-server postmaster: HINT: Future log output will appear in directory "pg_log".
Oct 5 16:16:21 1c-server systemd: Started PostgreSQL 9.6 database server.
Oct 5 16:16:52 1c-server monit: 'postgres' connection succeeded to /var/run/postgresql/.s.PGSQL.5432
Показать


Как я понимаю ошибка именно в строке 'postgres' failed protocol test [PGSQL] at /var/run/postgresql/.s.PGSQL.5432 -- PGSQL: connection terminator write error -- Broken pipe

Пока пытались разобраться, обнаружили ещё одну ошибку во время pg_dump:
Error message from server: ERROR: invalid memory alloc request size 1590249045
pg_dump: The command was: COPY public._document474
но размер этой таблицы всего 140 Мб если верить запросу SELECT pg_size_pretty( pg_total_relation_size( '_document474' ) );

Самое главное, мы не можем остановить сервис postgres, что-то его постоянно перезапускает, из-за этого не можем попробовать обновить его или перенести на другой сервер
5. ansh15 05.10.20 22:07 Сейчас в теме
(4)
Oct 5 16:16:21 1c-server monit: 'postgres' start: '/usr/sbin/service postgresql-9.6 start'

monit выключите, это он контролирует работоспособность демонов и перезапускает их.
denisros; +1 Ответить
7. denisros 06.10.20 01:24 Сейчас в теме
(6) и (3) Спасибо, всё получилось.
Пришлось обновить сервер до 12 с помощью pg_upgrade и очистить 2 поля в _document474. Pg_admin показывал, что размер этих полей 45 Mb, однако, селектом не мог их показать. И в базе эти отчеты не открывались
После обновления всё заработало.
6. ansh15 05.10.20 22:47 Сейчас в теме
(4)
Error message from server: ERROR: invalid memory alloc request size 1590249045

В таблице _document474 есть поле, в котором размер данных(обычно это бинарная строка типа bytea) превышает 500 МБ. Это давняя особенность pg_dump.
Здесь и здесь есть более подробные описания данной проблемы.
Для решения можно воспользоваться утилитами pg_dumpbinary/pg_restorebinary.
denisros; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот