Питання MySQL Version Control - Subversion


Цікаво, чи можливо мати контроль над версією бази даних MySQL.

Я усвідомлюю, що це питання було поставлено перед питаннями, однак найновіше було майже рік тому, і за швидкістю речі змінюються ...

Проблема полягає в тому, що кожен розробник має apache / MySQL / PHP на власних комп'ютерах, до яких вони іноді редагують базу даних. Це досить незручно, якщо їм потрібно надіслати електронний лист усім іншим розробникам, а потім вручну змінити базу даних тестових серверів.

Як ти справляється з цією проблемою?

Дякую


31
2017-11-23 15:26


походження


Ви також маєте DBV: stackoverflow.com/a/13837473/6309 - VonC


Відповіді:


Це не рішення, пов'язане з MySQL сам по собі, але ми мали великий успіх у продукті, що називається liquibase. (http://www.liquibase.org/)

Це рішення для міграції, яке охоплює безліч різних постачальників баз даних, що дозволяє кодувати всі зміни бази даних в конфігураційних файлах, які всі зберігаються в Subversion. Оскільки вся конфігурація зберігається у файлах XML, легко змішувати зміни інших користувачів у основному сценарії та добре відтворювати теги та гілки.

База даних може бути переглянута до поточного рівня перегляду, запустивши команду "update database". Більшість змін також мають можливість скасувати зміну бази даних, що також може бути корисним. Я б порекомендував дотримуватися практики переконатись, що ви отримуєте інформацію про поточний стан, перш ніж виконувати міграцію, оскільки це, швидше за все, буде найпростішим.

Нарешті, коли мова йде про доставку продукції, ви можете вибрати, щоб усі зміни в базі даних були виведені як повний сценарій SQL, щоб він міг дозволити адміністраторам баз даних запускати його та підтримувати розділення обов'язків.

Поки що це працювало як чарівність.


16
2017-11-23 15:40



Це виглядає як чудове рішення - дякую вам дуже багато! - user103219
Ви також можете використовувати maatkit, який вбудований в багато дистрибутивів Linux. Це невеликий корисний нож, maatkit, і він не встановлює залежностей між собою та іншими програмами. - Wolfpack'08
Дійсно прохолодний підхід. - funktioneer


Ну, ми використовуємо Rails, яка зберігає всі зміни у файлах міграції. Я знаю, що пара рамок PHP виконує однакову річ - наприклад, Symphony. Таким чином, коли всі зміни будуть об'єднані в нашому сховищі (ми - користувач Mercurial), ми можемо бачити всі зміни в міграції, які потребують чи були застосовані до бази даних у процесі розробки. Через те, що людина, відповідальна за виробництво, виготовляє код для виробництва після повної резервної копії. Однак, якщо ви не використовуєте PHP-структуру, яка піклується про це, пропозиція awied звучить дуже цікаво - я ще не чув про рідинну базу раніше, але я обов'язково перевірити це.


1
2017-11-23 15:46





Існує інструмент під назвою iBatis, тепер його називають MyBatis, який відмінно обробляє версії баз даних.

Необхідно трохи попрацювати над усіма вашими змінами в сценарії, а не за допомогою графічного інструмента, але, якщо ви знайомі з кодуванням, це не проблема.

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


1
2017-08-16 15:30