千家信息网

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

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,首先登陆mysql:mysql -u root -p 注意:不是系统root的密码,mysql安装好后默认root密码为空>set password for 'root'@'localhost' =
千家信息网最后更新 2026年11月02日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这样的目录

sh auto_mysql_backup.sh 执行脚本

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

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

备份 数据 数据库 用户 脚本 密码 参数 目录 成功 语句 代码 信息 提示 文件 智能 准备 工作 输入 简洁 三个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国互联网科技工作委员会毛军 科技信息互联网 互联网科技的发展 互联网 卓越科技 互联网金融科技平台 壕鑫互联网络科技 互联网科技论坛 互联网科技创新企业排名 宁波青枫互联网科技有限公司 彤创互联网科技有限公司 中国航天科技大学国际工业互联网 速维有品互联网信息科技(苏州)有限公司 玉溪新华互联网科技好不好 互联网科技公司营业执照怎么办理 区块链结合互联网科技 互联网科技股为什么大涨 广州有谷有贝互联网科技有限公司 陕西九四连强互联网科技有限公司 艺电能源互联网科技有限公司招聘 科技信息时代互联网发展 有格互联网科技 互联网与科技发展 没上市的科技互联网公司 深圳科技互联网 美国互联网科技 狮子座互联网科技培训 互联网巨头投资的硬核科技 青岛科技大学互联网大赛研究生 互联网5g黑科技有哪些 兰石爱特工业互联网科技分公司
0