Shell编程入门加案例之Linux的Mysql数据库定时备份

简介: 设置每天凌晨2点自动执行上面的脚本。使用crontab创建任务:crontab -e

1、Shell基础语法

案例:

#!/bin/bash
# 定义变量,等号两边不能有空格,变量命名规则和一般java一样。变量名一般是大写的,规范来说
msg=你大爷的bkl
echo 他说:$msg
# 撤销变量
unset msg
# 定义静态变量 即不可unset的
readonly name=bkl
echo "my name is $name"
# 将命令的返回值赋值给变量,以下两种写法均可以
date1=`date`
date2=$(date)
echo date1=$date1
echo date2=$date2
echo 环境变量在/etc/profile定义,然后source /etc/profile使其生效
echo 环境变量MY_TEST=$MY_TEST
# 多行注释
:<<!
echo 123
echo 222
echo 333
!
# echo 多行注释
echo ------命令行参数获取------
echo 命令本身=$0 参数1=$1 参数2=$2
echo 全部参数(所有参数看成整体)=$*
echo 全部参数(每个参数区分对待)=$@
echo 参数个数=$#
echo ------预定义变量,是shell设计者预先定义好的变量,可直接使用------
echo 当前进程的进程号=$$
# 后台运行在命令最后加上&即可
# /root/shcode/hello.sh &
echo 后台运行的最后一个进程的进程号=$!
echo 最后一次执行命令的返回状态,如果为0即正确执行了,反之不正确$?
echo ------运算符------
echo 第一种写法=$(((2+3)*4))
echo 第二种写法(推荐)=$[(2+3)*4]
echo 第三种写法,用expr写,案列都不想打,太反人类了
echo 求出命令行的两个参数的和=$[$1+$2]
echo ------条件判断------
echo 字符串比较用=
echo 两个数比较用-lt -le -eq -gt -ge -ne(分别代表 小于 小于或者等于 等于 大于 大于或者等于 不等于)
echo 按文件权限判断 -r -w -x(分别代表有 读 写 执行 的权限)
echo 按文件类型判断 -f -e -d(分别代表 文件存在且是一个常规文件 文件存在 文件存在且是一个目录)
echo 条件判断案例(条件用中括号,括号左右必须有空格,条件为空的话就是false):
if [ bkl=bkl ]
  then
    echo bkl等于bkl
fi
if [ 22 -le 23 ]
  then
    echo 22小于等于23
fi
if [ -f /root/shcode/hello.sh ]
  then
    echo hello.sh文件存在
fi
if [ $1 -le 100 ]
then
  echo 命令行参数1小于等于100
elif [ $1 -le 120 ]
then
  echo 命令行参数1小于等于120
else
  echo 命令行参数1大于120
fi
echo ------流程控制------
echo case的基本使用
case $1 in
111)
echo 命令行参数1为111
;;
11)
echo 命令行参数1为11
;;
*)
echo 命令行参数1为other
;;
esac
echo ------for循环------
for i in $*
do
  echo 命令行参数=$i
done
SUM=0
for (( j=0; j<=$1; j++ ))
do
  SUM=$[$SUM+$j]
done
echo 总和SUM=$SUM
echo ------while循环------
SUM=0
i=0
while [ $i -le $1 ]
do
  SUM=$[$SUM+$i]
  i=$[$i+1]
done
echo while执行后SUM=$SUM
echo ------read从控制台输入------
read -t 5 -p 请输入一个数(请5秒内输入,否则默认跳过): NUM1
if [ $NUM1 ]
then
  echo 你输入的是:$NUM1
else
  echo -e "\n你没输入任何数据..."
fi
echo ------系统自带函数------
echo 用basename获取文件名`basename /home/aaa/bbb/test.txt`
echo 用basename获取文件名,去除后缀的`basename /home/aaa/bbb/test.txt .txt`
echo 用dirname获取完整路径最后个/前面的部分`dirname /home/aaa/bbb/test.txt`
echo ------自定义函数------
function getSum(){
  SUM=$[$n1+$n2]
  echo 你输入的两数和为:$SUM
}
read -p 请输入整数n1: n1
read -p 请输入整数n2: n2
# 调用自定义函数
getSum $n1 $n2


2、Linux的Mysql数据库定时备份

案例代码:

#!/bin/bash
#备份目录
BACKUP=/data/backup/mysql
#当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
#数据库地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码,包含特殊字符需要用单引号包起来,不然报错
DB_PWD='123456!@#$%^&*()-='
#需要备份的数据库名
DATABASE=backup_test
#创建备份目录
[ ! -d "$BACKUP" ] && mkdir -p $BACKUP
echo 开始备份数据库:$DATABASE
#备份数据库 -R表示导出存储过程和自定义函数
mysqldump -u$DB_USER -p$DB_PWD --host=$HOST -R --databases $DATABASE | gzip > $BACKUP/$DATETIME.sql.gz
#删除10天前的备份文件
find $BACKUP -atime +10 -name "*.sql.gz" -exec rm -rf {} \;
echo 备份数据库成功,文件名:$DATETIME


2.1 授予执行权限

chmod u+x /usr/sbin/bkl_mysql_db_backup.sh


2.2 开启定时任务

设置每天凌晨2点自动执行上面的脚本。

使用crontab创建任务:crontab -e

输入:

0 2 * * * /usr/sbin/bkl_mysql_db_backup.sh

分别代表 分 时 日 月 周几 待执行的任务

保存退出即可。

然后crontab -l即可查看任务。


结果检测:

89e927cf9ecd407fae6a23daa78c4ca6.png


可以看到11日和12日已经正常备份了。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
Ubuntu 关系型数据库 Linux
Linux数据库安装
本文介绍了在CentOS 8.0和Ubuntu 22.04系统上安装、配置和启动MariaDB数据库服务器的详细步骤。包括通过`yum`和`apt`包管理器安装MariaDB服务,启动并检查服务运行状态,设置root用户密码以及连接数据库的基本操作。此外,还展示了如何在Ubuntu上更新软件包列表、安装依赖项,并验证MariaDB的版本和运行状态。通过这些步骤,用户可以成功部署并初始化MariaDB环境,为后续数据库管理与应用开发奠定基础。
162 61
|
2月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
199 41
|
2月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
264 17
|
2月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
158 11
|
2月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
82 18
|
2月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
99 10
|
1月前
|
存储 Oracle 关系型数据库
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。
|
3月前
|
Oracle 关系型数据库 MySQL
Oracle linux 8 二进制安装 MySQL 8.4企业版
Oracle linux 8 二进制安装 MySQL 8.4企业版
91 1
|
Ubuntu Linux Shell
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
164 0
|
Shell Linux C++
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
182 0