Переезд на Omut

Миграция с OSPanel или Docker.

Краткий гайд для разработчиков с OSPanel или Docker.

Общая схема

  1. Установите Omut.
  2. Скопируйте файлы проекта в ~/Omut/имя-сайта.bitrix/ (корень — где лежит /bitrix/).
  3. Импортируйте дамп БД: меню сайта () → Импорт дампа базы (или разверните бэкап через restore.php).
  4. Проверьте .settings.php / dbconn.php — хост localhost, сокет MySQL подхватывается автоматически.

С OSPanel / OpenServer

OSPanelOmut
domains/~/Omut/имя.bitrix/
MySQL в панелиMySQL 8.4 по умолчанию
.local доменыимя.bitrix
phpMyAdminAdminer из меню сайта
Импорт дампа в phpMyAdminИмпорт дампа базы — напрямую в MySQL, мимо PHP

Шаги:

  1. Остановите OSPanel (освободите порты 80/443/3306).
  2. Скопируйте папку сайта.
  3. Сделайте mysqldump в OSPanel и залейте файл через Импорт дампа базы.
  4. В .settings.php — хост localhost, пользователь root, пароль пустой (или креды вашей dev-БД).

С Docker

  1. docker compose down — освободите порты.
  2. Скопируйте volume с файлами в ~/Omut/.
  3. Экспорт: docker exec … mysqldump … > dump.sql, дальше Импорт дампа базы в меню сайта.
  4. Замените хосты mysql / db в .settings.php на localhost.

Omut быстрее Docker на Apple Silicon — нативные процессы без виртуализации.

Импорт дампа

Меню сайта () → Импорт дампа базы. Файл .sql или .sql.gz уходит прямо в MySQL, минуя PHP: дамп не читается в память целиком, поэтому гигабайтные базы проходят так же, как маленькие. Идёт с прогрессом, импорт можно остановить.

  • Домен на боевом сервере — необязательное поле: указанный домен заменяется на имя.bitrix прямо в потоке импорта, плюс правится адрес площадки в настройках Битрикса.
  • Очистить базу перед импортом — по умолчанию включено. Без очистки дамп без DROP TABLE IF EXISTS обрывается на дубликатах ключей.
  • Продолжать при ошибках — по умолчанию выключено: импорт останавливается на первой ошибке и показывает, на какой строке и почему. С галочкой MySQL пропускает выражения, которые не принял, и доходит до конца дампа; всё пропущенное сгруппировано в отчёте.
  • Архив .zip / .tar.gz сначала распакуйте — Omut принимает сам дамп.

Что Omut правит в дампе с хостинга

Дамп с боевого сервера тащит за собой то, что локально либо ломает импорт, либо стреляет позже. Omut правит это прямо в потоке, файл на диске не меняется, а после импорта показывает отчёт — переписанный дамп не должен выглядеть как нетронутый:

Что вырезаноПочему
DEFINER=user@host`` у view, триггеров, процедур, событийТакого пользователя MySQL здесь нет; без правки ошибка 1449 всплывает не при импорте, а при первом обращении к представлению. Объекты создаются от root.
CREATE DATABASE / DROP DATABASE / USEДамп с --databases пишет в базу с боевым именем, а не в базу сайта; DROP DATABASE снёс бы базу. Распознаются независимо от форматирования: комментарии и переносы строк между ключевыми словами, несколько выражений в строке.
STRICT_TRANS_TABLES, NO_ZERO_DATE, NO_ZERO_IN_DATE, STRICT_ALL_TABLES, ERROR_FOR_DIVISION_BY_ZERO, TRADITIONAL, NO_AUTO_CREATE_USER из SET SQL_MODEСтрогие режимы не пропускают даты 0000-00-00 из старых баз; NO_AUTO_CREATE_USER не существует в MySQL 8. Остальные токены остаются.
SET @@GLOBAL.GTID_PURGEDНастройка репликации боевого сервера; на локальном MySQL с непустым GTID это ошибка.

Данные (INSERT) не трогаются: правила смотрят только на заголовки DDL и служебные строки, содержимое строковых литералов и SQL-комментариев не меняется (в любой позиции строки, включая многострочные), а внутри блоков DELIMITER правятся только DEFINER заголовка и служебные строки /*! SET … SQL_MODE */ обвязки mysqldump между объектами — всё, что после заголовка CREATE и до конца процедуры, остаётся как есть. Номера строк сохраняются — «строка 4711» в ошибке MySQL по-прежнему строка 4711 вашего файла.

Чистится только импорт чужого дампа с диска. Восстановление из копий Omut и клон сайта льют дамп как есть: своя копия должна вернуться байт-в-байт.

Если опасное выражение спрятано в сверхдлинной строке (например, после гигантского INSERT в той же строке), Omut останавливает импорт с объяснением: переписать такую строку потоково нельзя, а выполнять её от имени root — тем более.

Отчёт импорта

После импорта окно не закрывается, а показывает итог: залита ли база целиком, что вырезано (см. выше) и — если стояла галочка «Продолжать при ошибках» — группы ошибок MySQL: код, текст первой, сколько раз повторилась, строка дампа и подсказка, что с этим делать. Та же сводка одной строкой пишется в журнал Omut (Журналы → Омут).

Импорт доступен во Free. Через Adminer большие дампы не проходят: он гоняет их через PHP и упирается в memory_limit и таймауты — это ограничение PHP, а не Omut.

Частые проблемы

  • Праваupload/, bitrix/cache/ должны быть writable вашему пользователю Mac
  • Часовой поясНастройки → Europe/Moscow
  • Сессии — окружение должно быть запущено; session.save_path задаёт Omut
  • URL в БД — после смены домена обновите b_option (site_url) или скрипт смены URL

Откат

Скопируйте ~/Omut/ и ~/Library/Application Support/Omut/databases/ перед экспериментами. Откат = вернуть файлы и перезапустить окружение.