Когда postgresql нужно записать в файл "pg_logical / replorigin_checkpoint.tmp"? - PullRequest
0 голосов
/ 12 октября 2019

Postgres (версия 10.10) произошел сбой на моей машине (подключение к базе данных стало невозможным). Я проверил логи и увидел

2019-10-11 15:46:41.262 UTC [30233] postgres_prod@syntax_prod LOG:  could not receive data from client: Connection reset by peer
2019-10-11 17:41:06.104 UTC [2001] PANIC:  could not write to file "pg_logical/replorigin_checkpoint.tmp": No space left on device
2019-10-11 17:41:06.364 UTC [1999] LOG:  checkpointer process (PID 2001) was terminated by signal 6: Aborted
2019-10-11 17:41:06.364 UTC [1999] LOG:  terminating any other active server processes
2019-10-11 17:41:06.364 UTC [1326] postgres_prod@syntax_prod WARNING:  terminating connection because of crash of another server process
2019-10-11 17:41:06.364 UTC [1326] postgres_prod@syntax_prod DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
...

Я предполагаю, что проблема возникла с

PANIC: could not write to file "pg_logical/replorigin_checkpoint.tmp": No space left on device

Но у меня осталось 77 гигабайт на моей машине (я только что перезапустил Postgres и пока все работает нормально). Так что я не совсем понимаю сообщение об ошибке PANIC. Я подумал, что знание того, что postgres нужно записать в файл "pg_logical / replorigin_checkpoint.tmp", может помочь мне понять, что пошло не так. Поэтому я ищу информацию об этом.

1 Ответ

1 голос
/ 12 октября 2019

Но у меня осталось 77 гигабайт на моей машине

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

Я подумал, что зная больше о postgres, имеязапись в файл "pg_logical / replorigin_checkpoint.tmp" может помочь мне понять, что пошло не так.

Я почти уверен, что это не так. Но это часть контрольной точки прогресса логической репликации. Он создает новый файл, а затем переименовывает его поверх старого.

...