Восстановление из резервной копии - порядок, отказы, проверка
Разворачиваем копию сайта на новой площадке и разбираем отказы, на которых восстановление обрывается чаще всего.
Решение
Готовим площадку под разворот:
mysql -e "CREATE DATABASE bitrix_new CHARACTER SET utf8mb4;"df -h /home/bitrix # нужно место под архив и под распакованноеdf -i /home/bitrix # и запас по числу файлов на разделеphp -i | grep -E 'memory_limit|max_execution_time|upload_max_filesize'# распаковка идёт процессом PHP: его пределы и решают, дойдёт ли она до концаМеста нужно вдвое больше: под сам архив и под распакованные из него файлы. Половина отказов восстановления - это кончившийся диск на середине распаковки, и выглядит она как непонятная ошибка скрипта.
Запускаем восстановление:
# корень сайта должен быть пуст: чужие файлы ломают разворотls -A /home/bitrix/www/ | headcurl -o /home/bitrix/www/restore.php https://www.1c-bitrix.ru/download/scripts/restore.phpchown bitrix:bitrix /home/bitrix/www/restore.php# после разворота скрипт удаляют: он открыт по прямой ссылке всемСкрипт восстановления работает только в полностью пустом корне сайта. Остатки прежней установки он воспринимает как часть сайта, и разворот заканчивается смесью двух проектов в одной папке.
Проверяем настройки подключения после разворота:
// /bitrix/php_interface/dbconn.php и /bitrix/.settings.php$conn = \Bitrix\Main\Config\Configuration::getValue('connections');printf("база=%s хост=%s\n", $conn['default']['database'], $conn['default']['host']);// эти файлы приезжают из копии и указывают на прежний серверНастройки подключения приезжают вместе с копией и указывают на старую базу. Скрипт восстановления правит их сам, но при ручной распаковке архива это приходится делать руками, иначе тестовый сайт пишет в рабочую базу.
Убираем следы прежней площадки:
BXClearCache(true); // кэш компонентов целикомCHTMLPagesCache::getInstance()->deleteAll(); // композитные страницыCOption::SetOptionString('main', 'server_name', 'test.example.com');Кэш из копии хранит прежние адреса площадки и прежние данные. Пропущенная чистка даёт самый пугающий эффект восстановления: сайт открывается, но показывает страницы исходной площадки со старыми ссылками.
Свежесть самой копии проверяют до разворота, а не после него. Архив недельной давности с рабочего сайта означает потерю всех заказов за неделю, и узнать об этом лучше раньше, чем после переключения домена.
Восстановление на тестовую площадку требует отключения всех внешних связей. Обмен с учётной системой, платёжные системы и рассылки на копии оставляют шанс отправить настоящему покупателю письмо или списать деньги дважды.
Копия мультисайта разворачивается всегда целиком, а не по одному сайту. Разделить проекты можно только после разворота, отключив лишние сайты и почистив их данные.
Типичные проблемы
Распаковка обрывается на середине без ошибки.
Процессу не хватило времени или памяти на большой архив копии. Пределы PHP поднимают на время разворота и возвращают обратно после.
Скрипт восстановления жалуется на непустой корень.
В папке остались файлы от прежней установки сайта. Разворот делают в пустой корень, иначе два проекта смешиваются в одном.
Тестовый сайт правит рабочие данные.
Настройки подключения приехали из копии и указывают на прежнюю базу. Их проверяют сразу после разворота копии, ещё до первого захода в административную часть.
После восстановления видны старые страницы.
Кэш и композитные страницы развернулись вместе с копией сайта. Их чистят до первой проверки сайта, иначе в браузере видны страницы прежней площадки.
С тестовой копии ушли письма покупателям.
Почтовые события и обмен на копии остались включёнными. Их отключают до первого захода на восстановленный сайт и первого запуска агентов.
Частые вопросы
Можно ли развернуть копию вручную, без скрипта?
Да: распаковать архив и залить базу из выгрузки. Тогда настройки подключения и адрес сайта правят руками.
Что делать, если копия больше диска?
Разворачивать на площадке с запасом или разбирать архив по частям. Распаковка требует места и под архив, и под файлы.
Как проверить, что восстановление удалось?
Зайти в административную часть, открыть каталог и посмотреть последние заказы. Открывшаяся главная страница ещё ничего не доказывает.
Переносится ли лицензия вместе с копией?
Ключ приезжает в копии, но на второй площадке он работает в режиме разработки. Для боевого сайта нужен свой ключ.
Смежное
-
Резервные копии и перенос сайта - оглавление подтемы
-
Резервное копирование: расписание, состав, хранение и проверка - откуда берётся сама копия
-
Перенос сайта на другой сервер: через восстановление и вручную - переезд на новую площадку
-
Не создаётся резервная копия: причины по убыванию частоты - когда копия не снимается
-
Инфраструктура и хостинг - устройство площадки целиком
-
Сайт взломан: признаки, разбор и порядок действий - разбор причины до восстановления
-
Чистка сайта после взлома: порядок работ и возврат в строй - когда копию выбирают по дате
-
Переезд крупного магазина: окно простоя, два прохода, откат - когда штатная копия не собирается
-
Восстановление из копии не проходит: разбор причин - если восстановление обрывается на середине