Переезд на Omut
Миграция с OSPanel или Docker.
Краткий гайд для разработчиков с OSPanel или Docker.
Общая схема
- Установите Omut.
- Скопируйте файлы проекта в
~/Omut/имя-сайта.bitrix/(корень — где лежит/bitrix/). - Импортируйте дамп БД: меню сайта (⋮) → Импорт дампа базы (или разверните бэкап через restore.php).
- Проверьте
.settings.php/dbconn.php— хостlocalhost, сокет MySQL подхватывается автоматически.
С OSPanel / OpenServer
| OSPanel | Omut |
|---|---|
domains/ | ~/Omut/имя.bitrix/ |
| MySQL в панели | MySQL 8.4 по умолчанию |
.local домены | имя.bitrix |
| phpMyAdmin | Adminer из меню сайта |
| Импорт дампа в phpMyAdmin | Импорт дампа базы — напрямую в MySQL, мимо PHP |
Шаги:
- Остановите OSPanel (освободите порты 80/443/3306).
- Скопируйте папку сайта.
- Сделайте
mysqldumpв OSPanel и залейте файл через Импорт дампа базы. - В
.settings.php— хостlocalhost, пользовательroot, пароль пустой (или креды вашей dev-БД).
С Docker
docker compose down— освободите порты.- Скопируйте volume с файлами в
~/Omut/. - Экспорт:
docker exec … mysqldump … > dump.sql, дальше Импорт дампа базы в меню сайта. - Замените хосты
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/ перед экспериментами. Откат = вернуть файлы и перезапустить окружение.