172 похожих чатов

Всем привет! Подскажите пожалуйста, а то я что-то уже упоролся

над проблемой. Суть есть два пг сервера - мастер и реплика, как-то они живут и нормально. Но вот я хочу погасить машинки для проведения технических работ. И проблема заключается в том что мастер очень часто наглухо зависает при выключении. и держит его процесс wal_sender. Причем нет никакой разницы в том, что я сначала гашу - стендбай или мастер. если убивать этот процесс или гасить через pg_ctl stop -m immediate (точный синтаксис не помню, но -m fast не помогает) то при возвращении будет скорее всего повреждение данных. Что у меня не так?

19 ответов

5 просмотров

мужик, честно, не знаю, но где то здесь должен быть ответ

Джифорсович as a service
мужик, честно, не знаю, но где то здесь должен быт...

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

Сначала перестаньте делать shutdown immediate. Это мало чем отличается от kill -9, к примеру. Данные скорее всего не потеряете, но база будет каждый раз после этого восстанавливаться.

мастер при выключении должен 1) передать все WAL журналы на реплику (не помню с какой версии но вроде уже давно); 2) сбросить все shared buffers на диск. Вам надо просто дождаться завершения этих процедур, вместо этого вы аварийно завершаете работу БД через kill -9 - это рискованно и может привести к повреждению БД Продолжительность выключения зависит от лага репликации (отставание реплики), и размера грязных страниц в shared buffers и скорости дисков/сети.

Джифорсович as a service
пуля -9 в голову - потеря данных, да

Ничего подобного. Если от такого там действительно теряются данные, у меня для Вас плохие новости — там проблемы с fsync, и данные могут быть потеряны и при внезапном power off, например. Аналогично к @lesovsky — это по поводу 1 апреля такие утверждения? ;)

Yaroslav Schekin
Ничего подобного. Если от такого там действительно...

при стечение обстоятельств риск потери данных есть, тем более вы и сами это утверждаете: > Если от такого там действительно теряются данные, у меня для Вас плохие новости — там проблемы с fsync выключать базу по SIGKILL это не общепринятая практика, не надо писать так как будто это нормально и за это никогда не будет последствий.

Alexey Lesovsky
при стечение обстоятельств риск потери данных есть...

> при стечение обстоятельств риск потери данных есть Да, если по стечению обстоятельств "оказалось" так, что, например, DBA ненастоящий. ;) Т.е. если сервер (OS) не настроен корректно и/или использует "неправильное" железо. > не надо писать так как будто это нормально Это "нормально" в том плане, что данные не должны теряться. Если теряются в такой ситуации при условии исключения вышеуказанных проблем — это причина для bug report, вот и все "последствия". ;)

Yaroslav Schekin
> при стечение обстоятельств риск потери данных ес...

все что вы написали имхо неважно, дба... железо... Выключать по SIGKILL следует только в крайнем случае, когда других вариантов остановить базу не осталось.

Alexey Lesovsky
все что вы написали имхо неважно, дба... железо......

Потому что гладиолус? FUD такой FUD, в общем. > я топлю за утверждение "Выключать по SIGKILL нельзя" https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/postmaster/postmaster.c;h=4a3ca78c1b7063f69eb20e9d936629cd2849049f;hb=HEAD#l1836 Раз "топите" — может, расскажете это теперь PostgreSQL hackers (смотрите — они-то не знают!)? ;) И да, а что случается при OOM kill, кстати?

Alexey Lesovsky
мастер при выключении должен 1) передать все WAL ж...

Нет ли в этом списке пункта - заархивировать все wal сегменты?

Роман Жарков
Сначала перестаньте делать shutdown immediate. Это...

Ага, походу я что-то подобное сделал на своей машине

Yaroslav Schekin
> при стечение обстоятельств риск потери данных ес...

А если kill придёт ТОЛЬКО в postmaster. Каковы могут быть последствия?

Aleksey Stavrov
А если kill придёт ТОЛЬКО в postmaster. Каковы мог...

Умрут все т.к. "shared memory may be corrupt" или как-то так.

Aleksey Stavrov
А если kill придёт ТОЛЬКО в postmaster. Каковы мог...

Из https://www.postgresql.org/docs/current/server-shutdown.html : "It is best not to use SIGKILL to shut down the server. Doing so will prevent the server from releasing shared memory and semaphores. Furthermore, SIGKILL kills the postgres process without letting it relay the signal to its subprocesses, so it might be necessary to kill the individual subprocesses by hand as well."

Yaroslav Schekin
Из https://www.postgresql.org/docs/current/server-...

Редко, но я видел "зависшие" checkpointer или даже рабочий процесс после "убийства" postmaster.

Yaroslav Schekin
Прямо как по написанному же.

Ну да. Я хотел редкость этого отметить. Киляю я эти процессы не по пять раз на дню, но достаточно регулярно :)

Anton Glushakov
Нет ли в этом списке пункта - заархивировать все w...

Хороший вопрос. Долго искал ответ, т.к. в памяти вспоминается случай когда я или кто-то из коллег сталкивался со случаем что постгрес не выключался именно из-за архивирования, но детали уже забылись... Посмотрел бегло по документации, заявленного поведения не нашел. Полез в код, нашел это. Между копированием сегментов archiver стоит проверка на выключение в случае сработки архивация прерывается.

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Привет, запускаю werf в dind в k8s, получаю ошибку на этапе build/beforeSetup: /.werf/stapel/embedded/bin/bash: /.werf/scripts/5898bdfe5214357d3706b879cc8d3d78460fb379607cbd...
florius0
7
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
8
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Карта сайта