Linux Labs

Веб-стек / Ступень 8 из 9

Дамп и проверяемое восстановление

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 4 из 7 · теория · 5 мин

Сверка копии

Сравнишь копию с оригиналом так, чтобы заметить даже одно изменённое значение.

Восстановление без ошибок ещё не доказывает, что копия та же: дамп мог оказаться старым или не той базы. Число строк и сумма ловят потерю строк, но не подмену: два заказа, обменявшиеся суммами, дадут те же числа. Надёжнее контрольная сумма всех строк по порядку:

bash
psql -XAt -d shop -c "SELECT count(*), sum(amount),
  md5(string_agg(o::text, ',' ORDER BY id)) FROM orders o"

string_agg склеивает строки таблицы в одну, md5 сворачивает её в 32 знака. Любое изменённое значение меняет их целиком. Та же команда с -d shop_check должна напечатать то же самое — у копии из упражнения это 6|740|19f77b62….

Счётчик сверяют отдельно: SELECT last_value FROM orders_id_seq в обеих базах. Разный — и первая же вставка в копии упадёт с duplicate key, как в начале урока.

Проверь себя 1 вопрос

Ты сверяешь копию с оригиналом. Что значит такой вывод?

$ psql -XAt -d shop -c "SELECT count(*), sum(amount), md5(…) FROM orders o"
6|740|19f77b626f2923582c2bf4f650e420c3
$ psql -XAt -d shop_check -c "SELECT count(*), sum(amount), md5(…) FROM orders o"
6|740|faa22fc598d99673259e8f65658958b9
  • Строк поровну — по 6 в обеих базах, сумма тоже 740. Отличаются значения, это показывает md5.

  • Число строк и сумма совпадут и у разных данных — например, если два заказа обменялись суммами. Разные md5 значат, что хотя бы одно значение не то.

  • md5 считается от текста строк, а не от имени базы: у одинаковых таблиц он совпадает — так было у shop и shop_check в упражнении.

Строк поровну и сумма та же, а контрольные суммы разные: хотя бы одно значение в копии отличается. Найти его поможет сравнение таблиц построчно — psql -d shop_check -c 'TABLE orders' рядом с тем же для shop.

Главное в шаге

  • Восстановление без ошибок — ещё не проверка: копию сверяют с оригиналом.
  • Число строк ловит потерю, md5 всех строк по порядку — любое изменённое значение.
  • Счётчик копии совпадает с оригиналом, иначе вставка упадёт с duplicate key.
Ubuntu 24.04
Загрузка…