Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
27.09.2018, 15:10
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Добрый день. Пытаюсь протестировать и найти пользу от этой опции. --data-checksums Применять контрольные суммы на страницах данных для выявления сбоев при вводе/выводе, которые иначе останутся незамеченными. Расчёт контрольных сумм может значительно повлияет на производительность. Этот режим можно включить только при инициализации и нельзя изменить позже. Когда контрольные суммы включены, они рассчитываются для всех объектов и во всех базах данных. Возникла несколько вопросов: 1) Я так понял, что предупреждение сработает только при попытки чтения\записи файла данных. Код: sql 1.
одновременно с Код: sql 1.
Так ли это? 2) При получении ошибки просто получаем запись в логе и ошибка отправляется клиентскому соединению. И все, БД продолжает работать как и работала все остальные объекты БД доступны в полной мере? 3) На сколько сильная дополнительная нагрузка на IO создается этой опцией? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.09.2018, 15:43
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Что-то не пойму как эта штука работает. Сделал следующее: 1) взял тестувую таблицу, в которой около 60 тыс строк. 2) остановил постгрес и в файле удалил около 10% содержания, сохранив файл таблицы и _fsm файл в другом каталоге. 3) после запуска постгреса, попробовал сделать SELECT из этой таблицы - получил Код: sql 1. 2.
4) заменил файлы таблицы на пустые, при этом SELECT из таблицы стал отрабатывать и выдавать 0 строк, без ошибок. и тут начинается самое интересное.... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.09.2018, 15:47
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
1) меняю пустые файлы таблицы на оригинальные (которые отдельно сохранил). 2) делаю SELECT из таблицы и получаю 0 строк (должно быть 60 тыс.) При этом никаких ошибок нет. 3) Слегка удивляюсь и делаю вакуум таблички (не фул), получаю кучу сообщений: ПРЕДУПРЕЖДЕНИЕ: в отношении "test_table" не инициализирована страница 484 --- ситуация исправляется ПРЕДУПРЕЖДЕНИЕ: в отношении "test_table" не инициализирована страница 485 --- ситуация исправляется ПРЕДУПРЕЖДЕНИЕ: в отношении "test_table" не инициализирована страница 486 --- ситуация исправляется ПРЕДУПРЕЖДЕНИЕ: в отношении "test_table" не инициализирована страница 487 --- ситуация исправляется 4) После размеры файлов становяться =0 и SELECT к таблице возвращает 0 строк. Как так? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.09.2018, 15:49
|
|||
---|---|---|---|
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Синий Слон1) Я так понял, что предупреждение сработает только при попытки чтения\записи файла данных. Да, только при поднятии страницы в shared_buffers с диска или кеша ОС. Тем что находятся в shared_buffers - верим. pg11 будет во время basebackup валидировать все страницы. pg_verify_checksums на живом кластере пока в обсуждениях для pg12... Синий Слон2) При получении ошибки просто получаем запись в логе и ошибка отправляется клиентскому соединению. И все, БД продолжает работать как и работала все остальные объекты БД доступны в полной мере? Варнинг при чтении страницы всегда: https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/storage/page/bufpage.c#L149 Ошибка или варнинг (если запросили zero_damaged_pages) при размещении в буфер: https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/storage/buffer/bufmgr.c#L901 Целиком кластер не складывается. Синий Слон3) На сколько сильная дополнительная нагрузка на IO создается этой опцией? ondisk format не изменялся, страницы как писались блоками по BLKSIZE байта (8кб дефолт), так и пишутся. В заголовке страницы переиспользовали пару байт под хранение чексуммы. В целом - если есть возможность их включать - включайте. Пока включать можно только во время initdb, что представляет большую сложность для уже существующих баз... Патч в процессе обсуждений. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.09.2018, 15:50
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Сейчас перед заменой файлов остановил постгрес и заменил 0-е на оригинальные при остановленном посгрес. результат тот же. Как так? о_О ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.09.2018, 15:51
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Melkij, спасибо за ответ. Версия 10.5 Честно говря, не понимаю, почему файлы таблицы не могу вернуть назад ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.09.2018, 15:53
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
analyze без ошибок проходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.09.2018, 15:56
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
так файлы таблицы обратно подпихнуть и не получилось, чтобы данные видны были. может быть там требуется какое-то "обнуление" статистики по контрольным суммам или еще что-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.09.2018, 16:06
|
|||
---|---|---|---|
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Синий Слон, полностью пустые файлы и страницы из одних нулей действительно рассматриваются как корректные примеры родных данных, которые можно спокойно инициализировать как пустые страницы и не считать ошибкой. А по поводу подпихивания датафайлов - я сильно сомневаюсь, что вы пытаетесь подпихнуть именно данные, а не уже пустой файл. Потому что единственно место которое переводится как "в отношении "%s" не инициализирована страница %u --- ситуация исправляется" - это весьма банальная проверка на PageIsNew https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/commands/vacuumlazy.c#L857 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.09.2018, 17:22
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
MelkijСиний Слон, полностью пустые файлы и страницы из одних нулей действительно рассматриваются как корректные примеры родных данных, которые можно спокойно инициализировать как пустые страницы и не считать ошибкой. А по поводу подпихивания датафайлов - я сильно сомневаюсь, что вы пытаетесь подпихнуть именно данные, а не уже пустой файл. Потому что единственно место которое переводится как "в отношении "%s" не инициализирована страница %u --- ситуация исправляется" - это весьма банальная проверка на PageIsNew https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/commands/vacuumlazy.c#L857 Пытаюсь скопировать сохраненные в девственном виде файлы, до всех манипуляций в замен полностью пустых файлов. И данные в них не видны постгресом, а посли вакуума эти файлы, которые скопировал с данными становятся пустыми. Можете сами попробовать, если не верите. Я не понимаю почему так происходит ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 11:01
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Синий СлонMelkijСиний Слон, полностью пустые файлы и страницы из одних нулей действительно рассматриваются как корректные примеры родных данных, которые можно спокойно инициализировать как пустые страницы и не считать ошибкой. А по поводу подпихивания датафайлов - я сильно сомневаюсь, что вы пытаетесь подпихнуть именно данные, а не уже пустой файл. Потому что единственно место которое переводится как "в отношении "%s" не инициализирована страница %u --- ситуация исправляется" - это весьма банальная проверка на PageIsNew https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/commands/vacuumlazy.c#L857 Пытаюсь скопировать сохраненные в девственном виде файлы, до всех манипуляций в замен полностью пустых файлов. И данные в них не видны постгресом, а посли вакуума эти файлы, которые скопировал с данными становятся пустыми. Можете сами попробовать, если не верите. Я не понимаю почему так происходит На новой тестовой табличке получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 11:03
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
И все-таки, не понял как эта штука работает: 1) создаю табличку, заполняю данными. 2) копирую файлы в безопасное место. 3) заменяю пустыми фалами. 4) при попытке встасить данные в табличку с пустыми файлами ошибка: ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 11:04
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Копирую обратно файлы - все норм. Теперь порчу файл, удаляю пару символов. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 11:07
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
При выборке получаю ошибку ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 11:08
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
заменяю файлы на пустые - и в них спокойно вставляется новые строки... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 11:10
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
непонятно почему не вставлялись строки, после замены фалов на пустые, когда не портил файл БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 12:52
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Ну и кому-нибудь реально помогала эта опция по проверке чексум? У меня на тестировании пока ошибка о контрольной сумме ТОЛЬКО вместе с "неверная страница в блоке" выскакивает. Пока не понял пользу от этой опции. (-k) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 12:53
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Какая от нее польза? Можете объяснить на пальцах? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 13:21
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Синий Слон Расчёт контрольных сумм может значительно повлияет на производительность. PostgreSQL не использует CRC32C с аппаратным ускорением?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 13:32
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Dimitry SibiryakovСиний Слон Расчёт контрольных сумм может значительно повлияет на производительность. PostgreSQL не использует CRC32C с аппаратным ускорением?.. А вы как думаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 14:36
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Синий СлонНу и кому-нибудь реально помогала эта опция по проверке чексум? У меня на тестировании пока ошибка о контрольной сумме ТОЛЬКО вместе с "неверная страница в блоке" выскакивает. Пока не понял пользу от этой опции. (-k) При pg_dump эти ошибки тоже вместе: pg_dump: ПРЕДУПРЕЖДЕНИЕ: ошибка проверки страницы: получена контрольная сумма 4 0415, а ожидалась - 55142 pg_dump: Ошибка выгрузки таблицы "test": сбой в PQgetResult(). pg_dump: Сообщение об ошибке с сервера: ОШИБКА: неверная страница в блоке 0 отн ошения base/16384/16533 pg_dump: Выполнялась команда: COPY public.test (id) TO stdout; Зачем нужна эта опция, если она срабатывает только когда ошибка блока, которая и без нее бы сообщила о повреждении? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 15:33
|
|||
---|---|---|---|
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Синий Слон, а тут вы путаете причину и следствие. Без чексуммы эта ошибка может остаться незамеченной. Ошибка блока - следствие ошибки чексуммы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 16:44
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
MelkijСиний Слон, а тут вы путаете причину и следствие. Без чексуммы эта ошибка может остаться незамеченной. Ошибка блока - следствие ошибки чексуммы. Сейчас проверю... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.09.2018, 16:49
|
|||
---|---|---|---|
|
|||
Давайте обсудим проверку контрольных сум для файлов. |
|||
#18+
Melkij, проверил. в класетере без --data-checksums ошибка прекрасно находится при обращении к таблице, с поврежденным файлом. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=1995552]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 262ms |
total: | 411ms |
0 / 0 |