Работа делится на два направления. Первое — приведение текущей базы в порядок: разбор журналов долгих запросов, чтение планов исполнения, подбор индексов, аккуратное переписывание проблемных выборок и пересмотр отдельных участков структуры (где-то нормализация, где-то, наоборот, вынос в денормализованные или агрегированные таблицы). Ждём, что каждое предложение будет сопровождаться замерами на копии реальных данных, чтобы видеть выигрыш в цифрах. Второе направление — перенос данных между MySQL и PostgreSQL. Это ответственная операция: недопустима потеря ни одной записи, простой должен быть сведён к минимуму, нужны сопоставление типов и кодировок, перенос процедур и ограничений целостности, контроль по числу строк и контрольным суммам, а также заранее отрепетированный откат.
Все работы стартуют на отдельном тестовом стенде, а любые действия на продакшене согласуются с нашей стороной. Ценим внятную обратную связь, повторяемые скрипты вместо ручных разовых манипуляций и открытый разговор о плюсах и минусах каждого варианта. Пожалуйста, расскажите об опыте с большими объёмами данных и о предпочитаемом наборе инструментов для конвертации структуры и сверки. Итоговые материалы должны быть описаны так, чтобы наши инженеры смогли сопровождать их без вашего участия.
— Разбор долгих запросов с расстановкой приоритетов и инструкцией по воспроизведению
— Набор индексов, переписанные выборки и правки структуры с подтверждающими замерами
— Пошаговый план переноса: соответствие типов, порядок переключения и откат
— Автопроверка числа строк, контрольных сумм и связности данных после переноса
— Сопроводительная документация и короткий инструктаж для нашей команды