Shell脚本实现mysql数据库自动备份

之前由于购买的服务器在纽约,国内远程连接服务器时,由于延迟太大,经常与服务器失联,害怕有天服务器刮掉,上面站的数据就没了,加上笔者的服务器系统是linux系统,所以就写个脚本定时备份数据库。

下面是backup.sh脚本内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
MYSQL_HOST='127.0.0.1'
MYSQL_USER= DB_USER
MYSQL_PASS= DB_PASSWORD
BACKUP_DIR='/root/backup'
DB= DB_NAME
FILE_NAME=${DB}_$(/bin/date +%Y%m%d)

[ -e $BACKUP_DIR ] || mkdir -p $BACKUP_DIR

function conf_backup() {
MYSQL_PWD=$MYSQL_PASS mysqldump -u $MYSQL_USER -h ${MYSQL_HOST} \
-F $DB > ${BACKUP_DIR}/${FILE_NAME}.sql
if([ -f ${BACKUP_DIR}/${FILE_NAME}.sql ]);then
cd $BACKUP_DIR && tar -zcf ${FILE_NAME}.tar.gz ${FILE_NAME}.sql \
&& rm ${BACKUP_DIR}/${FILE_NAME}.sql || exit
fi
}

conf_backup

脚本编辑完成后,给脚本可执行权限:

1
chomd a+x backup.sh

然后在服务器上采用 crontab -e 编辑计划任务,每天6点备份数据库:

1
0 6 * * *  /bin/bash /root/sh/backup.sh