Оновлення баз даних в mysql, як правильно

взагалі-то є два способи
1. зробити DDL sql, який з схему початкової бази зробить потрібну. Зазвичай це робиться відразу і все модифікації атомарний у вигляді скриптів DDL. Автоматом можна пошукати тулзи які роблять міграцію структури або порівнюють бази. Найтупіший спосіб - зробити експорт структури зі старої бази (без даних) і тупо по тексту diff з якого зробити вже потрібний скрипт для зміни DDL

2. Взяти дані зі старої і перенести в нову. Тобто експортуємо дані зі старої і заливаємо в нову.

В обох випадках структуру можна поміняти так що будуть проблеми, зазвичай унікальні або зовнішні індекси не встають (дані не заливаються). Тут є два шляхи - відключити всі перевірки і тригери і зробити insert ignore, а потім порівнювати і шукати що ні залилося і чому, потім включати і перевіряти консистентность. Або заливати як є і дивитися чому вилетіло. З скриптами DDL варіант тільки другий.

Я в такій же ситуації зазвичай роблять експорт / імпорт даних, тому що перебудовуються індекси, додаткова перевірка і взагалі стару базу в якості бекапу використовую, хоча скрипти DDL є завжди (вони синхронізують бази на локальному і зовнішньому дев-серверах).
Якщо є проблеми, то приходиться писати редагування даних в злитому дампі або відключати фичи в новому, змінювати дані і включати їх назад.

Схожі статті