Как снять бекап базы в Битрикс?

В данной статье мы рассмотрим способы снятия дампа базы данных двумя популярными способами: с помощью Битриксового механизма и простой консольной командой.

Обычно все решается легким путем с помощью Битриксовых средств – мы рекомендуем пользоваться им. В другом случае, можно прибегнуть к созданию дампа другими средствами, но здесь понадобится немного знаний и опыта. В самых отчаянных случаях, когда база забита гигабайтами информации, а доступность сайта критически важна – рекомендуется использовать xtrabackup. Последнее рассматривать не будем в данной статье.

С помощью механизма Битрикс

Выполняется очень просто с помощью механизма создания бекапа Настройки / Инструменты / Резервное копирование

Выбираем где создаем бекап – в облаке или на сайте. В большинстве случаев создаем на сайте, облако – скорее, для регулярных копий.

Для создания дампа, выбираем экспертные настройки и оставляем галочку Архивировать базу данных. Если нужно исключить поисковый индекс, журналы событий и статистику – снимаем галочки рядом.

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

У Битриксового способа создания бекапа есть недостаток – вы не сможете исключить таблицы, которые вам не нужны. Я решал это кастомизацией ядра битрикса, в другой раз – подменной стандартного класса кастомизированным.

Восстановление дампа

Для восстановления дампа понадобится файл restore.php. Его необходимо положить в корень сайта и запустить процедуру восстановления. Затем, загрузить архив с дампом и восстановить базу данных.

По идее архив можно было бы распаковать и, затем, восстановить данные из дампа консольной командой, но нет гарантий, что это сработает – Битрикс хитрым способом разбивает дамп по частям архива.

После восстановления, не забудьте проверить, что файл restore.php удален с сайта.

С помощью mysql dump

Порой возникают проблемы, из-за которых процедура снятия копии базы данных с помощью Битрикса невозможна или затруднительна.

Это актуально, когда:

  • Нужно исключить тяжелые таблицы из дампа (фасеты, таблицы HL и т.п.). В Битриксовом механизме создания бекапа нельзя исключать таблицы, кроме поискового индекса, логов и статистики.
  • Владелец отказывается пускать в админку и не дает доступы от сайта. Но у вас есть ssh доступ.
  • Нужно по-быстрому сделать дамп базы данных на всякий случай.

Как снять дамп

Для процедуры снятия дампа нужного сайта берем доступы к MySQL из файла /bitrix/php_interface/dbconn.php или /bitrix/.settings.php

Затем в консоли вводим команду, подставляя доступы базы данных:

Убедитесь перед операцией, что места на диске хватит для создания дампа

Исключение таблиц из дампа

При этом вы можете не только задампить базу, но и исключить из нее ненужные и тяжелые таблицы, которые не так необходимы.

В моем случае мне попадалась тяжелейшая таблица с фасетными индексами. Тогда у меня битриксовое создание бекапа занимало 8-10 часов только из-за этой таблицы.Учитывая, что у меня мощное железо и на сайте 100+ тысяч товаров.Тогда этот способ оказался действительным.

Восстановление дампа

Восстановление дампа выполняется очень просто

Рекомендации

  • Проверяйте, достаточно ли места на диске перед операцией
  • Если база очень тяжелая и недопустим простой сайта – используйте xtrabackup
  • Обязательно проверяйте корректность выполнения бекапа (он может прерваться по ошибке) – если это обычный дамп, то смотрите в начале и в конце файла комментарий «Start» и «Completed»
  • Если делаете бекап с помощью Битрикса, проверяйте с помощью Проверка системы / Проверка файлов – что нет в корне файлов, к которым нет доступа из-под пользователя, под которым крутится сайт – иначе при восстановлении будут проблемы. Либо исключайте такие в настройке бекапа (например, .git), либо прописывайте права с помощью chown -R bitrix:bitrix путь_до_папки_сайта