mysql 备份库的shell_shell学习之自动备份mysql数据库

首先登陆mysql:

mysql -u root -p注意:不是系统root的密码,mysql安装好后默认root密码为空

>set password for 'root'@'localhost' = password('*****');--修改root用户的本地密码

>grant all on zabbix.* to backup@'localhost' identified by "123456";---创建备份zabbix数据库的用户和密码,授权了对zabbix数据库的所有权限

退出数据库,我们编辑/etc/my.cnf,在[client]模块下添加用户名和密码如下:

host=localhost

user=backup

password='123456'

准备工作做好后来写脚本:

------------------------mysql_backup.sh--------------------------------------

#!/bin/bash

#auto backup mysql db --说明信息

#from net video 2017  --说明信息

#define backup path  --第一步做好参数定义准备工作,有利于后面代码的简洁

BAK_DIR=/data/backup/`date +%Y%m%d`

MYSQLDB=zabbix

MYSQLCMD=/usr/bin/mysqldump

#以上的参数第一个是指定备份路径,第二个是备份的数据库名,第三个是备份的执行程序

#Juge the exec user author

if [ $UID -ne 0 ];then

echo "Must to be use root for exec shell."

exit

fi

#以上的语句主要是用于判断是否用root用户执行

#Juge if backup exists

if [ ! -d $BAK_DIR ];then

mkdir -p $BAK_DIR

echo -e "\033[32mThe $BAK_DIR Creat Successfully!\033[0m"

else

echo "This $BAK_DIR is exists..."

fi

#以上的语句是判断备份的目录是否存在,如果不存在则创建并提示创建成功

#Mysql backup command

$MYSQLCMD --defaults-extra-file=/etc/my.cnf -d $MYSQLDB >$BAK_DIR/$MYSQLDB.sql

#这条语句就是执行备份的,--defaults-extra-file应用文件中的mysql用户和密码,-d参数,只导出表结构

#Juge Success or Failed

if [ $? -eq 0 ];then

echo -e "\033[32mThe Mysql Backup $MYSQLDB Successfully!\033[0m"

else

echo -e "\033[32mThe Mysql Backup $MYSQLDB Failed,Please check.\033[0m"

fi

#以上的语句只是一个提示备份成功与否的信息if [ $? -eq 0 ]判断以上的代码是否执行有误

在执行脚本前先用命令检测脚本:sh -n auto_mysql_backup.sh

为了测试效果,我们先来查看一下备份目录下是否有该文件,可以看到没有出现20170405这样的目录

e47c5ff311518adb7f99ccf2fa39c670.png

sh auto_mysql_backup.sh执行脚本

d8a56d96ceb439fb68beb79ab250bc2e.png

可以看到提示说创建20170405的目录成功并备份成,我们去目录下看看呢?

4f6b083b3067349e806b93421eb62562.png

以上可以看到备份zabbix数据库成功。

备注:在以上的脚本中我们可以修改MYSQLDB为一个手动输入的参数,这样使得我们的脚本更智能

crontab -e

0  0 * * * /bin/bash /data/sh/auto_mysql_backup.sh >>/tmp/mysql_back.log

将该脚本写入crontab中每天都去执行,在以后的文章中再写一个增量备份的,更智能化。

在数据库中授权MYDB数据库给backup用户 grant all on MYDB.* to backup@'localhost' identified by "123456";

对以上文档稍作修改如下:

-------------------------auto_mysql_backup02.sh---------------------------------------

#!/bin/bash

#auto backup database

#from net video 2017

BAK_DIR=/data/backup/`date +%Y%m%d`

MYSQLDB=$1

MYSQLCMD=/usr/bin/mysqldump

if [ $UID -ne 0 ];then

echo "Must to be use root for exec shell."

exit

fi

#增加的代码如下

if [ -z "$1" ];then

echo -e "\033[32mUsage:\nPlease Enter DataBase that you will backup \n-------------------------------\n\nUsage: { $0 mysql } \033[0m"

exit

fi

if [ ! -d $BAK_DIR ];then

mkdir -p $BAK_DIR

echo -e "\033[32mThe $BAK_DIR Creat Successfully!\033[0m"

else

echo "This $BAK_DIR is exists..."

fi

#Mysql BACKUP COMMAND

$MYSQLCMD --defaults-extra-file=/etc/my.cnf -d $MYSQLDB >$BAK_DIR/$MYSQLDB.sql

if [ $? -eq 0 ];then

echo -e "\033[32mThe Mysql Backup $MYSQLDB Successfully!\033[0m"

else

echo -e "\033[32mThe Mysql Backup $MYSQLDB Failed,Please check.\033[0m"

fi

---------------------------------------------------------------------------------------------------sh auto_mysql_backup02.sh MYDB--这样就可以备份指定的数据库了,只要授权给了backup用户,这里的授权用户我们也可以做成输入参数$2来处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值