Организация резервного копирования сложных интернет магазинов Евгений Потапов ITSumma Евгений Потапов ITSumma.ru, генеральный директор Круглоcуточное удаленное администрирование серверов и техническая поддержка сайтов 100 миллионов уникальных посетителей в сутки на поддерживаемых сайтах на поддержке Работаем с 2008 года Офисы в Иркутске, СанктПетербурге и Москве 150+ клиентов на круглосуточной поддержке 90ТБ резервных копий 5 оповещений о «сломавшихся» бэкапов в сутки Содержание • Что такое надежный бэкап? • С какими проблемами можно столкнуться? • Как правильно делать бэкапы? • Как правильно проверять бэкапы? • Disclaimer: говорим LA(N)MP Критерии надежности бэкапа • Бэкап создается, туда входит все необходимое • Из бэкапа можно восстановиться в приемлемое время • При восстановлении из бэкапа данные сохраняют свою актуальность • Из бэкапа можно восстановиться в случае аварии сервера/датацентра «Да чему там ломаться?» Где можно ошибиться - БД • Процесс дампа базы не запускается Где можно ошибиться - БД • Процесс дампа базы не запускается • Дамп базы данных копирует не ту базу данных Где можно ошибиться - БД • Процесс дампа базы не запускается • Дамп базы данных копирует не ту базу данных • Во время резервного копирования заканчивается место на диске Где можно ошибиться - БД • Процесс дампа базы не запускается • Дамп базы данных копирует не ту базу данных • Во время резервного копирования заканчивается место на диске • Дамп базы данных делается с неработающего слейва Где можно ошибиться - БД • Процесс дампа базы не запускается • Дамп базы данных копирует не ту базу данных • Во время резервного копирования заканчивается место на диске • Дамп базы данных делается с неработающего резерва • Дамп базы данных делается реже чем необходимо Где можно ошибиться - БД • Процесс дампа базы не запускается • Дамп базы данных копирует не ту базу данных • Во время резервного копирования заканчивается место на диске • Дамп базы данных делается с неработающего резерва • Дамп базы данных делается реже чем необходимо • Дамп базы данных сохраняется только на том же сервере Где можно ошибиться - БД • Процесс дампа базы не запускается • Дамп базы данных копирует не ту базу данных • Во время резервного копирования заканчивается место на диске • Дамп базы данных делается с неработающего резерва • Дамп базы данных делается реже чем необходимо • Дамп базы данных сохраняется только на том же сервере • Дамп базы данных делается «хитрым» способом и невосстановим Где можно ошибиться - статика • Статические файлы вообще не копируются Где можно ошибиться - статика • Статические файлы вообще не копируются • Статика копируется без карточек товара Где можно ошибиться - статика • Статические файлы вообще не копируются • Статика копируется без карточек товара • Статика запаковывается в архив Где можно ошибиться - статика • Статические файлы вообще не копируются • Статика копируется без карточек товара • Статика запаковывается в архив • Все складывается на тот же сервер Где можно ошибиться - конфигурация • «Конфиги» не бэкапируются Как сделать правильно? • Осознание и постановка требований • Правильное копирование • Регулярная проверка работоспособности • Проверка восстановления Как сделать правильно? – постановка требований • Насколько актуальными будут данные при восстановлении на заданный момент времени? Как сделать правильно? – постановка требований • Насколько актуальными будут данные при восстановлении на заданный момент времени? • Как долго займет процесс восстановления базы? Статики? Сервера целиком? Как сделать правильно? – постановка требований • Насколько актуальными будут данные при восстановлении на заданный момент времени? • Как долго займет процесс восстановления базы? Статики? Сервера целиком? • Где хранятся бэкапы? Насколько эта площадка не связана с основной? Как сделать правильно? – бэкап MySQL • Mysqldump – долгая, блокирующая процедура с долгим полным восстановлением. Как сделать правильно? – бэкап MySQL • Mysqldump – долгая, блокирующая процедура с долгим полным восстановлением. • Применяем Xtrabackup для создания полных копий (отдельные таблицы восстановить можно, но сложнее) http://www.itsumma.ru/blog/1/ Как сделать правильно? – бэкап MySQL • Mysqldump – долгая, блокирующая процедура с долгим полным восстановлением. • Применяем Xtrabackup для создания полных копий (отдельные таблицы восстановить можно, но сложнее) http://www.itsumma.ru/blog/1/ • Сервер с отложенной репликацией для защиты от человеческого фактора (pt-slave-delay или CHANGE MASTER TO MASTER_DELAY) Как сделать правильно? – бэкап MySQL • Mysqldump – долгая, блокирующая процедура с долгим полным восстановлением. • Применяем Xtrabackup для создания полных копий (отдельные таблицы восстановить можно, но сложнее) http://www.itsumma.ru/blog/1/ • Сервер с отложенной репликацией для защиты от человеческого фактора (pt-slave-delay или CHANGE MASTER TO MASTER_DELAY) • Репликация и резервирование binlog-ов (с помощью mysqlbinlog https://www.percona.com/blog/2012/01/18/backing-up-binary-logfiles-with-mysqlbinlog/) Как сделать правильно? – статика • Нефатальное количество файлов – архивация и копирование Как сделать правильно? – статика • Нефатальное количество файлов – архивация и копирование • Не хватает места, много данных – tar + stream tar czhf - /home/bitrix/www/ —exclude=bitrix/managed_cache — exclude=bitrix/stack_cache —exclude=bitrix/cache | ssh $SSH "cat -> ${RPATH}/${FN}" \; »$LOG 2>&1 || die_if_tar_failed files_tar Как сделать правильно? – статика • Нефатальное количество файлов – архивация и копирование • Не хватает места, много данных – tar + stream tar czhf - /home/bitrix/www/ —exclude=bitrix/managed_cache — exclude=bitrix/stack_cache —exclude=bitrix/cache | ssh $SSH "cat -> ${RPATH}/${FN}" \; »$LOG 2>&1 || die_if_tar_failed files_tar • Большой объем данных – rsync на бэкапный сервер (без delete) Как сделать правильно? – статика • Нефатальное количество файлов – архивация и копирование • Не хватает места, много данных – tar + stream tar czhf - /home/bitrix/www/ —exclude=bitrix/managed_cache — exclude=bitrix/stack_cache —exclude=bitrix/cache | ssh $SSH "cat -> ${RPATH}/${FN}" \; »$LOG 2>&1 || die_if_tar_failed files_tar • Большой объем данных – rsync на бэкапный сервер (без delete) • Есть резерв – lsyncd на резервный сервер без delete Как сделать правильно? – конфиги • git autocommit /etc директории Как сделать правильно? – конфиги • git autocommit /etc директории • составляем список всего что надо бэкапить (кроны, конфиги) и бэкапим Как сделать правильно? – конфиги • git autocommit /etc директории • составляем список всего что надо бэкапить (кроны, конфиги) и бэкапим • Совсем по хорошему – управление конфигурацией Как сделать правильно? – конфиги • git autocommit /etc директории • составляем список всего что надо бэкапить (кроны, конфиги) и бэкапим • Совсем по хорошему – управление конфигурацией Как сделать правильно? – мониторинг • Бэкап ломается раз в 29 дней. Если вы его не проверяли - весьма вероятно что он уже сломан. Как сделать правильно? – мониторинг • Бэкап ломается раз в 29 дней. Если вы его не проверяли - весьма вероятно что он уже сломан. • Мониторим сервер во время создания бэкапа (место на диске, доступность сайта) Как сделать правильно? – мониторинг • Бэкап ломается раз в 29 дней. Если вы его не проверяли - весьма вероятно что он уже сломан. • Мониторим сервер во время создания бэкапа (место на диске, доступность сайта) • Мониторим вывод логов бэкапных скриптов (innobackupex: completed OK!) Как сделать правильно? – мониторинг • Бэкап ломается раз в 29 дней. Если вы его не проверяли - весьма вероятно что он уже сломан. • Мониторим сервер во время создания бэкапа (место на диске, доступность сайта) • Мониторим вывод логов бэкапных скриптов (innobackupex: completed OK!) • Мониторим размер залитых бэкапов (слишком маленькие – алерт) Как сделать правильно? – мониторинг • Бэкап ломается раз в 29 дней. Если вы его не проверяли - весьма вероятно что он уже сломан. • Мониторим сервер во время создания бэкапа (место на диске, доступность сайта) • Мониторим вывод логов бэкапных скриптов (innobackupex: completed OK!) • Мониторим размер залитых бэкапов (слишком маленькие – алерт) • Мониторим изменение размера залитых бэкапов (не меняется – алерт) Как сделать правильно? – мониторинг • Бэкап ломается раз в 29 дней. Если вы его не проверяли - весьма вероятно что он уже сломан. • Мониторим сервер во время создания бэкапа (место на диске, доступность сайта) • Мониторим вывод логов бэкапных скриптов (innobackupex: completed OK!) • Мониторим размер залитых бэкапов (слишком маленькие – алерт) • Мониторим изменение размера залитых бэкапов (не меняется – алерт) • Мониторим последнюю дату залитых бэкапов (не было больше суток – алерт) Как сделать правильно? – мониторинг • Бэкап ломается раз в 29 дней. Если вы его не проверяли - весьма вероятно что он уже сломан. • Мониторим сервер во время создания бэкапа (место на диске, доступность сайта) • Мониторим вывод логов бэкапных скриптов (innobackupex: completed OK!) • Мониторим размер залитых бэкапов (слишком маленькие – алерт) • Мониторим изменение размера залитых бэкапов (не меняется – алерт) • Мониторим последнюю дату залитых бэкапов (не было больше суток – алерт) Как сделать правильно? – контроль • Не верим роботам Как сделать правильно? – контроль • Не верим роботам • Проверка возможности распаковать архив Как сделать правильно? – контроль • Не верим роботам • Проверка возможности распаковать архив • Проверка времени распаковки Как сделать правильно? – контроль • Не верим роботам • Проверка возможности распаковать архив • Проверка времени распаковки • Проверка того что в бэкап входит все что нужно Как сделать правильно? – контроль • Не верим роботам • Проверка возможности распаковать архив • Проверка времени распаковки • Проверка того что в бэкап входит все что нужно • Попытка поднять БД Как сделать правильно? – контроль • Не верим роботам • Проверка возможности распаковать архив • Проверка времени распаковки • Проверка того что в бэкап входит все что нужно • Попытка поднять БД • Попытка поднять сайт Как сделать правильно? – bonus track • Не проверенный бэкап – не бэкап Как сделать правильно? – bonus track • Не проверенный бэкап – не бэкап • Реплика – не бэкап Как сделать правильно? – bonus track • Не проверенный бэкап – не бэкап • Реплика – не бэкап • Сделать правильно на старте проще чем сделать правильно потом Как сделать правильно? – bonus track • Не проверенный бэкап – не бэкап • Реплика – не бэкап • Сделать правильно на старте проще чем сделать правильно потом • Все равно очень страшно Евгений Потапов http://facebook.com/eapotapov eapotapov@itsumma.ru http://itsumma.ru