Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Может, там и лучше. Но чтобы там было 100% надежно — не думаю. Проблемы в случае аварий или подстав у вас будут бОльшего калибра, чем в этой стране.
снятие полноценного бекапа с работающего сервера у меня вызывает легкое сомнениеВ принципе, Вы всё понимаете правильно. Дело в том, что под «полноценным бэкапом» в разных случаях понимают разные вещи.
И у вас не возникает бутылочного горлышка, когда несколько скриптов обращаются к одной блокировке?Нет, т.к. это shared lock. На установку блокировки уходит примерно 0.00007 секунды.
Честно говоря, это меня смущает больше всего.При том, что инкрементальный бэкап занимает пару секунд — это не проблема, пользователи даже не успевают заметить момент бэкапа или обновления проекта. При бэкапе, под установленным exclusive lock выполняются только необходимые операции, например для инкрементально бэкапящихся таблиц только запоминается id последней записи. Потом эксклюзивная блокировка снимается, и пока проект продолжает работать как обычно, без спешки завершается процесс бэкапа — делаются инкрементальные дампы таблиц (по запомненный id), файл с бэкапом сжимается и заливается на бэкап-сервер.
Насколько я понимаю, с такими таблицами очень неудобно работать. Вы наверное держите при этом оперативные таблицы с теми же данными, которые не надо бекапить, для удобства извлечения информации?Не совсем так. Простой пример: есть большая таблица с кучей текстовых данных, которые изредка изменяются. Инкрементально бэкапить такую таблицу невозможно. Но можно создать рядом таблицу-справочник, с двумя полями: id и text, перенести в неё все текстовые данные из основной таблицы, а в основной вместо текстовых полей хранить id записей из таблицы-справочника. В таблице-справочнике данные никогда не удаляются и не изменяются, она большая, но её можно инкрементально бэкапить. Основную таблицу инкрементально бэкапить по-прежнему нельзя, но там теперь только id-шки, она стала крохотной и будет моментально бэкапится целиком. Работать с такой таблицей стало немного сложнее из-за лишних join-ов… но ведь это не требуется проделывать со всеми таблицами в проекте, достаточно двух-трёх самых объёмных, которые сильно тормозили бэкап.
Что сделать, чтобы фокусы всяких Макхостов были не страшны?