Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Давайте обсудим проверку контрольных сум для файлов. / 25 сообщений из 38, страница 1 из 2
27.09.2018, 15:10
    #39709343
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Добрый день.

Пытаюсь протестировать и найти пользу от этой опции.


--data-checksums

Применять контрольные суммы на страницах данных для выявления сбоев при вводе/выводе, которые иначе останутся незамеченными. Расчёт контрольных сумм может значительно повлияет на производительность. Этот режим можно включить только при инициализации и нельзя изменить позже. Когда контрольные суммы включены, они рассчитываются для всех объектов и во всех базах данных.




Возникла несколько вопросов:


1) Я так понял, что предупреждение сработает только при попытки чтения\записи файла данных.

Код: sql
1.
ПРЕДУПРЕЖДЕНИЕ:  ошибка проверки страницы: получена контрольная сумма ..., а ожидалась - .....


одновременно с
Код: sql
1.
ОШИБКА:  неверная страница в блоке 0 отношения ...



Так ли это?




2) При получении ошибки просто получаем запись в логе и ошибка отправляется клиентскому соединению. И все, БД продолжает работать как и работала все остальные объекты БД доступны в полной мере?



3) На сколько сильная дополнительная нагрузка на IO создается этой опцией?
...
Рейтинг: 0 / 0
27.09.2018, 15:43
    #39709369
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Что-то не пойму как эта штука работает.

Сделал следующее:

1) взял тестувую таблицу, в которой около 60 тыс строк.

2) остановил постгрес и в файле удалил около 10% содержания, сохранив файл таблицы и _fsm файл в другом каталоге.

3) после запуска постгреса, попробовал сделать SELECT из этой таблицы - получил

Код: sql
1.
2.
ПРЕДУПРЕЖДЕНИЕ:  ошибка проверки страницы: получена контрольная сумма ..., а ожидалась - .....
ОШИБКА:  неверная страница в блоке 0 отношения ...



4) заменил файлы таблицы на пустые, при этом SELECT из таблицы стал отрабатывать и выдавать 0 строк, без ошибок.



и тут начинается самое интересное....


...
Рейтинг: 0 / 0
27.09.2018, 15:47
    #39709372
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
1) меняю пустые файлы таблицы на оригинальные (которые отдельно сохранил).

2) делаю SELECT из таблицы и получаю 0 строк (должно быть 60 тыс.)

При этом никаких ошибок нет.


3) Слегка удивляюсь и делаю вакуум таблички (не фул), получаю кучу сообщений:

ПРЕДУПРЕЖДЕНИЕ: в отношении "test_table" не инициализирована страница 484 --- ситуация исправляется
ПРЕДУПРЕЖДЕНИЕ: в отношении "test_table" не инициализирована страница 485 --- ситуация исправляется
ПРЕДУПРЕЖДЕНИЕ: в отношении "test_table" не инициализирована страница 486 --- ситуация исправляется
ПРЕДУПРЕЖДЕНИЕ: в отношении "test_table" не инициализирована страница 487 --- ситуация исправляется


4) После размеры файлов становяться =0 и SELECT к таблице возвращает 0 строк.





Как так?
...
Рейтинг: 0 / 0
27.09.2018, 15:49
    #39709373
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Синий Слон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, что представляет большую сложность для уже существующих баз... Патч в процессе обсуждений.
...
Рейтинг: 0 / 0
27.09.2018, 15:50
    #39709374
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Сейчас перед заменой файлов остановил постгрес и заменил 0-е на оригинальные при остановленном посгрес.

результат тот же.


Как так? о_О
...
Рейтинг: 0 / 0
27.09.2018, 15:51
    #39709375
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Melkij,

спасибо за ответ.

Версия 10.5




Честно говря, не понимаю, почему файлы таблицы не могу вернуть назад
...
Рейтинг: 0 / 0
27.09.2018, 15:53
    #39709377
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
analyze без ошибок проходит.
...
Рейтинг: 0 / 0
27.09.2018, 15:56
    #39709379
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
так файлы таблицы обратно подпихнуть и не получилось, чтобы данные видны были.


может быть там требуется какое-то "обнуление" статистики по контрольным суммам или еще что-то?
...
Рейтинг: 0 / 0
27.09.2018, 16:06
    #39709388
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Синий Слон,

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

А по поводу подпихивания датафайлов - я сильно сомневаюсь, что вы пытаетесь подпихнуть именно данные, а не уже пустой файл. Потому что единственно место которое переводится как "в отношении "%s" не инициализирована страница %u --- ситуация исправляется" - это весьма банальная проверка на PageIsNew https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/commands/vacuumlazy.c#L857
...
Рейтинг: 0 / 0
27.09.2018, 17:22
    #39709437
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
MelkijСиний Слон,

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

А по поводу подпихивания датафайлов - я сильно сомневаюсь, что вы пытаетесь подпихнуть именно данные, а не уже пустой файл. Потому что единственно место которое переводится как "в отношении "%s" не инициализирована страница %u --- ситуация исправляется" - это весьма банальная проверка на PageIsNew https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/commands/vacuumlazy.c#L857


Пытаюсь скопировать сохраненные в девственном виде файлы, до всех манипуляций в замен полностью пустых файлов.

И данные в них не видны постгресом, а посли вакуума эти файлы, которые скопировал с данными становятся пустыми.

Можете сами попробовать, если не верите.

Я не понимаю почему так происходит
...
Рейтинг: 0 / 0
28.09.2018, 11:01
    #39709708
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Синий СлонMelkijСиний Слон,

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

А по поводу подпихивания датафайлов - я сильно сомневаюсь, что вы пытаетесь подпихнуть именно данные, а не уже пустой файл. Потому что единственно место которое переводится как "в отношении "%s" не инициализирована страница %u --- ситуация исправляется" - это весьма банальная проверка на PageIsNew https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/commands/vacuumlazy.c#L857


Пытаюсь скопировать сохраненные в девственном виде файлы, до всех манипуляций в замен полностью пустых файлов.

И данные в них не видны постгресом, а посли вакуума эти файлы, которые скопировал с данными становятся пустыми.

Можете сами попробовать, если не верите.

Я не понимаю почему так происходит


На новой тестовой табличке получилось.
...
Рейтинг: 0 / 0
28.09.2018, 11:03
    #39709709
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
И все-таки, не понял как эта штука работает:

1) создаю табличку, заполняю данными.

2) копирую файлы в безопасное место.

3) заменяю пустыми фалами.

4) при попытке встасить данные в табличку с пустыми файлами ошибка:
...
Рейтинг: 0 / 0
28.09.2018, 11:04
    #39709710
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Копирую обратно файлы - все норм.


Теперь порчу файл, удаляю пару символов.
...
Рейтинг: 0 / 0
28.09.2018, 11:07
    #39709714
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
При выборке получаю ошибку
...
Рейтинг: 0 / 0
28.09.2018, 11:08
    #39709716
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
заменяю файлы на пустые - и в них спокойно вставляется новые строки...
...
Рейтинг: 0 / 0
28.09.2018, 11:10
    #39709718
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
непонятно почему не вставлялись строки, после замены фалов на пустые, когда не портил файл БД.
...
Рейтинг: 0 / 0
28.09.2018, 12:52
    #39709793
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Ну и кому-нибудь реально помогала эта опция по проверке чексум?


У меня на тестировании пока ошибка о контрольной сумме ТОЛЬКО вместе с "неверная страница в блоке" выскакивает.

Пока не понял пользу от этой опции. (-k)
...
Рейтинг: 0 / 0
28.09.2018, 12:53
    #39709797
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Какая от нее польза? Можете объяснить на пальцах?
...
Рейтинг: 0 / 0
28.09.2018, 13:21
    #39709815
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Синий Слон Расчёт контрольных сумм может значительно повлияет на производительность.
PostgreSQL не использует CRC32C с аппаратным ускорением?..
...
Рейтинг: 0 / 0
28.09.2018, 13:32
    #39709823
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Dimitry SibiryakovСиний Слон Расчёт контрольных сумм может значительно повлияет на производительность.
PostgreSQL не использует CRC32C с аппаратным ускорением?..

А вы как думаете?
...
Рейтинг: 0 / 0
28.09.2018, 14:36
    #39709869
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Синий СлонНу и кому-нибудь реально помогала эта опция по проверке чексум?


У меня на тестировании пока ошибка о контрольной сумме ТОЛЬКО вместе с "неверная страница в блоке" выскакивает.

Пока не понял пользу от этой опции. (-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;



Зачем нужна эта опция, если она срабатывает только когда ошибка блока, которая и без нее бы сообщила о повреждении?
...
Рейтинг: 0 / 0
28.09.2018, 15:33
    #39709926
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Синий Слон,

а тут вы путаете причину и следствие. Без чексуммы эта ошибка может остаться незамеченной. Ошибка блока - следствие ошибки чексуммы.
...
Рейтинг: 0 / 0
28.09.2018, 16:44
    #39709996
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
MelkijСиний Слон,

а тут вы путаете причину и следствие. Без чексуммы эта ошибка может остаться незамеченной. Ошибка блока - следствие ошибки чексуммы.


Сейчас проверю...
...
Рейтинг: 0 / 0
28.09.2018, 16:49
    #39710000
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Melkij,

проверил.


в класетере без --data-checksums ошибка прекрасно находится при обращении к таблице, с поврежденным файлом.
...
Рейтинг: 0 / 0
28.09.2018, 16:50
    #39710003
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим проверку контрольных сум для файлов.
Так зачем
--data-checksums
нужен?


Какая от него реальная польза?
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Давайте обсудим проверку контрольных сум для файлов. / 25 сообщений из 38, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]