shell学习之自动备份mysql数据库
admin
2023-05-26 07:01:30
0


首先登陆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这样的目录

shell学习之自动备份mysql数据库

sh auto_mysql_backup.sh 执行脚本

shell学习之自动备份mysql数据库

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

shell学习之自动备份mysql数据库

以上可以看到备份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来处理。

相关内容

热门资讯

被呼吁辞职之际,因凡蒂诺与FI... 【环球网快讯】据法新社最新消息,国际足联(FIFA)主席因凡蒂诺当地时间周三(5日)在摩洛哥与FIF...
原创 S... ## 这是猎鹰9号火箭上面级箭体将与月球相撞的地点。这枚废弃火箭将以每小时5400英里(8700公...
“婚外胚胎案”当事妻子:胚胎若... 连日来,“妻子申请销毁丈夫婚外胚胎遭拒”一事持续引发网友的广泛关注。8月5日上午,扬子晚报/紫牛新闻...
我国科研团队,月壤新发现! 月球的正面和背面,空间环境差别大吗?基地建在正面和建在背面,面临的挑战有何不同?2026年7月,我国...
三星、SK海力士正评估中微芯片... 【CNMO科技消息】8月5日,据外媒援引三位知情人士报道,韩国存储芯片巨头三星电子与SK海力士正在评...
图书标注禁用于AI训练,华夏出... 界面新闻记者 | 宋佳楠 近日有读者发现,华夏出版社推出的《新译黄庭经 阴符经》等图书版权信息页,...
一加手机退出北美市场,当地官网... 据外媒GSM Arena报道,一加目前已正式退出北美市场,官网上销售的最后一批手机目前已经售罄。 目...
事业编笔试第一名称遭第二名花钱... 陈女士公开反映,她是事业单位雷州市特校某岗位笔试第一,雷州特校工作人员在面试前私下联系她,帮助笔试第...
专业油烟机清洗方法介绍一下 专业油烟机清洗方法介绍一下干湿抹布各一块,专用的吸油烟机清洁剂一瓶(吸油烟机清洗剂在超市应该能够买得...
帅康的侧吸式油烟机怎么样啊?请... 最佳回答 根据这个has_none_intro来判断是否有个人简历然后样式不同显示--> 2018-...