Скрипт для бэкапа всех баз данных 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

Залишити відповідь