Назад | Перейти на главную страницу

Советы по резервному копированию сервера ubuntu

У меня есть сервер Ubuntu, на котором размещено веб-приложение PHP5 / MySQL. У меня также есть другой сервер (внешний) с каталогом только для резервных копий моего сервера веб-приложений. В настоящее время у меня есть простая задача cron, которая выполняет следующее:

  1. Копирует / var / www в локальный резервный каталог. Команда: cp -ua /var/www /backup/www
  2. Выполняет mysqldump информационной_схемы и базы данных моего приложения и копирует эти файлы в локальный каталог резервных копий.
  3. Устанавливает сервер резервного копирования как том sshfs.
  4. Копирует все файлы из локального каталога резервных копий на том sshfs.

Вопросы:

  1. Это эффективное решение или специальная программа резервного копирования будет работать лучше / быстрее?
  2. Я покрываю все, что мне нужно? Например: есть ли файлы конфигурации, которые я тоже должен сделать резервную копию (PHP, Apache2, MySQL)?
  3. Что бы вы порекомендовали, если есть специальная программа резервного копирования, которая лучше удовлетворяет мои потребности?

Спасибо за любой совет

Я бы порекомендовал что-то, что может делать инкрементное резервное копирование, потому что таким образом вы можете вернуться к файлам, которые были изменены несколько дней назад. Мы используем грязный для этого (он доступен в репозиториях ubuntu) - в основном это оболочка для rsync, написанная на Perl, которая упрощает настройку системы для запуска регулярных инкрементных резервных копий, а затем истекает их срок в соответствии с заданными правилами.

В нашей системе мы храним резервные копии в течение 7 дней, но храним первую резервную копию недели в течение 1 месяца и первую резервную копию месяца в течение одного года, поэтому обычно вы можете найти файлы, которые были изменены и удалены некоторое время назад. Для небольших, но важных вещей срок годности намного больше.

Что касается того, что вы должны резервировать, я думаю, если у вас есть место, сделайте резервную копию всего, если вы не уверены, что вам не нужно создавать резервную копию. С помощью инкрементных резервных копий rsync вы копируете только те файлы, которые изменились с момента последнего резервного копирования - я бы предпочел иметь дополнительные 3 ГБ статических данных, принадлежащих операционной системе, на моем резервном диске, чем обнаружил, что отсутствует один важный файл, когда я нужно было его восстановить.

Как минимум, я бы сделал резервную копию всего содержимого / etc / и большей части / var в зависимости от того, что было запущено на сервере.

Если ваша база данных mysql довольно мала, то ваш текущий подход, вероятно, приемлем, но, поскольку вам нужно заблокировать базу данных для создания дампа, это нецелесообразно для больших баз данных. Из-за этого многие люди запускают подчиненный сервер mysql, который является копией только для чтения основного сервера на резервном сервере, и используют его для создания резервных копий.

В документация mysql о том, как это сделать, довольно хорошо, я работал над этим в первый раз за вечер, без особого опыта работы с mysql.

У нас есть подчиненный сервер mysql, привязанный к dirvish, поэтому каждый день он генерирует дамп каждой отдельной базы данных, а также полную копию / var / lib / mysql (перед этим он останавливает сервер mysql)

Видеть удобный и простой способ резервного копирования mySQL и SVN на машине Ubuntu, что в значительной степени резюмирует то, что вам нужно.

Коротко;

  • Есть несколько стандартных пакетов; У меня был хороший опыт с backupninja и rdiff-backup. Посмотрите, что доступно, что соответствует вашим потребностям, и выберите это.
  • Вы должны сохранить резервную копию /etc/ (конфигурация сервера), все ваши веб-материалы, RCS-данные, база данных. Я обычно копирую и домашние каталоги, потому что у меня обычно есть куча хороших небольших скриптов, которые действительно больше нигде не подходят, и если мне нужно восстановить сервер, действительно хорошо иметь «известную» настройку оболочки, предпочтительный редактор и т. д.
  • Пока вы делаете это, спланируйте - по крайней мере, в уме - «что мне делать, когда дела идут плохо?» (т.е. знать, что находится в вашей резервной копии и как восстановить из нее.)

У меня есть резервные копии моих серверов, все, что мне нужно, зарезервировано в tar, а затем оно копируется во внешнюю резервную копию. сценарий также удалит резервные копии за 7 дней назад. Я забыл, где нашел, но не писал.

!/bin/bash
# fecha has a formated date
fecha=`date +"%d-%m-%Y"`
# Backup and gzip the directory
sudo tar cvzpf /backups/backup-$fecha.tgz --same-owner  --exclude="/export/*" --exclude="/backups/*" --exclude="/home/error.log" --exclude="/proc/*" --exclude="/media/*" --exclude="/dev/*" --exclude="/mnt/*" --exclude="/sys/*" --exclude="/tmp/*" / 2>/home/error.log
# Rotate the logs, delete older than 7 days
find /backups/ -mtime +7 -exec rm {} \;