Восстанавливаем повреждённые базы, переносим между СУБД без остановки работы и разбираем, почему запросы стали медленными. Работаем с копией, оригинал не трогаем до вашего согласия.
Три вещи, которые нельзя делать до звонка нам. Каждая из них уменьшает шансы на полное восстановление.
При запуске СУБД может начать откат незавершённых операций и перезаписать то, что ещё читается. Снимите копию файлов и остановитесь.
Встроенные средства ремонта работают по оригиналу. Если они ошибутся, второй попытки не будет.
Любая запись может лечь поверх удалённых страниц. Копию делайте на другой носитель.
# Что сделать до звонка: снять побайтовую копию и остановиться systemctl stop postgresql # или mysql / mssql-server dd if=/dev/sdb1 of=/mnt/backup/baza.img bs=4M status=progress sha256sum /mnt/backup/baza.img > /mnt/backup/baza.sha256 # Дальше не трогайте ничего. Звоните: +7 495 122-77-40
Переносим боевую базу на другую СУБД или другой сервер так, что пользователи ничего не замечают. Переключение занимает секунды и откатывается тоже за секунды.
| Переход | Сложность | Простой | Срок работ | Откат |
|---|---|---|---|---|
| MySQL → PostgreSQL | средняя | < 30 с | 3–6 недель | мгновенный |
| MS SQL → PostgreSQL | высокая | < 60 с | 6–14 недель | мгновенный |
| Oracle → PostgreSQL | высокая | < 90 с | 10–20 недель | мгновенный |
| Смена сервера, та же СУБД | низкая | < 10 с | 3–8 дней | мгновенный |
| Разделение на шарды | высокая | < 120 с | 8–16 недель | частичный |
Смотрим, почему база стала медленной, и чиним причину, а не симптом. Отчёт с планом работ и оценкой выигрыша по каждому пункту.
Собираем статистику за неделю, находим те, что съедают больше всего времени, и переписываем. Обычно десять запросов дают 80 % нагрузки.
Лишние индексы замедляют запись, недостающие — чтение. Показываем оба списка с расчётом выигрыша.
Память, параллельность, контрольные точки, автоочистка. Часто база работает на настройках, поставленных при установке.
Типы полей, нормализация, разделение больших таблиц. Меняем постепенно, без остановки работы.
Проверяем, что ваши резервные копии реально восстанавливаются. В трёх случаях из десяти оказывается, что нет.
Ставим сбор показателей и тревоги, чтобы следующую беду вы увидели за сутки, а не в момент остановки.
Глубоко — с четырьмя СУБД. По остальным беремся только за миграцию и только с проверкой на копии.
Восстановление на уровне страниц, разбор WAL, логическая и потоковая репликация, шардирование.
InnoDB и MyISAM, восстановление из ibd-файлов, разбор бинарного журнала, переход на репликацию.
Восстановление из повреждённых mdf, разбор журнала транзакций, миграция на открытые СУБД.
Восстановление табличных пространств, работа с RMAN, перенос схем на PostgreSQL.
Перенос данных, проверка целостности, сверка построчно. Восстановлением не занимаемся.
Вытаскиваем данные из систем, которые уже никто не поддерживает, и переносим в современную базу.
По аварии звоните — дежурная смена на линии круглосуточно. По остальному пишите, ответим в рабочее время.
Отвечаем до третьего гудка. Первая оценка — бесплатно.
Миграции, аудит, сопровождение. Ответ в течение рабочего дня.
Пн–пт, 10:00–19:00. Встречи по записи.