РАЗРАБОТКА НА БИТРИКС

Миграции баз данных в Битрикс

Подписывайтесь на канал для bitrix-разработчиков в Telegram!
Для реализации миграций баз данных используется бесплатный модуль "Миграции для разработчиков", который помогает переносить изменения между нескольким копиями проекта.

Все изменения для базы данных пишутся в файлы миграций. Эти файлы, как и весь код проекта, хранятся в системе контроля версий (например git) и попадают в копии разработчиков, после чего необходимо выполнить установку новых миграций, чтобы обновить БД. Работать можно как через консоль, так и через админку.

Установка модуля

Установка модуля стандартная и не требует нестандартных действий.
До установки модуля убедитесь, что на сайте есть папка /local/php_interface/ - туда добавятся папки:
  • migrations
  • migrations.archive

Иначе эти папки создадутся в /bitrix/php_interface/, что будет нарушением парадигмы использования папки /local/

Настройка модуля

Сразу после установки модуль готов к использованию.
На странице "Настройки модуля" /bitrix/admin/settings.php?lang=ru&mid=sprint.migration можно:
  • просмотреть параметры предустановленной конфигурации;
  • создать свою конфигурацию (отличную от предустановленной);
  • удалить файл конфигурации, файлы миграций и записи в таблице миграций;
  • установить гаджет "Сводка по миграциям";
  • сбросить настройки модуля.

    Создание миграций

    Работа с миграциями ведется по адресу:
    Настройки > Миграции для разработчиков > Миграции (cfg)
    Модуль позволяет создавать миграции двумя способами:

    1. Вручную создать собственную миграцию. Для этого необходимо:
    • создать "болванку" миграции, используя блок "Создать простую миграцию";
    Создание миграции Базы данных - KISLOROD
    • дописать в нее свой код, опираясь на документацию.
    2. Использовать предустановленные миграции.

    Предустановленные миграции

    В модуле уже содержатся типовые миграции, которые сразу можно использовать. Вот их список:
    • Создать миграцию для инфоблока
    • Перенести элементы инфоблоков
    • Создать миграцию для пользовательских полей
    • Создать миграцию для настроек модулей
    • Создать миграцию для почтовых событий
    • Создать миграцию для групп пользователей
    • Создать миграцию для highload-блока
    • Перенести элементы highload-блоков
    • Создать миграцию для агентов
    • Создать миграцию для веб-формы
    • Создать миграцию для пользовательских настроек

    Практический пример создания миграции

    Рассмотрим создание миграции на примере миграции для инфоблока.
    Для тестов был создан новый тип инфоблока "Магазины" и в нем инфоблок "Список магазинов". В инфоблоке были настроены:
    • поля и поля разделов,
    • доступы,
    • подписи,
    • журнал событий.

    Также были созданы свойства разного типа:
    Создании свойств для миграции Базы данных - KISLOROD
    Алгоритм создания миграции:

    1. Переходим в раздел "Настройки > Миграции для разработчиков > Миграции (cfg)".
    2. Нажимаем на блок "Создать миграцию для инфоблока".

    Создание миграции для инфоблока в 1С-Битрикс - KISLOROD
    3. Заполняем поля и жмем кнопку "Далее":

    • Заголовок - если оставить без изменений, будет вида "#NAME##TIMESTAMP#"
    • Описание - не обязательное поле.
    Создание миграции в инфоблоке - KISLOROD
    4. В выпадающем списке выбираем инфоблок и отмечаем, что должно быть в миграции. Для продолжения жмем кнопку "Далее".
    Создание миграции в инфоблоке - список магазинов в 1С Битрикс - KISLOROD
    5. Если в пункте "Что переносим" был выбран пункт "Свойства инфоблока", на этом шаге надо выбрать, какие свойства мы переносим. Для примера выбраны все свойства.
    Выбор свойств инфоблока для миграции - KISLOROD
    6. Для завершения создания миграции жмем кнопку "Далее" и получаем сообщение, что миграция создана.
    Пример миграции для инфоблока - KISLOROD
    7. На сервере данная миграция появилась в /local/php_interface/migrations/
    Миграция инфоблока на сервере - KISLOROD
    8. Далее через гит переносим эту миграцию на требуемые сайты.
    9. На сайте, где необходимо развернуть миграцию, заходим в Настройки > Миграции для разработчиков > Миграции (cfg) и видим нашу перенесенную миграцию.
    Миграции для разработчиков > Миграции (cfg) - KISLOROD
    10. Жмем "Установить" и подтверждаем установку миграции в всплывающем окне.
    11. В окне с логом видим результат.
    Миграция инфоблока - Миграция магазина на Битрикс - KISLOROD
    Но, как говорится, "Доверяй, но проверяй!".
    Заходим в "Контент" и видим, что тип инфоблока и сам инфоблок создались. Уже хорошо!
    Контент - Список магазинов в панели 1С-Битрикс - KISLOROD
    Заходим в настройки инфоблока и проходимся по всем вкладкам, которые мы изменяли на сайте-доноре.

    Результат

    1. Создался тип инфоблока и сам инфоблок;
    2. Все свойства перенеслись без ошибок;
    3. Все настройки инфоблока перенеслись корректно, за исключением настроек "Журнала событий" - они остались без изменений;
    4. Сама миграция заняла по времени не больше 2 минут.

    Выводы

    Даже использование готовых миграций существенно облегчает жизнь разработчика и берет многие рутинные действия, которые пропорционально растут с увеличением количества сайтов, на себя. А с учетом того, что можно написать собственные миграции, возможности модуля ограничиваются только компетенциями разработчика. Немаловажно и то, что модуль постоянно обновляется и обрастает новым функционалом.
    Подписывайтесь на канал для bitrix-разработчиков в Telegram!

    Рекомендованные статьи