300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > mysql数据库自动备份脚本(详解)

mysql数据库自动备份脚本(详解)

时间:2024-08-15 03:34:59

相关推荐

mysql数据库自动备份脚本(详解)

脚本内容:

#!/bin/bash

#功能说明:本功能用于备份mysql数据库

#编写日期:/05/17

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin

export PATH

#数据库用户名

dbuser='dbuser'

#数据库密码

dbpasswd='dbpasswd'

#数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 test2

dbname='dbname'

#备份时间

backtime=`date +%Y%m%d%H%M%S`

#日志备份路径

logpath='/opt/mysqlbackup/log'

#数据备份路径

datapath='/opt/mysqlbackup'

#日志记录头部

echo ‘”备份时间为${backtime},备份数据库表 ${dbname} 开始” >> ${logpath}/mysqllog.log

#正式备份数据库

for table in $dbname; do

source=`mysqldump -u${dbuser} -p${dbpasswd} --single-transaction ${table}> ${datapath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;

#备份成功以下操作

if [ "$?" == 0 ];then

cd $datapath

#为节约硬盘空间,将数据库压缩

tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null

#删除原始文件,只留压缩后文件

rm -f ${datapath}/${backtime}.sql

echo “数据库表 ${dbname} 备份成功!!” >> ${logpath}/mysqllog.log

else

#备份失败则进行以下操作

echo “数据库表 ${dbname} 备份失败!!” >> ${logpath}/mysqllog.log

fi

done

易错问题:

1、命令错误

一般我们备份数据库时,直接使用命令 :mysqldump -h127.0.0.1 -p3306 -uroot -p123456 db t1 t2 > /data/backup/db_t1_t2.sql

有的数据库版本会提示错误-bash:mysqldump: command not found,解决这个问题的可以设置软连接,也可以将mysqldump所做目录补全执行备份。

/mysql/bin/mysqldump-h127.0.0.1 -p3306 -uroot -p123456 db t1 t2 > /data/backup/db_t1_t2.sql

————————————————

2、报错问题

错误:-bash: ./how_paras.sh: /bin/bash^M: bad interpreter: No such file or directory

当我在shell中运行how_paras.sh时,出现了这个错误

[root@localhost sbin]# ./how_paras.sh

-bash: ./how_paras.sh: /bin/bash^M: bad interpreter: No such file or directory 翻译即:

-bash:./how_paras.sh:/ bin / bash ^ M:糟糕的解释器:没有这样的文件或目录

好,那我们来分析一下,为什么会出现这种情况,这个问题说明什么,以及如何来解决它!

情景

之前,我都是直接在shell中创建,编写,执行脚本,都没有问题。因为感觉在shell中编写脚本不方便。于是使用WinSCP软件,将在shell中创建的空脚本,下载到windos系统中,用我的文本编辑器Notepad++来编写脚本,将编写好的脚本保存,并上传到linux系统中去。最后利用远程工具shell链接linux系统,运行这个脚本。

why

为什么会出现这个问题

问题就出在,我把shell中的脚本下载到windos系统中来进行编辑。

windos中Notepadd++编辑脚本,使得脚本文件格式为DOS格式,即每一行的行位是\r\n来标识。

好,那我打开vim编辑器确认一下。

[root@localhost sbin]# vim how_paras.sh

// ... ...此处省略how_paras.sh脚本内容

//在命令行模式输入下面这个命令

:set ff?

//显示结果为

fileformat=dos 1,1All

总结

1、打开脚本确认脚本文件格式:vim xxx.sh,:set ff?。xxx.sh代表脚本文件

what

这个问题说明什么

出现这个问题说明在windos系统和linux系统中的文件格式不一致。

how

方法一: 如何解决?

直接解决方法:

用vim编辑这个脚本,在命令行模式下,设置文件的格式,并保存。

即vim xxx.sh,:set ff=unix

方法二:如何解决?

在Windos系统中Notepad++软件中更改,打开这个文件:编辑–>转换为UNIX格式

彻底解决方法:更改Windos系统中Notepad++软件的文件方式。改为:NIX格式。

步骤:

打开Notepad++:

设置–>首选项–>新建:选择格式为UNIX;

设置–>首选项–>默认目录:选择使用新样式对话框(无文件扩展名和UNIX支持此功能)

————————————————

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。