Евгений Потапов ITSumma.ru, генеральный директор

advertisement
Организация резервного
копирования сложных
интернет магазинов
Евгений Потапов
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
Download