MYSQL自动备份Shell脚本
1新建一个back.sh 脚本
#!/bin/bash
id="root" #用户名
pwd="vd123" #密码
dbs="zhangdezhi" #数据库名字的列表,多个数据库用空格分开
backuppath="/home/mysqlbackup" #保存备份的位置
day=30 #保留最近几天的备份
[ ! -d $backuppath ] &&mkdir -p $backuppath #判断备份目录是否存在,不存时新建目录。
cd $backuppath #转到备份目录,这句话可以省略。可以直接将路径到命令的也行。
backupname=mysql_$(date +%Y-%m-%d) #生成备份文件的名字的前缀,不带后缀。
for db in $dbs; #dbs是一个数据名字的集合。遍历所有的数据。
do
mysqldump $db >$backupname_$db.sql #备份单个数据为.sql文件。放到当前位置
if [ "$?" == "0" ] #$? 得到上一个shell命令的执行的返回值。0表示执行成功。其他表示错误。并将将结果写入到日志中。
then
echo $(date +%Y-%m-%d)" $db mysqldump sucess">>mysql.log
else
echo $(date +%Y-%m-%d)" $db mysql dump failed">>mysql.log
exit 0
fi
done
tar -czf $backupname.tar.gz *.sql #压缩所有sql文件
if [ "$?" == "0" ]
then
echo $(date +%Y-%m-%d)" tar sucess">>mysql.log
else
echo $(date +%Y-%m-%d)" tar failed">>mysql.log
exit 0
fi
rm -f *.sql #删除所有的sql文件
delname=mysql_$(date -d "$day day ago" +%Y-%m-%d).tar.gz #得到要删除的太旧的备份的名字。
rm -f $delname #删除文件。
2.给脚本执行权限 否则会报 Permission denied 错误
3.在windows下编辑脚本传到linux下会报bin/sh^M:badinterpreter:Nosuchfileordirectory 错误
这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息
修改文件格式
#sh>vi filename
利用如下命令查看文件格式
:set ff 或 :set fileformat
可以看到如下信息
fileformat=dos 或 fileformat=unix
利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix
:wq (存盘退出)
最后再执行文件
4.数据库报Warning: Using a password on the command line interface can be insecure.错误
MySQL 5.6 在命令行输入密码,就会提示这些安全警告信息。
1、针对 mysql
mysql -u root -pPASSWORD 改成 mysql -u root -p 再输入密码即可。
2、mysqldump 就比较麻烦了,通常都写在scripts脚本中。
vim /etc/mysql/my.cnf
[mysqldump]
user=your_backup_user_name
password=your_backup_password
修改完配置文件,重启MyQL后,只需要执行mysqldump脚本就可以了。备份脚本中不需要涉及用户名密码相关信息。