Использование контроля версий (Git) в базе данных MySQL

Я разработчик WordPress/Developer, который все больше и больше участвует в управлении версиями, особенно Git, хотя я использую SVN для некоторых проектов. В настоящее время я использую Beanstalk для моего удаленного репо.

Добавление всех файлов WordPress в мое репо - это не проблема, если я хочу знать, что могу .gitignore файл wp-config, но поскольку я единственный разработчик, в настоящее время, и эти проекты закрыты исходным кодом, это действительно мало смысла.

WordPress в значительной степени зависит от базы данных, как и любая CMS, для сохранения текстового контента и множества настроек в зависимости от конкретной конфигурации плагина/темы, которую я использую. Мне интересно, какой лучший способ использования контроля версий в базе данных был бы, если бы это было возможно. Я думаю, я мог бы сделать дамп SQL, хотя мой сервер MySQL работает в Windows (читайте так: я не знаю, как это сделать), а затем добавьте дамп SQL в мой репозиторий. Но когда я толкаю что-то живое, это создает огромные угрозы безопасности.

Есть ли принятая практика этого?

Ответ 1

Вы можете сделать резервную копию своей базы данных в репозитории git. Конечно, если вы поместите данные в git в двоичной форме, вы потеряете все возможности git для эффективного хранения данных с помощью diff (changes). Поэтому наилучшей практикой номер один является следующее: сохранение данных в текстовом сериализованном формате.

mysqldump - подходящая программа, которая поможет вам в этом. Однако это не идеально. Если что-то нарушает порядок сортировки элементов (например, в результате создания новых таблиц и т.д.), Тогда в diff будут введены искусственные разрывы. Это снизит эффективность хранения. Вы можете написать собственный сериализатор для сериализации только изменений - но тогда вы выполняете тяжелую работу, в которой git уже работает. Просто используйте sql dump.

Говоря о том, что вы хотите сделать, это не то, что обычно означает devs, когда они говорят о помещении базы данных в git. Например, если вы прочтете ссылку, размещенную на @eggyal (ссылка на codinghorror), вы увидите, что то, что действительно помещено в git, - это скрипты, необходимые для создания исходная база данных. Могут быть дополнительные сценарии, например, для заполнения данных базы данных чистым состоянием или для заполнения его данными тестирования. Все такие sql-скрипты представляют собой текстовые файлы и почти такой же формат, как и sql-дамп, который вы получите от mysqldump. Поэтому нет причин, по которым вы не можете так поступать с вашими повседневными данными.

Ответ 2

Существует не так много программ для баз данных контроля версий, таких как MySQL и MongoDB.

Но один находится в разработке, и вскоре будет запущена бета-версия. Проверьте Klonio - контроль версий для баз данных

Ответ 3

Статья Как синхронизировать локальный и удаленный блог WordPress с помощью контроля версий дает советы о том, как автоматизировать синхронизацию между двумя экземплярами (разработка, производство ) блога WordPress с использованием Mercurial. Означает, что для этого сценария Git и Mercurial очень похожи.

Шаг 4 (Синхронизация баз данных) представляет интерес здесь.

Содержимое базы данных будет экспортировано в файл, отслеживаемый элементом управления версиями. Каждый раз, когда мы извлекаем изменения, содержимое базы данных будет заменено этим файлом, что сделает нашу базу данных актуальной.

Затем он анализирует конфликты и часть сценария задания.

Существует руководство по управлению версиями в Mercurial, если вы не знакомы с ним.

Ответ 4

Имейте в виду, что Wordpress сохраняет все содержимое ленты новостей в базе данных, поэтому даже если вы не внесете никаких изменений, будет много изменений содержимого.