Shell脚本与计划任务

发布时间:2023年12月18日

1.确定备份方案

为了顺利完成上述备份方案,首先授权用户能够查询studydb、coursedb库。

针对本案例的情况,可以创建一个专用的数据库备份账户operator,允许从备份主机 172.16.16.220连接到MySOL数据库.并授予对studydb.coursedb库的读取权限.使用逻辑备份工 具mysqldump时,需要对库设置SELECT和LOCK TABLES权限。

首先创建数据库

mysql> create database studydb;

mysql> create database coursedb;

mysql> grant select,lock tables on studydb.* to 'operator'@'localhost' identified by 'pwd123';

mysql> grant select,lock tables on coursedb.* to 'operator'@'localhost' identified by 'pwd123';

? ?

2. 编写MySQL备份脚本

? ? ?在备份主机中,创建用来存放备份文件的目录(如/opt/qnzx_dobak).并编写相应的备份脚本(如 qnzx_cbbak.sh),确认能够成功执行备份。脚本代码中,对于主机的地址、用户名、密码、备份路径、文件名等信息,可能会在必要的时候变更,为了方便更新脚本,这些内容最好存放到固定名称的变量中。

[root@node01 ~]# mkdir -p /opt/qnzx_dbbak/
[root@node01 ~]# vim qnzx_dbbak.sh

#!/bin/bash
#这是一个简化的MySQL数据库逻辑备份脚本
#1.定义数据库连接
MY_USER="operator"
MY_PASS="pwd123"
MY_HOST="localhost"
MY_CONN="-u $MY_USER -p -h $MY_HOST"
MY_DB1="studydb"
MY_DB2="coursedb"

#2.定义备份目录、工具、时间、文件名主体
BF_DIR="/opt/qnzx_dbbak/"
BF_CMD="/usr/local/mysql/bin/mysqldump"
BF_TIME=`date +%Y%m%d-%H%M`
NAME_1="$MY_DB1-$BF_TIME"
NAME_2="$MY_DB2-$BF_TIME"

#3.先导出为.sql脚本,然后进行压缩(打包后删除原文件)
cd $BF_DIR
$BF_CMD $MY_CONN --databases $MY_DB1 > $NAME_1.sql
$BF_CMD $MY_CONN --databases $MY_DB2 > $NAME_2.sql
/bin/tar zcf $NAME_1.tar.gz $NAME_1.sql --remove &> /dev/null
/bin/tar zcf $NAME_2.tar.gz $NAME_2.sql --remove &> /dev/null
[root@node01 ~]# chmod +x qnzx_dbbak.sh  //添加执行权限
[root@node01 ~]# ./qnzx_dbbak.sh  //手动执行备份脚本
[root@node01 ~]# ls -lh /opt/qnzx_dbbak/*.gz

? ? ? 当需要备份的数据库发生变化时,只要修改脚本中的相关变量即可,从而使备份脚本具有可重 用、可移植使用的特点,减少了大量重复编码的工作量。

3.设置计划任务

? ? ?有了批量备份的Shell脚本以后,接下来可按照备份要求设置计划任务,以便自动,定期执行备 份操作,在crontab配置记录中,直接指定qnzx_dbbak.sh 脚本程序的路径作为执行命令。

[root@node01 ~]# mv qnzx_dbbak.sh /opt/qnzx_dbbak/  //将脚本也转移至备份目录
[root@node01 ~]# crontab -e

30 2 * * * /opt/qnzx_dbbak/qnzx_dbbak.sh  //在指定时间执行脚本程序

[root@node01 ~]# systemctl status crond  //确保crond服务已运行

文章来源:https://blog.csdn.net/2301_77023501/article/details/135063317
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。