Страница 1 из 1

Бэкап на Линуксе ( LAMP ) - MySQL и пр. ?

СообщениеДобавлено: 21 сен 2007, 18:56
Андрей Тр. aka RH
Возник такой вопрос - каковы наиболее эффективные способы бэкапа линуховского сервера ( и, разумеется, последующего его восстановления в случае чего ). В частности, интересует момент бэкапа баз в MySQL. Речь про регулярный бэкап куда-нить на другой сервер ( в идеале не ограничивая себя Линуксом ).

СообщениеДобавлено: 26 сен 2007, 06:35
Юрий Беляков
Делаю бэкап MySQL по простому - скрипт по cron'у раз в сутки.
Бэкап хранится 5 дней. Данные бэкапа rsync'ом перекидываются в другое место.
Восстанавливать просто - из командной строки через mysql просто выполнить команды из файла бэкапа.

Код: Выделить всё
#!/bin/sh

MYSQLUSER="user"
MYSQLPASS="password"

BACKUP_DIR=/backup_dir
DATE=`date +%Y%m%d`

MYSQL_COMMAND="/usr/local/bin/mysql -u$MYSQLUSER -p$MYSQLPASS"
BACKUP_COMMAND="/usr/local/bin/mysqldump -Q -u$MYSQLUSER -p$MYSQLPASS"

$MYSQL_COMMAND -e 'SHOW DATABASES' | sed 's/|//g' | grep -v 'Database' | grep -v 'information_schema' | while read DB_NAME; do
        $BACKUP_COMMAND $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME-$DATE.gz
done

find $BACKUP_DIR -ctime +5 | xargs rm -f

СообщениеДобавлено: 26 сен 2007, 15:20
Андрей Тр. aka RH
Юрий Беляков писал(а):Делаю бэкап MySQL по простому - скрипт по cron'у раз в сутки.

Да, такой вариант приходит в голову первым .. но я не уверен, нормально ли это - таким образом сохранять БД "на лету", ведь там могут быть локи и прочая фигня .. по аналогии с бэкапом тома с открытыми на нём файлами. Можно, конечно, считать, что в 2 ч. ночи никто не пользуется этой базой .. и это нормально ?

А что насчет остального ( L, A и P в LAMP ) ? Просто сохранять \srv, где Апач ? и \etc тоже ?

СообщениеДобавлено: 27 сен 2007, 09:51
Михаил Григорьев
В 2003 году один друг на коленке написал скриптик для бэкапы разных баз и файлов на FreeBSD, я потом кое что усовершенствовал и до сих пор использую на freebsd эти скрипты:

http://www.novell.chel.ru/temp/backup-script.zip

Смысл прост:

в /usr/local/etc/backup/ пихаем все скрипты из архива
в cron прописываем задание на бэкап, например:
Код: Выделить всё
0       3       *       *       *       root    /usr/local/etc/backup/start_backup.sh


в backup.conf пишем что бэкапить и куда.

Бэкапится у нас так: по крону срабатывает start_backup.sh далее он монтирует по NFS с сервера определенный каталог в /mnt/backup
Потом выполняется backup.sh который и делает все дело, быкапит базу mysql или postgresql или openldap + бэкапит нужные каталоги (они указываются в include.conf и exclude.conf)
Причем файлы бэкапятся по выходным все, а по будним дням инкрементно.
Единственно что важно, это проверить в скрипте backup.sh все пути до нужных файликов (gtar, mysqldump, ldapsearch и другие)

СообщениеДобавлено: 27 сен 2007, 12:04
Юрий Беляков
Андрей Тр. aka RH писал(а):Да, такой вариант приходит в голову первым .. но я не уверен, нормально ли это - таким образом сохранять БД "на лету", ведь там могут быть локи и прочая фигня .. по аналогии с бэкапом тома с открытыми на нём файлами. Можно, конечно, считать, что в 2 ч. ночи никто не пользуется этой базой .. и это нормально ?


Добавить опции --opt или --lock-tables

СообщениеДобавлено: 28 сен 2007, 18:43
Андрей Тр. aka RH
Спасибо за ответы, будем пробовать. А :
Юрий Беляков писал(а):Добавить опции --opt или --lock-tables

это куда ? В BACKUP_COMMAND="/usr/local/bin/mysqldump -Q -u$MYSQLUSER -p$MYSQLPASS" ? это опции mysqldump ?

СообщениеДобавлено: 01 окт 2007, 06:24
Юрий Беляков
Андрей Тр. aka RH писал(а):Спасибо за ответы, будем пробовать. А :
Юрий Беляков писал(а):Добавить опции --opt или --lock-tables

это куда ? В BACKUP_COMMAND="/usr/local/bin/mysqldump -Q -u$MYSQLUSER -p$MYSQLPASS" ? это опции mysqldump ?


Да. В документации (или где-то в комментариях к утилите) про это написано.