MySQL - резервное копирование

База данных естественно рекомендует создания резервных копий. Мотивация проста - любой программный или аппаратный сбой может повредить БД. Для однократного резервирования нам потребуется только mysql, для регулярного - любой планировщик (лучше всего - cron) Для создания резервных копий служит утилита mysqldump (входит в состав mysql) Синтаксис для создания копии всех баз данных:

mysqldump -u**пользователь** -p**пароль** --all-databases > /**путь/**mysql_all.sql

где указываются параметры пользователя с правами на чтение всех баз данных и путь куда вы хотите ее сохранить. Для резервного копирования по расписанию я рекомендую следующий код:

mysqldump -u**пользователь** -p**пароль** --all-databases > /**путь/**mysql_all.sql

tar czf /**путь**/mysqldump-`date +%d.%m.%y`.tgz /**путь**/mysql_all.sql

вторая строчка отвечает за создание архива, с именем mysql-текущаядата.tgz таким образом вы получаете ежедневную копию mysql и можете откатится на любой день. Этот код можно добавить в cron двумя путями: 1) создать текстовый файл в директории /etc/cron.daily/ , скопировать туда код и сделать его исполняемым (chmod +x имяфайла) 2) использовать crontab -e для редактирования расписания cron. туда нужно ввести:

0 0 * * * mysqldump -u**пользователь** -p**пароль** --all-databases > /**путь/**mysql_all.sql;tar czf /**путь**/mysqldump-`date +%d.%m.%y`.tgz /**путь**/mysql_all.sql

и сохранить файл :) результат обоих методов одинаков Единственное неудобство - все базы данных сохраняются в одном файле. Избежать этого можно используя создав следующий скрипт:

databases=(`echo 'show databases;' | mysql -u**пользователь** -p**пароль** | grep -v ^Database$`)
for d in "${databases[@]}"; do
        if [[ $d != 'tmp' && $d != 'test' ]]
        then
                echo ${d}
                mysqldump -u**_имя_пользователя_** -p**_пароль_** ${d} > /backup/mysql/mysql_day/${d}.sql
        fi
done
tar czf /backup/mysql/mysqldump-`date +%d.%m.%y`.tgz /backup/mysql/mysql_day/

предпологается, что вы храните резервные копии в /backup/mysql и существует каталог /backup/mysq/mysql_day

Размещено: 16.03.2007 18:58 Всего комментариев: 0
Автор: zeus Блог: zeus's blog
Тэги: backup , cron , howto , mysql , Руководства , сервер

Комментарии:

Нет комментариев.

Пожалуйста войдите или зарегистрируйтесь чтобы оставлять комментарии.