Когда я запускаю систему баз данных PostgreSQL, как мне узнать, что моя база данных в целом имеет 100% целостность? Как мне узнать, все ли мои файлы данных и страницы на 100% хороши, без повреждений?
В мире Microsoft SQL Server есть команда, с помощью которой вы можете выполнить команду DBCC CHECKDB, которая сообщит вам о наличии проблем. Вот ссылка, если вы заинтересованы в получении дополнительной информации о команде. DBCC CHECKDB (Transact-SQL)
Я - параноик, склонный к целостности базы данных (который должен быть любой, кто работает с базой данных в роли типа DBA), и этот тип вещей мешает мне хорошо спать по ночам. Такая утилита обязательна! Поиски в Google обнаружили несколько попыток использования таких инструментов, и, по моему мнению, если это не официально принятый инструмент проекта PostgreSQL, я не буду доверять ему что-то столь важное.
Вот несколько ссылок на людей, которые задают подобные вопросы, и я не считаю, что это однозначный ответ. И, на мой взгляд, показывает, что PostgreSQL должен иметь некоторые инструменты, которые, по-видимому, есть у Oracle и Microsoft SQL Server.
Первая ссылка самая интересная, которую я нашел на эту тему. Я думаю, что комментарий к статье, который, вероятно, резюмирует это, гласит: «Postgres довольно неубедительный, когда дело доходит до выявления повреждения базы данных и ее исправления. Единственный способ обнаружить это - выгрузить базу данных или выбрать * из каждой таблицы в базе данных. «.
Как PostgreSQL защищает от частичной записи страниц и повреждения данных
Проверка данных и повреждение файла индекса - Dev Shed
PostgreSQL: поврежденный первичный ключ, несовместимая таблица
Я полагаю, что есть шанс, что 9.3 может иметь некоторые функции проверки коррупции. Похоже, что можно надеяться на то, что проверка файлов подкачки будет суммирована, если кто-то выберет. Так что все выглядит хорошо, если вы подумаете об использовании ZFS и / или будущей версии Postgres с суммированием проверки страницы. https://commitfest.postgresql.org/action/patch_view?id=759
ОБНОВЛЕНИЕ: 14 января 2012 г. Похоже, что использование файловой системы на основе ZFS позволяет обнаружить повреждение путем проверки суммирования каждого блока данных. Я должен буду изучить это дальше и посмотреть, если это обходной путь, позволяющий человеку спокойно спать по ночам, зная, что его данные в базе данных не будут молча повреждены.
ОБНОВЛЕНИЕ: 17 января 2012 г. - Как найти файлы, поврежденные с помощью ZFS. http://docs.oracle.com/cd/E18752_01/html/819-5461/gbbwl.html#gbcuz
ОБНОВЛЕНИЕ: 14 апреля 2014 9.3 действительно получили контрольные суммы данных. https://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.3
источник
Ответы:
PostgreSQL до 9.3 не имел контрольных сумм блоков. Функция была добавлена в 9.3 (задолго до того, как этот вопрос был опубликован).
Чтобы удовлетворить ваши потребности, я бы, вероятно, разработал собственную контрольную сумму (триггеры?) - работая со значениями атрибутов, а не со страницами данных.
источник