2009-10-17 2 views
2

Я хочу настроить задание cron для запуска, чтобы оно автоматически создавало резервную копию моей базы данных MySQL, в то время как база данных работает, а затем FTP, что резервное копирование на моем резервном сервере.Как создать задание Cron для резервного копирования резервной копии MySQL и FTP на моем резервном сервере?

Я предполагаю, что могу сделать это, используя скрипт bash.

Кто-нибудь знает, как это сделать?

Заранее спасибо.

+0

Просто нашел следующее, но не знаю, хорошо ли оно работает. Любые комментарии? http://sourceforge.net/projects/automysqlbackup/ – Tedd

+0

InnoDB или MyISAM? –

+0

InnoDB (MySQL v5) – Tedd

ответ

2

Это очень простой подход с использованием командной строки LFTP FTP-клиент:

backup.sh:

mysqldump -f [database] | gzip > /backup/[database].dump.gz 
lftp -f /backup/lftp.script 

lftp.script:

open backup.ftp.example.com 
user [username] [password] 
cd /backup 
mv webflag.dump.gz.8 webflag.dump.gz.9 
mv webflag.dump.gz.7 webflag.dump.gz.8 
mv webflag.dump.gz.6 webflag.dump.gz.7 
mv webflag.dump.gz.5 webflag.dump.gz.6 
mv webflag.dump.gz.4 webflag.dump.gz.5 
mv webflag.dump.gz.3 webflag.dump.gz.4 
mv webflag.dump.gz.2 webflag.dump.gz.3 
mv webflag.dump.gz.1 webflag.dump.gz.2 
mv webflag.dump.gz webflag.dump.gz.1 

Примечание: Этот подход имеет количество вопросов:

  • ftp i s unencryped, поэтому любой, кто способен обнюхать сеть, может видеть как пароль, так и данные базы данных. Проводя его через gpg -e [key], можно использовать для шифрования дампа, но пароли ftp остаются незашифрованными (sftp, scp - лучшие альтернативы)
  • Если кто-то взломает сервер базы данных, он может использовать информацию пользователя в этом скрипте для доступ к серверу передачи файлов и в зависимости от прав удалять резервные копии (это случилось в реальном мире: http://seclists.org/fulldisclosure/2009/Jun/0048.html)
+0

+1 Хотя вам может понадобиться также указать флаги сервера/пользователя/пароля с помощью mysqldump. – Tinister

+3

Вам не следует создавать резервные копии ftp с веб-сервера Live на резервный сервер. Причина: ваш живой веб-сервер очень популярен и, следовательно, является большей целью для получения компрометации. Если это произойдет, вы также потеряете все свои резервные копии. Вместо этого ваш резервный сервер должен ftp в реальном веб-сервере для дампов базы данных и загружать их. Сервер резервного копирования не должен находиться в общедоступной сети, поэтому, даже если кто-то полностью владеет вашим веб-сервером, резервные копии по-прежнему безопасны. – davethegr8

+0

Я знаю эту проблему, поэтому я указал ее в своем сообщении. Однако две крупнейшие компании, предлагающие серверный хостинг в Германии, предоставляют средства резервного копирования таким образом. –

0

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

mysqldump -u <db_user> -p<db_password> <db_name> | gzip -c | ncftpput -u <ftp_user> -p <ftp_password> -c <ftp_url> <remote_file_name> 

Он отлично работает для меня.