Ежедневный архив баз данных MySQL или спокойный сон
Все знают и никого не удивишь, что в рунете есть куча скриптов и всякой всячины для того, чтобы делать бекапы баз данных.
Ну вот долго искал, возможно искал плохо и не нашел то, что надо, и решил написать своего малыша скриптоныша, который четко работает и будет делать то, о чем напишу. Написал и выкладываю для тех, что нуждается.
Сложного ничего нет, как оказалось.
#!/bin/bash
PASS=тут пишите пароль вашего сервера mysql
DATE=$(date +%Y%m%d) #! Эту строку не трогаете тут задается дата создания архива
mkdir -p /var/backup/mysql/$DATE 2>/dev/null #! Что нам говорит эта строка: Директория /var у вас и так есть на сервере а вот директорию backup/mysql создаетет сами
for DB in `mysql -uимяпользователяmysql -p$PASS -e 'show databases' | grep -v 'Database' | grep -v 'information_schema'`; do #! заменить имя пользователя на имя пользователя вашего сервера mysql
mysqldump -uимяпользователяmysql -p$PASS $DB | gzip --best > /var/backup/mysql/$DATE/$DB.sql.gz; #! заменить имя пользователя на имя пользователя вашего сервера mysql
done
Создаете файл к примеру backup_mysql.sh и кладете его себе на сервер.
К примеру в директории usr создаете sites/backup и туда его в аккурат и даете ему права 777
Со скриптом все.
Теперь нам надо, чтобы он запускался, а запускаться он будет кроном сервера.
Теперь идем в директорию /var/spool/cron/cron и в файле cron пишем запуск
Выглядит это так:
30 2 * * * /usr/путь/до/файла/backup_mysql.sh Время задано половина третьего ночи. Рекомендую задать ночное время когда на сервере нету нагрузки и он спокойненько выполнит.
Данный скрипт создает архивы и датирует.
После того как вы дали задание крону необходимо сделать рестарт крона
/sbin/service crond restart
Спим спокойненько и в месяц раз делаем с сервера scp и радуемся жизни
Удачных мускульных бекапчиков!