Работа с резервными копиями в Битрикс24


Мы рассмотрим процесс создания резервной копии как средствами веб-интерфейса, так и вручную (дамп базы данных и копирование файлов). Также мы выполним восстановление работы Битрикс24 с помощью созданных архивов.
Подразумевается, что у нас уже развернут портал Битрикс24. Иначе, читаем инструкцию Установка CRM Битрикс24 на Linux CentOS.
Создание резервной копии
С помощью веб-интерфейса
Вручную
Восстановление из резервной копии
В веб-интерфейсе
Вручную
Решение возможных проблем
Резервное копирование
Мы рассмотрим два варианта создания резервной копии для портала Битрикс24 — посредством графического веб-интерфейса и с помощью командной строки Linux.
Веб-интерфейс
Входим в панель управления и переходим в разделы Рабочий стол - Настройки - Инструменты - Резервное копирование - Создание резервной копии. На вкладке Резервное копирование:
... выбираем размещение копии и кликаем по Создать резервную копию:
Начнется процесс:
Ждем его завершения. После, части архива будут помещены в каталог /home/bitrix/www/bitrix/backup.
Для автоматического резервного копирования переходим в разделы Рабочий стол - Настройки - Инструменты - Резервное копирование - Регулярное резервное копирование и включаем его. В настройках также можно выбрать хранение бэкапа на локальном компьютере или в облаке Битрикс.
Ручное резервное копирование
Чтобы сделать резерв Битрикс24, необходимо скопировать файлы портала Битрикс, а также создать дамп базы данных. Рассмотрим оба процесса по очереди.
1. Копирование файлов. Нам нужно скопировать содержимое каталога /home/bitrix/www, где /home/bitrix — базовый каталог установки Битрикс.
Ниже приведем различные примеры копирования.
а) простое копирование файлов:
cp -R /home/bitrix/www/* /backup/bitrix/www/
* в данном примере мы копируем содержимое каталога /home/bitrix/www в папку /backup/bitrix/www.
б) синхронизация файлов с помощью rsync:
rsync -avv /home/bitrix/www/ /backup/bitrix/www/
* в данном примере мы будем поддерживать в актуальном состоянии каталог /home/bitrix/www, копия которого будет храниться в папке /backup/bitrix/www.
в) создание архива:
tar -zcvf /backup/bitrix/archive.tar.gz /home/bitrix/www
* данная команда создаст архивный файл archive.tar.gz, сжав содержимое каталога /home/bitrix/www.
2. Создание дампа базы данных. Для начала, посмотрим имя базы данных:
cat /home/bitrix/www/bitrix/php_interface/dbconn.php | grep DBName
* где /home/bitrix — базовый каталог, куда установлен битрикс.
В моем примере строка вернула имя для базы bitrix_52, значит команда для создания дампа будет:
mysqldump -uroot -p bitrix_52 > /backup/bitrix/mysql.sql
* команда потребует ввести пароль от пользователя root (после установки веб-окружения битрикс24, пароль для суперпользователя был сохранен в файл /root/.my.cnf).
Подробнее о создании дампа mysql/mariadb.
3. Скрипт для резервного копирования. Для примера, приведем следующий скрипт:
- #!/bin/sh
- PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
- fdate=`date +%Y-%m-%d`
- my_user='backup'
- my_password='backup123!'
- my_base='bitrix_52'
- path_backup='/backup/bitrix'
- mysqldump -u$my_user -p$my_password $my_base | gzip > $path_backup/mysql/my_$fdate.sql.zip
- tar -zcf $path_backup/archive/ar_$fdate.tar.gz /home/bitrix/www
* где:
- fdate — текущая дата. Подставляется в название файлов резервных копий.
- my_user — пользователь для подключения к СУБД.
- my_password — пароль для подключения к СУБД.
- my_base — имя базы данных.
- path_backup — путь до каталога, куда складываем резервные копии.
Данный скрипт выполнит архивирование файлов и создания дампа базы данных.
Восстановление
Прежде чем выполнить восстановление портала, необходимо установить веб-окружения Битрикс. Для этого можно воспользоваться инструкцией Установка CRM Битрикс24 на Linux (первый подраздел).
Мы рассмотрим процесс восстановления с помощью веб-интерфейса и с помощью командной строки Linux.
Веб-интерфейс
Резервные копии хранятся в каталоге <путь установки битрикс>/www/bitrix/backup. В нашем примере это /home/bitrix/www/bitrix/backup. Переносим все файлы резервных копий в данную папку.
Переходим в панель управления по адресу https://<IP-адрес битрикс>/bitrix/admin. Затем в Рабочий стол - Настройки - Инструменты - Резервное копирование - Список резервных копий. Среди списка находим ту, которую перенесли на сервер, кликаем по значку меню слева от нее и выбираем Восстановить:
В следующем окне нажимаем ДАЛЕЕ для начала восстановления:
Начнется процесс:
После распаковки файлов, мастер предложит ввести данные для восстановления базы данных — по умолчанию он подставит значения из файла dbconn.php:
Начнется процесс восстановления базы данных:
Ручное восстановление
Ручное восстановление, как и создание резервной копии, делается в два этапа — копирование файлов портала и восстановление базы данных. Рассмотрим эти процессы.
1. Восстановление файлов. Необходимо восстановить содержимое каталога /home/bitrix/www — для этого переносим в него содержимое одного из архивов.
Если мы взяли архив, созданный с помощью веб-интерфейса, то он будет разбит на части, при этом, не совсем корректно для Linux или некоторых программ для работы с архивами (например, 7zip) — номера частям архива присваиваются 1, 2, 3 ... 200 ... N. Необходимо переименовать части таким образом, чтобы они могли правильно сортироваться по имени, то есть 1 в 001, 2 — 002, 22 — 022 и так далее. В название первого архива (который заканчивается на tar.gz) добавляем 000 — получим ...tar.gz.000. Теперь мы можем распаковывать архив, например, командой:
cat full_e92a233e.tar.gz* | tar -zxv -C /home/bitrix/
Если мы просто копируем данные, стоит обратить внимание, что в каталоге есть скрытые файлы, которые начинаются со знака точки. Команды переноса или копирования файлов, при использовании знака *, не учитывают скрытые данные — их нужно переносить отдельно. Поэтому если вы использовали именно такой подход для переноса данных, учитывайте данный нюанс.
После переноса данных, задаем права:
chown -R bitrix:bitrix /home/bitrix/www
* мы указали, что владелец каталога и всего его содержимого должен быть bitrix.
2. Восстанавливаем базу данных. Сначала смотрим содержимое файла dbconn.php:
cat /home/bitrix/www/bitrix/php_interface/dbconn.php
* где /home/bitrix — базовый каталог, куда был установлен битрикс24.
Нам интересны следующие значения:
- $DBLogin — пользователь, под которым идет подключение к базе.
- $DBPassword — пароль для подключения к базе.
- $DBName — имя базы данных.
Подключаемся к базе:
mysql -uroot -p
* напоминаю, что после установки среды окружения битрикс24, пароль для суперпользователя mysql можно посмотреть командой cat /root/.my.cnf.
Создаем базу данных:
> CREATE DATABASE bitrix_52 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci;
* где bitrix_52 — имя базы, которая указана в переменной $DBName (файл выше).
Создаем пользователя для доступа к базе:
> CREATE USER 'bitrix0'@'localhost' IDENTIFIED BY 'rqHWvA1tepbFhu9G';
> GRANT ALL PRIVILEGES ON bitrix_52.* TO 'bitrix0'@'localhost';
* данные команды создадут пользователя bitrix0 с паролем rqHWvA1tepbFhu9G для доступа к базе bitrix_52. Какие именно данные вводить мы должны увидеть в файле dbconn.php выше.
Выходим из sql-оболочки:
> quit
Теперь переносим дамп на новый сервер и выполняем восстановление базы данных, например, командой:
mysql -u root -p bitrix_52 < /backup/bitrix/mysql.sql
* в данном примере мы восстановим базу bitrix_52 из дампа /backup/bitrix/mysql.sql.
Подробнее о восстановлении mysql или mariadb.
Возможные ошибки
Mysql query error: (1298) Unknown or incorrect time zone
Ошибка появляется в браузере при попытке открыть восстановленный портал.
Причина: при попытке выполнить команду SET GLOBAL time_zone в MySQL система не может найти в своей базе используемый часовой пояс.
Решение: загружаем информацию о часовых поясах в СУБД. Для этого просто выполним команду:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p
Мы можем получить предупреждения:
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
... игнорируем их.
После выполнения команды проблема должна исчезнуть.