MYSQL自动备份Shell脚本

2017-05-25  本文已影响0人  懒懒DE鳄鱼

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脚本就可以了。备份脚本中不需要涉及用户名密码相关信息。

上一篇下一篇

猜你喜欢

热点阅读