Для аналогичного проекта мы
- использовать MySQLWorkbench (MWB) для разработки и редактирования схемы
- отправить файл .mwb через VCS.
- Когда один из нас устраивает изменение, он использует
mysqldump --complete-insert
... в производственной и тестовой схемах, чтобы сгенерировать копию существующих тестовых и производственных данных с именами полей
- вытащить все операторы вставки производственного сервера в (3) и поместить их в защищенный / data / insert.sql
- используйте пункт меню «инженер-форвард» в MWB на модифицированной модели, чтобы сгенерировать sql для сохранения в файл с именем protected / data / create.sql, при необходимости отредактировав вручную (обязательно используйте условие
if exists
для уменьшить ошибки)
- написать файл drop.sql на основе операторов drop в (3)
- используйте MWB, запустите sql (drop.sql, create.sql, insert.sql) после выполнения соответствующей команды «use database», которая идентифицирует производственную базу данных
- устраняет все ошибки в (7), устраняя любые недопустимые вставки из-за столбцов / полей, которые не нужны в новых моделях / схемах. Рерун (7)
- иметь дело с новыми полями в (7), которым нужны данные, отличные от Null. Рерун (7)
Теперь у вас есть снимок вашей схемы (drop.sql create.sql) и ваших данных, которые должны восстановить ваш тестовый или рабочий сервер, если у вас возникнут проблемы. И у вас есть «фиксатор» данных, которые были на вашем рабочем сервере (insert.sql), которые можно использовать для ускорения работы вашего тестового сервера или в качестве резервной копии данных рабочего сервера (которые быстро устаревают) , Очевидно, что все отношения с внешним ключом являются действительно болезненными, поэтому редко когда insert.sql полезен для чего-либо, кроме обновления схемы и восстановления производственных данных после этого изменения. Очевидно, что требуется некоторое время, чтобы выявить перегибы в процессе, чтобы задержка между (3) и (9) была достаточно мала, чтобы пользователи рабочего сервера не замечали простои.
Очевидно, что "Rerun (7)" становится повторяющимся и быстро превращается в сценарий оболочки, который напрямую вызывает mysql. Также другими шагами в процессе редактирования sql становятся sed
сценарии.