Перевірка цілісності файлів баз даних PostgreSQL


12

Під час роботи системи баз даних 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-JAN-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


2
Під цілісністю я мав на увазі цілісність файлів сторінки та іншого. Тип матеріалів, які ви бачите нормально, лише коли ви пишете запит, який трапляється на сторінці з порушеннями. Наприклад, коли диск починає виходити з ладу, деякі дані на блюді можуть почати погано. Як би ви це помітили?
Куберчаун

Відповіді:


8

PostgreSQL до 9.3 не мав блок-контрольних сум. Ця функція була додана в 9.3 (довго після публікації цього питання).

Щоб відповісти на ваші потреби, я, мабуть, розробив би власну контрольну суму (тригери?) - працюючи над значеннями атрибутів, а не на сторінках даних.


4
Можливо, варто додати, що з Postgres 9.3 можна додатково включити контрольні суми
a_horse_with_no_name
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.