Linux服务器备份数据库shell脚本

data_backup.sh

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
28
29
30
31
32
33
34
35
36
#!/bin/bash

DIR="/usr/local/data/data_backup"
DATE=date +%Y%m%d%H%M%S
DATE_DAY=date +%Y%m%d
echo $DATE
DB_HOST="127.0.0.1"
DB_USER="root"
DB_PASS="dbpwd"

mkdir ${DIR}/${DATE_DAY}
cd ${DIR}/${DATE_DAY}

/usr/local/mysql/bin/mysqldump -h${DB_HOST} -u${DB_USER} -p${DB_PASS} --databases dbname >dbname-${DATE}.sql

if [ $? -eq 0 ]
then
tar -zcf mydatabase-${DATE}.sql.tgz dbname-${DATE}.sql
else
sleep 20

/usr/local/mysql/bin/mysqldump -h${DB_HOST} -u${DB_USER} -p${DB_PASS} --databases dbname >dbname-${DATE}.sql

if [ $? -eq 0 ];then
tar -zcf mydatabase-${DATE}.sql.tgz dbname-${DATE}.sql
fi

rm -rf dbname-${DATE}.sql

#find $DIR -type d -mtime +30 |xargs rm -rf

DATE_STR=date +%Y%m%d%H%M%S

echo $DATE >>${DIR}/${DATE_DAY}/mysql_dump$DATE_DAY.log

echo $DATE_STR >>${DIR}/${DATE_DAY}/mysql_dump$DATE_DAY.log
1
2
#设置脚本data_backup.sh有可执行的权限
chmod +x ./data_backup.sh
1
2
3
4
5
crontab -e #添加计划任务

0 23 * * * /usr/local/data/data_backup.sh

systemctl start crond.service #设置cron开机启动
解决:mysqldump: [Warning] Using a password on the command line interface can be insecure.
1
2
3
4
5
6
7
vim  /etc/my.cnf

[mysqldump]
host=127.0.0.1
user=root
password=123456
port=3306

修改完配置文件后,只需要执行mysqldump脚本就可以了;备份脚本中不需要涉及用户名密码相关信息