Хочу рассказать о том, что изменилось в системе резервного копирования 12.0. Улучшена архитектура, оптимизированы алгоритмы, добавлены фичи. Всё это не очевидно для пользователя. Но могу сказать, что это самое значимое обновление резервного копирования с момента его появления в 5-й версии. Помимо новых суперских фич мы изменили концепцию.
[spoiler]
До сих пор мы предлагали своего рода конструктор бэкапа, который позволял при уверенном знании архитектуры битрикса получать разные формы бэкапа для различных узкоспециализированных задач. Но для простого пользователя это часто приводило к проблемам выбора правильных настроек.
Мы поставили себе задачу и решили её: сделать бэкап одной кнопкой. Я, как пользователь, могу не знать, что такое маски исключения, дамп базы данных и шаред хостинг, мне просто нужно сохранить мои данные. Пожалуйста.
При этом вся гибкость настройки осталась, но теперь она не будет путать обычного пользователя:
Ну хорошо, теперь бэкапы может создать секретарша. Но знает ли она, что небезопасно хранить их на том же диске? Что это может защитить только от человеческой ошибки, а не сбоя оборудования. Вряд ли.
Возможность создавать резервные копии в облачные хранилища появилась в прошлой версии, но попросите секретаршу получить аккаунт в амазоне, потом завести бакет и зарегистрировать токены. С первого раза может не получиться
Тогда мы сказали себе, что надо чтобы любой пользователь мог создать полноценный бэкап и был спокоен за свои данные.
Так появился облачный бэкап 1С-Битрикс
Нам потребовалось создать действительно сложное технологическое решение чтобы это было просто для пользователя. Задачи, которые мы решили для этого:
- человек должен быть спокоен, что случайные люди не получат бэкап по прямой ссылке (помним про мегафон),
- сотрудники 1С-Битрикс не должны иметь доступ к пользовательским данным,
- создание бэкапа должно быть действительно простым, без сложных процедур активаций, заполнения форм и пр.
- увольнение администратора сайта не должно создавать дополнительные трудности,
- старый администратор (или разработчик) не должен иметь доступ к свежим бэкапам,
- восстановление из бэкапа должно быть возможно на новом месте без каких-то затруднений.
Это вообще возможно?
Нет, сказали разработчики Сергею Рыжикову, но если создать небольшие затруднения, то можно... Нет, сказал Сергей Рыжиков, подумайте... Через несколько итераций появилось решение
С самого начала было ясно, что нужно научиться шифровать бэкапы. При этом сохранить пошаговость, скорость, возможность сжатия. Потребовалось серьезно оптимизировать алгоритмы работы с файлами. В результате теперь зашифрованный бэкап создается в 2 раза быстрее (!), чем раньше незашифрованный. Требуется php модуль MCrypt.
Теперь вопрос: как не дать получить архив (чтобы избежать возможность брутфорса), не зная его пароль? Нужно хранить пароль пользователя. Но нельзя, все шифрование должно без нашего участия проходить на стороне пользователя. Тогда мы решили следующее: при создании бэкапа на наш сервер передается хеш пароля пользователя, который позволяет проверить корректность пароля, но не дает возможности распаковать архив.
При этом список резервных копий привязывается к лицензионному ключу (для многосайтовой установки облачное хранилище будет общее). А вот задачка: если временный разработчик утянул ключ, он не должен иметь возможность переполнить хранилище этого ключа. Мы решили этот вопрос используя алгоритм системы обновлений: записывать резервные копии можно только с оригинально установки (но допускается еще одна копия для разработки). Повторный ввод ключа блокирует запись бэкапа.
Резюмирую сказанное
Бэкап в облако 1С-Битрикс создается на основе лицензионного ключа (он должен быть активен) и пароля пользователя.
Для восстановления из бэкапа нужно ввести ключ и пароль этого конкретного бэкапа (для каждой резервной копии можно задать свой пароль).
Пароль шифрования бэкапа никуда не уходит с сервера, где работает сайт. Таким образом, без знания этого пароля восстановить бэкап не удастся.
Для проверки стойктости шифрования мы сделали скрипт перебора паролей. На современной офисной машине перебирается порядка 10 000 паролей в секунду. Т.е. пароль из 6 знаков, состоящий только из цифр, подбирается влёт. Но если добавить хотя бы один знак препинания, то перебор займет несколько недель в многопоточном режиме.
Пароль более 8 символов со знаками препинания будет подбираться годами.
Кроме перечисленного был сделан ряд изменений, усиливающих безопасность и стабильность системы бэкапов.
При восстановлении вводим ключ, выбираем архив, вводим его пароль и "откидываемся на спинку кресла"
Очень скоро
Есть прототип, который позволит создавать бэкапы из консоли (с использованием cron) и отправлять их в облака. Вы получите возможность автоматического создания бэкапов, полностью совместимых с restore.php.
На этапе тестирования мы сформировали ряд пожеланий, которые сделают процесс создания бэкапов еще понятнее, проще и нагляднее, будем внедрять.
И 7zip теперь не попользуешь, чтобы достать файлы из архива?
Но вот что изменилось с точки зрения многосайтовости?
Бекап многосайтовых систем отнюдь не интересное и увлекательное занятие.
Даже на двух сайтах.
Можно ли будет одной кнопкой забекапить все сайты?
В том числе и по версии когда сайты обрабатываются разными веб-серверами.
Для каждого сайта архивировать публичную часть не удобно (когда сайтов много).
Денис, а как из облака теперь восстанавливать?
Тот же restore.php ?
2) Интересно, на новой сборке (с тем же ключом) проканает...
Мне интересно просто, предел есть?
Что касается размера в облаке Битрикс, пока это 5Гб, но для разных редакций будет отличаться, ещё обсуждается.
сайт на Старте с обьемом больше 5GB останется без возможности бекапа?
1. Бекапом не пользуются не только секретарши, но даже продвинутые сотрудники клиента. Это все-таки больше для нас, для тех кто разрабатывает и поддерживает. На десятках проектах, что в поле зрения - такая ситуация. Коллеги, а как у вас?
2. Раз пароль так чувствителен к сложности, может его проверять при вводе и давать оценку?
3. Бекап по крону - очень ждем
4. Хорошо бы иметь галку "Удалять из облака бекапы старше ... дней" - защита от переполнения. Или "Хранить .. последних бекапа"
5. В бете как-то не очень пока работает и неочевидный индикатор прогресса. Надеюсь, в стабильной версии все будет нормально
6. Есть хотелка восстанавливать не все скопом, а отдельные сущности - только базу, конкретную папку, конкретный файл. Так сделано на таймвебе, например. Очень удобно: убили шаблон при редактировании - откатили, потерлись картинки при выгрузке 1С в аплоаде - вернули
7. К предыдущему пункту: было бы здорово иметь возможность восстанавливать в текущий сайт одной кнопкой. Или как быстрее и проще всего восстановить сайт?
8. Частая ситуация в магазинах и коммерческих проектах: надо откатить бекап, но за день появились новые заказы и клиенты. Можно откатить хитро, сохранив новые данные в системе?
9. было бы здорово иметь возможность запустить бекап и уйти со страницы, а потом получить уведомление на почту "Бекап создан, проверен, дата, размер... . Место в облаке ... Старый бекап удале ... Всего бекапов в облаке ..."
Уф, не думал, что столько всего напишу, но сегодня у меня как раз день бекапов
2. Сейчас есть ограничение на длину пароля, мы планируем в ядро включить методы проверки на взломоустойчивость, потом будет для бэкапов.
3. Будет.
4. В облаке будет храниться только 3 бэкапа, остальные будут удаляться автоматически.
5. Будет.
6. Есть что-то похожее в планах, но не в ближайших.
7. Правой кнопкой на файле : "восстановить"8. Это влечет потенциальные проблемы рассогласования структуры базы и файлов. Только руками под свою ответственность.
9. По сути, это задача №3.
Иногда проект проходит какие-то ключевые вехи и хочется оставить бекапы таких исторически важных точек. Облако - самое подходящее место для хранения такого рода мусора.
Было бы идеально иметь возможность поставить метку "этот бекап мне очень важен - не удаляйте его пожалуйста, удаляйте более новый, если необходимо"
Ведь, это делается не часто, а восстанавливать может не потребоваться никогда.
Такие вехи гораздо важнее предохранить от смены администраторов, чем обычный регулярный бекап.
Также, возможно, неплохо бы придумать какой-нибудь API с помощью которого партнерские модули модули могли сообщать системе, что бэкапить, а что нет.
Если вы себя чувствуете настолько уверенно, что можете отдельно оперировать таблицами продукта, то не должно быть проблем с использованием mysqldump.
Тоже выскажу пожелания за продвинутый бекам многосайтовых систем и cron
Действуют партнерские скидки
Скажите, Денис, в версии 12.0.3 облачный бэкап ещё не работает или где искать причину?
Вроде бы здесь все проще - не куда, а опция "в облаке "1С-Битрикс" неактивна (доступно лишь в папке сайта, как и раньше)?
Планируется только ручное создание или по расписанию тоже будет?
Условия такие:
- активный коммерческий лицензионный ключ,
- установлен модуль clouds,
- установлен модуль bitrixcloud,
- доступен php модуль mcrypt (иначе отобразится соотв. ошибка).
Если при выполнении этих условий бэкап не работает, пожалуйста, пишите в техподдержку.
Возможность создавать автоматически бэкап локально и в облако будет в одном из ближайших обновлений.
Все заработало. Действительно, забыл про модуль clouds.
При создании резервной копии в облако "1С-Битрикс" почему-то автоматом создаётся и локальная копия. Удалил локальную копию, запустил резервное копирование в облако ещё раз - в облаке ничего не обновилось, зато пересоздалась локальная резервная копия...
вот "в облако" на КП только пока не работает(
И что делать если есть бэкап, а номер лицензионного ключа не изместен? Теперь такой бэкап нельзя развернуть? Я например после установки ключа его нигде не сохранял и при необходимости смотрел в админке сайта. А заказчик как правило вообще не знает, что такое ключ . Не возникнут ли с этим проблемы?
Распакуйте бэкап на тестовой виртуальной машине и вытащите нужный файл, эта операция не должна быть востребована регулярно.
Лицензионный ключ нужен только чтобы скачать бэкап с облака, а пароль от бэкапа нужно помнить, без этого его никак не восстановить.
и при этом например наличие лицензий на дополнительные сайты вообще не играет никакой роль
также - сказано "записывать резервные копии можно только с оригинальной установки (но допускается еще одна копия для разработки). Повторный ввод ключа блокирует запись бэкапа. " - после восстановления в другом месте(и rm -rf * на старом) - это другое место считается оригинальной установкой?
Нужно как минимум 5 ГБ, все таки это интернет-магазин с кучей картинок
на 788мб выдается ошибка:
"Service Temporarily Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later."
Ответ Хостинга на этот вопрос:
"Ответ 503 (Service Temporarily Unavailable) возникает при превышении сайтом установленных лимитов на использование ресурсов сервера.
В вашем случае превышение происходит по количеству дисковых операций чтения/записи (IO).
Рекомендация:
Снизить нагрузку на диск, либо сменить тариф на профессиональный, где ограничений на количество дисковых операций нет."
Менять тариф на другой достаточно накладно (тариф высокий) + с почтой вопросы станут.. там переезд серьезный.
Написали, что поправив скрипт, можно снизить нагрузку. Поправите?
Или еще какой способ есть закачки? Может на части разбить архив. по 500мб например, так закачается.
Как решить?
Как сделать так, что картинки и другие файлы сохранялись только на сервере, а по расписанию делалось резервное копирование в облако Amazon S3?