Бэкапим базы данных по расписанию.
Чтобы бэкапы не мозолили глаза - складываем их на другой винт.
Для бэкапа используем классический mysqldump, но так как пароль рута открытым текстом нам передавать жалко, - заведем простого пользователя с ограниченными правами, который не сможет внести изменения в базу.
Создаем пользователя backupuser с паролем fintiflushka
CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'fintiflushka';
Наделяем правами чтения и «запирания» таблиц, чтобы блокировать внесение изменений во время создания бэкапа
GRANT SELECT, LOCK TABLES ON *.* TO 'backupuser'@'localhost';
Затем создаем файл backup.sh
#!/bin/sh
# Монтируем диск на который делаем резервные копии
mount /dev/sde1 /mnt
# Создаем переменную DT, которая содержит текущую дату
DT=`date +"%d-%m-%Y"`
# Делаем бэкапы выбранных баз в папку bkup примонтированного диска в файл с именес состоящим из названия базы данных и текущей даты создания бэкапа
mysqldump -ubackupuser -pfintiflushka base1 > /mnt/bkup/base1-$DT.sql
mysqldump -ubackupuser -pfintiflushka base2 > /mnt/bkup/base2-$DT.sql
mysqldump -ubackupuser -pfintiflushka base3 > /mnt/bkup/base3-$DT.sql
# Удаляем из папки бэкапы старше 30 дней (по желанию)
find /mnt/bkup -type f -mtime +30 -print0 | xargs -0 rm -f
# Отмонтируем диск с бэкапами
umount /mnt
И все это запихиваем в планировщик на ежедневное выполнение в 23:00.
# crontab -l
00 23 * * * sh /home/user/backup.sh
При желании бэкапы можно сжимать на лету, к примеру gzip'омю Например, в моем случае это будет выглядеть так:
mysqldump -ubackupuser -pfintiflushka base1 / gzip > /mnt/bkup/base1-$DT.sql.gz