Режимы mysqldump для копии базы 1С‑Битрикс
Зачем администратору Битрикса раскладывать режимы mysqldump
Одна база обслуживает ядро, инфоблоки, торговый каталог и журналы. Для переноса на новый сервер, для песочницы разработчика или для выборочного восстановления удобно заранее выбрать что попадёт в дамп: только определения таблиц, данные без массивных логов, отдельные таблицы с префиксом b_iblock_. Ниже — практичные шаблоны под связку mysqldump + типовая схема 1С‑Битрикс, без копирования чужих скриптов буква в букву.
Схема, процедуры и события без строк
Когда нужен «каркас» для сравнения миграций или быстрый просмотр индексов на копии, достаточно дампа структуры. Флаг --no-data исключает строки; --routines и --events подтягивают процедуры и события — уточняйте по политике хостинга, часть площадок ограничивает восстановление процедур от непривилегированного пользователя.
mysqldump --no-data --routines --events имя_базы > schema_only.sqlПострочные INSERT и «полный» список столбцов
По умолчанию mysqldump группирует строки в длинные INSERT — быстрее для импорта, но неудобно, если нужно прогнать grep или вырезать одну запись из текста. Включают построчный режим и явные имена колонок:
--extended-insert=FALSE— по одномуVALUESна строку таблицы;--complete-insert=TRUE— в каждомINSERTперечислены столбцы (удобнее при смене схемы на приёмнике).
Кодировку лучше зафиксировать, чтобы кириллица в свойствах инфоблоков не «поехала» при переносе между серверами.
mysqldump --default-character-set=utf8mb4 \
--extended-insert=FALSE --complete-insert=TRUE \
имя_базы > dump_postrochno.sqlИсключить одну таблицу
Тяжёлую или чужую таблицу можно выложить из дампа повтором ключа --ignore-table для каждого исключения. Имя всегда в формате база.таблица.
mysqldump имя_базы \
--ignore-table=имя_базы.b_search_content \
--ignore-table=имя_базы.b_user_statistics \
> bez_poiska_i_stat.sqlВыбирайте исключения по факту профилирования: на одном проекте больше всего весит история поиска, на другом — временный импорт в промежуточную таблицу.
Несколько пользовательских баз без служебных схем
Вариант ниже собирает список баз из information_schema, отбрасывает системные имена и передаёт его в mysqldump --databases. Так проще, чем вручную перечислять десяток схем на shared-хостинге. Если имён очень много, помните про лимит длины аргумента в оболочке и при необходимости бейте выгрузку на части.
SQL="SELECT schema_name FROM information_schema.schemata \
WHERE schema_name NOT IN ('information_schema','mysql','performance_schema','sys')"
MYSQLDUMP_DBS="--databases"
for DB in $(mysql -N -e "$SQL"); do
MYSQLDUMP_DBS="$MYSQLDUMP_DBS $DB"
done
mysqldump --routines --triggers $MYSQLDUMP_DBS > all_user_databases.sqlАльтернатива через GROUP_CONCAT в одном запросе упирается в group_concat_max_len; для длинных списков баз это не надёжнее цикла.
Каждая таблица в свой файл и префикс инфоблоков
Для точечного сравнения или параллельного сжатия удобно складывать таблицы по отдельности. Обход SHOW TABLES в цикле — универсальный приём. Для среза только таблиц инфоблоков в базе Битрикса фильтруйте имена в запросе к information_schema.tables:
DB_NAME='имя_базы'
OUT_DIR='./dumps_iblock'
mkdir -p "$OUT_DIR"
mysql -N information_schema -e \
"SELECT table_name FROM tables
WHERE table_schema = '$DB_NAME' AND table_name LIKE 'b_iblock_%'" \
| while read -r TBL; do
echo "$TBL"
mysqldump "$DB_NAME" "$TBL" | gzip > "$OUT_DIR/${TBL}.sql.gz"
doneПароль и хост передавайте стандартно (--host, --user, --defaults-extra-file), избегайте -pPAROL в истории команд. На копии проекта проверяйте размер и целостность архивов до пересылки.
«Умный» дамп без перекачивания гигантских логов
На продакшене порой нужна бизнес-логика и справочники целиком, а из таблиц вида журналов — только хвост по первичному ключу. Универсального флага нет: для каждой «тяжёлой» таблицы имеет смысл отдельный вызов mysqldump с условием --where, если достаточно последних N записей по монотонному ключу. Остальной объём базы выгружайте обычным списком таблиц без этих исключений, затем накладывайте суженный дамп сверху или импортируйте по порядку на тестовый стенд. Так вы сокращаете время и место на диске по сравнению с полным клоном — ровно в духе ускорения работы с копией, а не боя.
При накате на другой инстанс проверяйте совместимость опций: при ошибках из-за статистики столбцов в mysqldump 8 при работе с более старым сервером иногда добавляют --column-statistics=0. Перед восстановлением на живом сайте согласуйте окно обслуживания и при необходимости отключите запись в кеш и сессии на время импорта.
Итог
Для окружения с 1С‑Битрикс mysqldump — базовый инструмент: от чистой схемы до выборочных таблиц b_iblock_* и аккуратных исключений. Смысл ускорения здесь — меньше лишних данных в файле и быстрее воспроизводимый стенд для отладки SQL и обменов.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии