MySQL数据备份sh脚本
#!/bin/bash
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#用户名
username=root
#密码
password=1234
#将要备份的数据库
database_name=test
#备份保存路径
backup_dir=/usr/local/dba/backup_dir/$database_name/db_data
#备份日志
backup_log=/usr/local/dba/backup_dir/$database_name/log
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
#创建备份日志文件夹
if [ ! -d $backup_log ];
then
mkdir -p $backup_log;
fi
function log_info ()
{
echo “$dd execute $0 $@” >> $backup_log/$database_name-log.txt
}
mysqldump -u $username -p$password $database_name > $backup_dir/mysql-backup-$database_name-$dd.sql
# 备份成功之后,删除本次以外的备份数据
cd $backup_dir
#删除所有文件,排除本次生成的文件
rm `ls *.sql|egrep -v mysql-backup-$database_name-$dd.sql`
#写创建备份日志
log_info "$@ info"
配置Linux定时任务
crontab -e
#输入cron表达式
00 3 * * * /usr/local/backup/backup.sh
遇到的问题
- 脚本权限不足
chmod u+x file1.sh
u
代表所有者;
x
代表执行权限;
+
表示增加权限。
- /bin/sh^M:损坏的解释器: 没有那个文件或目录
由于脚本在windows环境编辑,换行符号与linux环境不一致导致
vi [脚本].sh
:set ff=unix
:wq
- 运行脚本需要输入数据库密码
-p与密码之间不能有空格
mysql -u root -p1234 test...