10 вещей, которые необходимо помнить о MySql бэкапах.
1. Пользуйтесь горячими бэкапами
Горячие бэкапы, отличный способ хранить информацию. Снимать и восстанавливать информацию с помощью них довольно быстро. Percona xtrabackup утилита для снятия горячих бэкапов. Так же её можно использовать для очень быстрого поднятия нового слейва.
2. Используйте обыкновенные бэкапы
Только потому что, xtrabackup очень хороший и удобный, не значит, что про mysqldump можно забыть. Он пригодиться когда нужно поднять только одну схему из бэкапов или только определенную таблицу.
Со всеми этими задачами mysqlbackup справляется отлично. Если использовать бэкапы mysqldump в тандеме с xtrabackup это даст более гибкую систему восстановления информации.
3. Реплика это не бэкап
Многие думают, что 1 дополнительная реплика будет служить горячим бэкапом. Но это не так! Почему? Потому что один не осторожный запрос на удаление таблицы отражается сразу на всех репликах. И если это случиться восстанавливать нужно будет только из обыкновенных бэкапов.
4. Тестовые восстановления
Есть только один способ убедиться, что бэкапы содержат всю нужную информацию — попробовать восстановить полностью. Конечно, это утомительно и требует много времени, но оно того стоит. После того как пройлут тестовые восстановления, будет точно известно время которое требуется для восстановления. Также можно будет сказать какая часть работы занимает львиную долю времени. Опираяся на эти данные можно будет попробовать уменьгить время для восстановления соптимизировав алгоритм.
К примеру, если использовать mysqldump возможно потребуется от 20 минут до 8 часов, в зависимости насколько большая база данных.
8 часов часто не приемлемое время для восстановления. Уменьшить время можно попровав разбить большой дапм на несколько маленьких. Или воспользоваться другими утилитами.
5. Логи транзакций
Если может возникнуть вопрос о восстановления базы данных MySql на определенный момент времени, то необходимо также сохранять бинарные логи. В них попадают все успешно выполненные транзакции.
Например, если необходимо восстановить БД на 17. 45, а последний дамп у вас был взят в 11-00. Понадобятся все логи за этот промежуток времени.
6. Бэкапируйте конфиги
Не забывайте про маленький конфигурационный файл MySql. Он может пригодиться когда конфигурируете новый сервер. Обычно, он не меняется, поэтому сохранять его можно не так часто как делаются основные бэкапы.
7. Сохраняйте процедуры, функции, триггеры, а также права пользователей
Процедуры, функции и триггеры хранятся в схеме mysql. Если восстанавливается только одна база данных, можно не найти кода в новой базе данных. Я предлагаю сохранять код процедур, функций и триггеров в отдельном файле. Mysqldump позволяет делать это, если указать аргумент -routines. Горячие бэкапы снимают все подряд, поэтому с ними проблем быть не должно — все будет восстановлено. К слову, с mysql dump, тоже не будет проблем если вы снимаете бэкап всей БД целиком.
С привилегиями пользователями вы можете не промахнуться, если будете использовать pt-show-grants. Он находиться в свободном доступе Percona. Я рекомендую бэкапировать права пользователей так же часто как вы решите снимать бэкап с кофига MySql.
8. События MySql и задачи по крону
MySql позволяет создавать свои события по расписанию. Вы можете посмотреть их, выполнив следующий код:
SHOW EVENTS; SHOW EVENTS schema_name;
События по крону:
$ crontab -l 9.
Наблюдение за бэкапами
Иногда бэкапы ведут себя очень капризно. Можно даже не заметить, как что-то перестанет сниматься. Досадно, что это можно обнаружить только на момент восстановления. Именно поэтому, я уверен, нужно делать тестовые восстановления. Так же вы можете наблюдать за процессом бэкапов. Использовать, например, err-log для mysqldump. Ещё дополнительно можно проверять размер архива — если он будет меняться более чем на 10% это тревожный сигнал. Если равен нулю, то надо срочно что-то делать.
10. Безопасность
Обычно это проблема упускается из виду. Но может служить причиной неприятных последствий. Особенно если бэкапы хранятся долго. Возможно нужно проконтролировать доступ к бэкапам — дав наименьшие привилегии.