Скрипт для бэкапа всех баз данных MySQL
Кидаем в /usr/local/bin/mysql_backup.sh, поскольку в скрипте написан root пароль от MySQL, нужно на файл выставить права CHMOD 700 и на исполнение +x. Затем добавляем в крон.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/bin/bash DB_BACKUP="/backups/mysql_backup/`date +%Y-%m-%d`" DB_USER="root" DB_PASSWD="password" HN=`hostname | awk -F. '{print $1}'` # Создаем директорию для бэкапа mkdir -p $DB_BACKUP # Удаляем бэкапы, которые старше 10 дней find /backups/mysql_backup/ -maxdepth 1 -type d -mtime +10 -exec rm -rf {} \; # Вариант 1 for db in $(mysql --user=$DB_USER --password=$DB_PASSWD -e 'show databases' -s --skip-column-names|grep -vi information_schema); do mysqldump --user=$DB_USER --password=$DB_PASSWD --opt $db | gzip > "$DB_BACKUP/mysqldump-$HN-$db-$(date +%Y-%m-%d).gz"; done # Вариант 2 # for db in $(mysql -e 'show databases' -s --skip-column-names|grep -vi information_schema); # do mysqldump --opt $db | gzip > "$DB_BACKUP/mysqldump-$HN-$db-$(date +%Y-%m-%d).gz"; # done # Меняем права chmod -R 600 $DB_BACKUP |
Cron:
1 | 30 3 * * * /usr/local/bin/mysql_backup.sh |