MySQL自动备份脚本

1、备份脚本

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
26
27
mkdir -p /data/mysqlbak/{data,logs,scripts}

cd /data/mysqlbak/scripts

cat > backup.sh << EOF
#!/bin/bash

DATE=$(date +%Y%m%d)
BACKUP_ROOT=/data/mysqlbak
BACKUP_FILEDIR=$BACKUP_ROOT/data/$DATE

mkdir -p $BACKUP_ROOT/data/$DATE
source /etc/profile.d/mysql

DATABASES=$(mysql -uroot -peconage123 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")

for db in $DATABASES
do
echo
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
mysqldump -uroot -phello123 --default-character-set=utf8 -q -n --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE-------
echo
done

echo "done"
EOF

2、清理脚本

1
2
3
4
5
6
cat > backup_clean.sh << EOF
#!/bin/bash
echo ----------CLEAN BEGIN----------
find /data/mysqlbak/data/ -mtime +14 -exec rm -rf {} \;
echo ----------CLEAN COMPLETE-------
EOF

3、给脚本执行权限

1
2
chmod +x backup.sh
chmod +x backup_clean.sh

4、设置定时任务

1
2
3
crontab -e
00 1 * * 5 /data/mysqlbak/scripts/backup.sh
00 1 * * 5 /data/mysqlbak/scripts/backup_clean.sh > /data/mysqlbak/logs/backup_full_clean.log 2>&1