Резервное копирование: нужно ли делать бэкапы, как часто, сценарии использования Александр Демидов «1С-Битрикс» Не забывайте «сохраняться» Исследование Strategic Research Institute 30% предпринимателей после утраты данных прекращают предпринимательскую деятельность в течение года. 60% предпринимателей, потерявших ВСЕ данные, прекращают предпринимательскую деятельность в течение 6 месяцев после этого. Общие принципы Для разных сценариев сбоев – разные бэкапы Нужно бэкапить файлы и базу данных Это нужно делать постоянно, а не перед аварией Нужно бэкапить конфиги и настройки серверов и софта Полезно проводить учения по восстановлению системы Нужно уметь восстанавливаться быстро и уверенно Восстановление можно частично автоматизировать Лишь 1 из 10 сайтов имеет «правильный» бэкап Изолированность Целостность Версионность Безопасность Бэкап базы данных Репликация – не бэкап. Но может выполнить некоторые его функции (например, при использовании pt-slave-delay). Для восстановления целого сервера БД в случае аварии используем образ машин со всеми дисками – делаем целостный бэкап RAID’а, используя файловую систему, поддерживающую freeze и механизм snapshot’ов. Логические (mysqldump) и бинарные инкрементальные (Xtrabackup) бэкапы используются для восстановления отдельных баз или таблиц, поврежденных в случае некорректных операций в системе или ошибок пользователей. Второй тип бэкапов делается на выделенном slave, на который не распределяется общая нагрузка. Тем самым ресурсоемкие операции создания бэкапов не влияют на работу пользователей. Бэкап файлов – традиционно: tar + gz/bz2: Есть везде Элементарный скрипт напишет любой программист Каждый раз полный бэкап, большие объемы Есть псевдо-инкрементальный бэкап. Он неудобный Много мелких файлов - проблемы Если не SSD, то тормозят прочие дисковые операции Достать один файл - распаковывать все Альтернативы rsync csync2 lsyncd rdiff-backup csync2 + inotify + самописные скрипты bacula И т.д. Нюансы *sync* - не бэкапы, в «зеркало» контента Как и в случае с базой, могут использоваться для создания резервных копий (чтобы не делать этого на «бою») inotify Defaults /proc/sys/fs/inotify/max_user_watches 8192 /proc/sys/fs/inotify/max_user_instances 128 /proc/sys/fs/inotify/max_queued_events 16384 Как делать бэкап RAID? Для Amazon EC2 есть удобный механизм snapshot’ов. Как сделать целостный бэкап RAID из нескольких дисков? А лучше – всей машины в целом Используем файловую систему, поддерживающую freeze (xfs, утилита xfs_freeze; или на новых ядрах Linux и ext3/ext4 и механизм fsfreeze). Делаем freeze файловой системы (в случае MySQL правильно предварительно сделать FLUSH TABLES WITH READ LOCK). Делаем снэпшоты всех дисков. «Размораживаем» файловую систему. Для бэкапа файлов – достаточно, но если хотим быстро и удобно переезжать между AZ (Availability Zones), используем более высокий уровень абстракции и оперируем образами целых машин – AMI (Amazon Machine Image). Где хранить бэкап? Облачные хранилища (например, Amazon S3) Доступность – 99.99% Надежность – 99.999999999% ACL Шифрование (server-side, client-side) Версионность Резервирование собственными средствами «Глубина» хранения По одному на день Еженедельный Ежемесячный Дополнительно - Glacier Мониторинг всех процессов бэкапов Лог работы скрипта (>) – обновился за N часов Лог ошибок работы скрипта (2>) – должен быть пуст Как упростить процесс? Безопасность: унести на другой диск, сервер, к другому провайдеру. Раньше для создания резервной копии было нужно: заключить договор с провайдером, настроить, развернуть бэкап. С облачным бэкапом договоров не нужно, настроек не нужно, а бэкап сразу сохраняется в облаке «1СБитрикс». Облачный бэкап Каждому лицензионному ключу бесплатно выделяется место в облаке (в зависимости от редакции). Редакция Место в облаке Старт 500 Мб Стандарт 1 Гб Малый бизнес 2 Гб Эксперт 3 Гб Бизнес 5 Гб Веб-кластер 10 Гб Бизнес веб-кластер 25 Гб Хранение бэкапа в облаке «1С-Битрикс» полностью безопасно. У нас нет доступа к этим данным. Безопасность в облаке Облако 1С-Битрикс Пароль архива Шифрование blowfish Бэкап restore.php Как настроить автоматический бэкап Если сайт работает на собственном окружении Настроить выполнение агентов на cron, запуская каждую минуту /bitrix/modules/main/tools/cron_events.php ИЛИ Поставить на нужное время задачу на cron на запуск /bitrix/modules/main/tools/backup.php Как работает автоматический бэкап cron почта агенты cron_events.php время X backup.php Если обновлены до 14 версии Облако 1С-Битрикс Независимость от провайдера сайт легко перенести Надежность данные многократно резервируются в облаке Доступность в любом месте можете развернуть бэкап Простота не требуется заключать договор с провайдером, не требуется настройка Безопасность ваши данные шифруются, даже сотрудники 1С-Битрикс не имеют к ним доступа Бэкап настроек и конфигурации системного ПО Система контроля версий etckeeper Образы машин с «чистой» конфигурацией RPM-пакеты Chef и т.п. Резюме Имея правильно спроектированную систему резервного копирования, а также отлаженные процессы работы с резервными копиями, можно быстро восстановить работоспособность проекта или отдельных его элементов, даже в случае критических сбоев, в том числе с потерей данных. Спасибо за внимание! Вопросы? Александр Демидов [email protected] +7-926-521-3700 @demidov http://www.1c-bitrix.ru