Организация системы резервного копирования Александр Демидов «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% Надежность – % ACL Шифрование (server-side, client-side) Версионность Резервирование собственными средствами
«Глубина» хранения По одному на день Еженедельный Ежемесячный
Дополнительно - Glacier
Мониторинг всех процессов бэкапов Лог работы скрипта (>) – обновился за N часов Лог ошибок работы скрипта (2>) – должен быть пуст
Как упростить процесс? Безопасность: унести на другой диск, сервер, к другому провайдеру. Раньше для создания резервной копии было нужно: заключить договор с провайдером, настроить, развернуть бэкап. С облачным бэкапом договоров не нужно, настроек не нужно, а бэкап сразу сохраняется в облаке «1С- Битрикс».
Облачный бэкап Каждому лицензионному ключу бесплатно выделяется место в облаке (в зависимости от редакции). РедакцияМесто в облаке Старт500 Мб Стандарт1 Гб Малый бизнес2 Гб Эксперт3 Гб Бизнес5 Гб Веб-кластер10 Гб Бизнес веб-кластер25 Гб Хранение бэкапа в облаке «1С-Битрикс» полностью безопасно. У нас нет доступа к этим данным.
Шифрование blowfish Безопасность в облаке Бэкап Облако 1С-Битрикс restore.php Пароль архива
Как настроить автоматический бэкап Если сайт работает на собственном окружении Настроить выполнение агентов на cron, запуская каждую минуту /bitrix/modules/main/tools/cron_events.php Поставить на нужное время задачу на cron на запуск /bitrix/modules/main/tools/backup.php ИЛИ
Как работает автоматический бэкап агенты cron cron_events.php время X почта backup.php
Независимость от провайдера сайт легко перенести Надежность данные многократно резервируются в облаке Доступность в любом месте можете развернуть бэкап Простота не требуется заключать договор с провайдером, не требуется настройка Безопасность ваши данные шифруются, даже сотрудники 1С-Битрикс не имеют к ним доступа Облако 1С-Битрикс
Бэкап настроек и конфигурации системного ПО Система контроля версий etckeeper Образы машин с «чистой» конфигурацией RPM-пакеты Chef и т.п.
Резюме Имея правильно спроектированную систему резервного копирования, а также отлаженные процессы работы с резервными копиями, можно быстро восстановить работоспособность проекта или отдельных его элементов, даже в случае критических сбоев, в том числе с потерей данных.
Спасибо за внимание! Вопросы? Александр Демидов