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日已经正常备份了。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
29 3
|
11天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
25 3
|
1月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
64 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
21天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
66 3
|
22天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
Ubuntu 关系型数据库 MySQL
Linux系统MySQL安装
【10月更文挑战第19天】本文介绍了在 Linux 系统上安装 MySQL 的步骤,包括安装前准备、安装 MySQL、启动 MySQL 服务、配置 MySQL 以及验证安装。适用于 Ubuntu/Debian 和 CentOS/Fedora 系统,提供了详细的命令示例。
172 1
|
6月前
|
监控 网络协议 Java
Linux 网络编程从入门到进阶 学习指南
在上一篇文章中,我们探讨了 Linux 系统编程的诸多基础构件,包括文件操作、进程管理和线程同步等,接下来,我们将视野扩展到网络世界。在这个新篇章里,我们要让应用跳出单机限制,学会在网络上跨机器交流信息。
Linux 网络编程从入门到进阶 学习指南
|
存储 Linux C语言
Linux:入门学习知识及常见指令
Linux:入门学习知识及常见指令
|
6月前
|
存储 消息中间件 网络协议
Linux 系统编程从入门到进阶 学习指南
本文旨在为初学者提供一个清晰的 Linux 系统编程入门指南,带你步入 Linux 系统编程的世界,从基本概念到实用技能,一步步建立起您的知识体系。
Linux 系统编程从入门到进阶 学习指南
|
运维 Linux Shell
Linux权限维持入门学习(上)
Linux权限维持入门学习
137 0

热门文章

最新文章