Как известно, люди делятся на тех кто еще не делает резервных копий, тех кто уже делает, и тех кто уже делает и проверяет возможность восстановления
К счастью, 20 минут назад, когда кривойадмин рецепт Capistrano напрочь снес на «боевом» сервере каталог с загруженными картинками из статей юзеров, я уже относился к категории делающих бэкапы. Вот, заодно и проверил.
А делаем мы резервные копии через gem backup
У нас на облачном хостинге на нескольких серверах сейчас крутится порядка 20 пользовательских сайтов, которые мы же и разработали плюс одно маленькое, но гордое (и тяжелое) приложение с VoIP, RTMP, J2MEи гейшами и веб-админкой. Когда несколько месяцев назад админ при обновлении затер конфиги Asterisk PBX и потом с трясущимся подбородком и синими губами восстанавливал их из запущенного демона, стало ясно — без бэкапов дальше слишком опасно. Но делать бэкапы «в лоб» для 20 приложений, каждое из которых использовало свою базу в MySQL со своими логинами и паролями было слишком неинтересно и скучно. Это был бы длинный-длинный баш скрипт, на который бы сразу же после успешного запуска забили бы пришлось бы тратить много времени чтобы поддерживать актуальность этого скрипта.
Вот тут нам и пригодился гем backup.
Гем backup делает вот что:
Надо всего лишь сделать три простые вещи:
1. Поставить гем (gem install backup)
2. Написать конфиг (по умолчанию исполняемый файл гема ищет конфиг в каталоге ~/Backup/config.rb, можно это изменить дополнительными опциями). Пример конфига для одного из наших сайтов:
Этот конфиг говорит гему, что надо взять дамп базы wwwkodepru_production, сдампить во временный каталог, взять каталог, где лежит сайт, все это заархивировать, положить через SCP на сервер бэкапов, убедившись что хранится не более 14 последних бэкапов и отправить радостное сообщение админу.
3. Записать в крон запуск команды backup perform --trigger kodepru скажем в полночь.
…
PROFIT!!!
Естественно, мы не пишем этот конфиг суровой админской рукой! Есть специальная панелька, написаннаяна коленке на рельсах.
Кстати, что-то говорит мне что не только Rails приложения состоят из каталога с кодом и базы…
Надеюсь, кому-то будет интересно, а я, пожалуй, буду продолжать писать про наши нехитрые приемчики.
К счастью, 20 минут назад, когда кривой
А делаем мы резервные копии через gem backup
У нас на облачном хостинге на нескольких серверах сейчас крутится порядка 20 пользовательских сайтов, которые мы же и разработали плюс одно маленькое, но гордое (и тяжелое) приложение с VoIP, RTMP, J2ME
Вот тут нам и пригодился гем backup.
Гем backup делает вот что:
- читает свой конфиг
- дампит указанные базы (поддерживаются разные СУБД) во временный каталог
- тарит указанные каталоги во временный каталог
- жмет все
- шифрует все
- кладет на удаленный сервер по FTP, SCP, RSync и другие
- поддерживает цикличность в месте хранения
- пишет мне письмо
Надо всего лишь сделать три простые вещи:
1. Поставить гем (gem install backup)
2. Написать конфиг (по умолчанию исполняемый файл гема ищет конфиг в каталоге ~/Backup/config.rb, можно это изменить дополнительными опциями). Пример конфига для одного из наших сайтов:
Backup::Model.new(:kodepru, 'kodepru_backup') do
archive :my_archive do |archive|
archive.add '/path/to/dir/www.kodep.ru'
end
database MySQL do |db|
db.name = "wwwkodepru_production"
db.username = "user"
db.password = "password"
db.host = "mysql.local"
db.port = 3306
db.additional_options = ['--quick', '--single-transaction']
end
store_with SCP do |server|
server.username = 'backup'
server.password = 'verydifficultpassword'
server.ip = 'backup.local'
server.port = 22
server.path = '~/www.kodep.ru/'
server.keep = 14
end
compress_with Gzip do |compression|
compression.best = true
compression.fast = false
end
notify_by Mail do |mail|
mail.on_success = true
mail.on_failure = true
mail.from = 'backup@kodep.ru'
mail.to = 'sysadmin@kodep.ru'
mail.address = 'smtp.kodep.ru'
mail.port = 25
mail.domain = 'kodep.ru'
mail.user_name = 'backup@kodep.ru'
mail.password = 'password_ot_pochty'
mail.authentication = 'plain'
mail.enable_starttls_auto = true
end
end
Этот конфиг говорит гему, что надо взять дамп базы wwwkodepru_production, сдампить во временный каталог, взять каталог, где лежит сайт, все это заархивировать, положить через SCP на сервер бэкапов, убедившись что хранится не более 14 последних бэкапов и отправить радостное сообщение админу.
3. Записать в крон запуск команды backup perform --trigger kodepru скажем в полночь.
…
PROFIT!!!
Естественно, мы не пишем этот конфиг суровой админской рукой! Есть специальная панелька, написанная
Кстати, что-то говорит мне что не только Rails приложения состоят из каталога с кодом и базы…
Надеюсь, кому-то будет интересно, а я, пожалуй, буду продолжать писать про наши нехитрые приемчики.