Size: a a a

PostgreSQL + 1C + Linux

2020 October 21

АД

Антон Дорошкевич... in PostgreSQL + 1C + Linux
и кстати, Zfs тут не всегда спасёт, сбой может быть не на уровне ФС, а на уровне ОС
Вот цитата из документации : это необходимо, потому что запись страницы, прерванная при сбое операционной системы, может выполниться частично, и на диске окажется страница, содержащая смесь старых данных с новыми.
источник

АД

Антон Дорошкевич... in PostgreSQL + 1C + Linux
в общем тут надо быть ооочень аккуратным
источник

LK

L K in PostgreSQL + 1C + Linux
Антон Дорошкевич
и кстати, Zfs тут не всегда спасёт, сбой может быть не на уровне ФС, а на уровне ОС
Вот цитата из документации : это необходимо, потому что запись страницы, прерванная при сбое операционной системы, может выполниться частично, и на диске окажется страница, содержащая смесь старых данных с новыми.
А вы zfs используете?
источник

АД

Антон Дорошкевич... in PostgreSQL + 1C + Linux
нет, только ext4
на моих нагрузках zfs сильно проигрывает как его не настраивай
источник

АД

Антон Дорошкевич... in PostgreSQL + 1C + Linux
только спорить про выбор ФС не буду)))
у всех свои причины и сценарии)
источник

LK

L K in PostgreSQL + 1C + Linux
Понятно.
источник

СГ

Сергей Голод... in PostgreSQL + 1C + Linux
L K
А recordsize=8k ?
для файлов БД - 16к, для WAL-файлов 128k
источник

СГ

Сергей Голод... in PostgreSQL + 1C + Linux
Антон Дорошкевич
отключение full_page_writes - крайне рискованно
отключение synchronous_commit - приводит к хорошему росту скорости, обычно кратному и не так рискованно
Отключить оба параметра - тогда и fsync наверное тоже отключить можно, так как уже ни о какой защите после сбоя говорить не приходится, тут чисто скорость
Выбор сложный, но зато он есть
Антон, вы работали с ZFS? Что такое ZIL понимаете?
источник

СГ

Сергей Голод... in PostgreSQL + 1C + Linux
Антон Дорошкевич
и кстати, Zfs тут не всегда спасёт, сбой может быть не на уровне ФС, а на уровне ОС
Вот цитата из документации : это необходимо, потому что запись страницы, прерванная при сбое операционной системы, может выполниться частично, и на диске окажется страница, содержащая смесь старых данных с новыми.
ZFS - это постгрес на уровне файловой системы (ОС). Тут есть и журнал для записи, и транзакции. И CoW.
источник

АД

Антон Дорошкевич... in PostgreSQL + 1C + Linux
Да, я понимаю
источник

АД

Антон Дорошкевич... in PostgreSQL + 1C + Linux
Поэтому и пишу что каждый свой выбор сделает
источник

СГ

Сергей Голод... in PostgreSQL + 1C + Linux
Когда вы включаете full_page_writes, то получается масло масленное. Вам сама ФС обеспечивает необходимый уровень надёжности. Я не буду убеждать), но сами разработчики PG допускают выключение full_page_writes на ZFS. Я не думаю что они это делают неосознанно)
источник

АД

Антон Дорошкевич... in PostgreSQL + 1C + Linux
Но пренебрегать средствами защиты данных субд опасно и надо чётко понимать что может случится и в каком случае
источник

АД

Антон Дорошкевич... in PostgreSQL + 1C + Linux
Сергей Голод
Когда вы включаете full_page_writes, то получается масло масленное. Вам сама ФС обеспечивает необходимый уровень надёжности. Я не буду убеждать), но сами разработчики PG допускают выключение full_page_writes на ZFS. Я не думаю что они это делают неосознанно)
В целом - согласен
источник

АД

Антон Дорошкевич... in PostgreSQL + 1C + Linux
Именно на zfs наверное можно рискнуть
источник

СГ

Сергей Голод... in PostgreSQL + 1C + Linux
L K
А во сколько раз взлетают результаты теста pg_bench по записи?
полноценного тестирования не делал. Но вот сейчас есть под рукой свободный сервер с ZFS и PG12. Могу на нём кстати проверить тесты с разными значениями параметров
источник

АД

Антон Дорошкевич... in PostgreSQL + 1C + Linux
Сергей Голод
полноценного тестирования не делал. Но вот сейчас есть под рукой свободный сервер с ZFS и PG12. Могу на нём кстати проверить тесты с разными значениями параметров
Было бы отлично
источник

LK

L K in PostgreSQL + 1C + Linux
Сергей Голод
полноценного тестирования не делал. Но вот сейчас есть под рукой свободный сервер с ZFS и PG12. Могу на нём кстати проверить тесты с разными значениями параметров
Здорово былобы сделать тесты
А как у Вас реализовано zfs?
На хосте pve и/или в vm kvm?
Когда реализуете разные recordsize?
источник

RS

Roman Syuzyov in PostgreSQL + 1C + Linux
Антон Дорошкевич
Именно на zfs наверное можно рискнуть
Вот тут самое интересное: вчера хорошенько все осмыслил и получается дополнительных (по сравнению с synchronous_commit=off) рисков действительно нет - zfs либо запишет данные целиком и корректно, либо мы совсем последнюю операцию не увидим, в любом случае консистентность не будет нарушена. Ну а вероятность потери нескольких транзакций перед крахом я уже принял, когда synchronous_commit отключал.
источник

СГ

Сергей Голод... in PostgreSQL + 1C + Linux
L K
Здорово былобы сделать тесты
А как у Вас реализовано zfs?
На хосте pve и/или в vm kvm?
Когда реализуете разные recordsize?
конечно на хосте. Внутри ВМ zfs смысла не имеет, я бы даже НЕ рекомендовал так делать
источник