首页 > 系统相关 >001_【博学谷学习记录】超强总结,用心分享【shell一件安装脚本】

001_【博学谷学习记录】超强总结,用心分享【shell一件安装脚本】

时间:2023-01-10 01:55:06浏览次数:45  
标签:12 102918 05 备份 001 shell 2020 超强 export

一键安装jdk

在做这个案例之前,将之前安装的JDK全部删除:

1.删除jdk安装目录

rm -rf /export/server/jdk1.8.0_241/ 

2.删除/etc/profile中的JDK环境变量配置内容

image-20230103215159692

3.让修改生效

source /etc/profile

4.安装脚本jdk_install.sh

#!/bin/bash
# 1.提示安装jdk
echo "现在开始安装jdk"
sleep 1     # 休眠1秒钟
# 2.删除centos自带的jdk
oldjava=$(rpm -qa | grep java )
for old in ${oldjava}
do
   # echo $old
   rpm -e --nodeps $old
done
# 3.创建安装目录/export/server, 进入安装目录

java_path="/export/server"

if [ ! -d $java_path  ]
then
   mkdir -p $java_path
fi

#4:解压jdk安装包
tar -xvf /export/software/jdk-8u241-linux-x64.tar.gz  -C  $java_path

# 6.设置环境变量
JAVA_HOME="/export/server/jdk1.8.0_241"

grep "JAVA_HOME" /etc/profile
if [ $? -ne 0 ]
then
  # JAVA_HOME
  echo "--------------JAVA_HOME------------------"
  echo 'export JAVA_HOME=/export/server/jdk1.8.0_241' >> /etc/profile
  # PATH
  echo "--------------PATH------------------------"
  echo 'export PATH=:$JAVA_HOME/bin:$PATH' >> /etc/profile
fi
# 7.加载环境变量
source /etc/profile
# 8.提示用户安装成功,查看jdk安装版本
echo "恭喜您,jdk安装成功!"
java -version

执行该脚本

chmod +x jdk_install.sh
./jdk_install.sh

image-20230103215833171

数据库定时备份

1)每天凌晨1:15备份 数据库 itcast_shop到 /export/data/db目录

2)备份开始和备份结束能够给出相应的提示信息

3)备份后的文件要求以备份时间为文件名,并打包成 .tar.gz 的形式,比如:

2020-05-12_021501.tar.gz

4)在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除

脚本mysqldump_demo.sh

#!/bin/bash
#完成数据库的定时备份
#备份的路径
BACKUP=/export/data/db
#当前时间作为文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#可以通过输出变量来调试
#echo ${DATETIME}

echo "---------------------开始备份数据库---------------------"
echo "---------------------备份的路径是$BACKUP/$DATETIME.tar.gz---------------------"
#主机ip地址
HOST=192.168.88.161
#数据库用户名
DB_USER=root
#数据库密码
DB_PWD=123456
#数据库名
DATABASE=itcast_shop
#创建备份路径
#如果备份的文件夹路径存在的话,就直接使用,否则就创建

[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"

#执行mysql的备份数据库的指令

/export/server/mysql-5.7.29/bin/mysqldump -u${DB_USER} -p${DB_PWD} --host=${HOST} ${DATABASE} > ${BACKUP}/${DATETIME}/${DATETIME}.sql

#打包备份文件
cd ${BACKUP}
tar -czvf ${DATETIME}.tar.gz ${DATETIME}
#删除临时目录
rm -rf ${BACKUP}/${DATETIME}
#删除10天前的备份文件
find ${BACKUP} -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "-------------------------备份成功-------------------------"

代码说明:

  1. 代码中HOS、DB_USER、DB_PWD这三个变量的值要根据自己的情况来设置

  2. mysqldump就是系统内置的用来备份数据库的工具

  3. 语句\find ${BACKUP} -mtime +10 -name "*.tar.gz" -exec rm -rf {} \; 解释:

1)find命令只是来查找匹配的文件,如果查到文件之后还需要进一步的操作,则需要添加-exec参数,{}表示find查询出来的文件名字。

2)-exec 参数后面跟的是要执行的command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。

3)-mtime 文件状态修改时间 ,-mtime +10:表示10天前的文件

导入脚本:

将itcast_shop.sql提前导入到数据库中

1.选择导入sql标本

image-20230103220233388

2.指定要导入的脚本文件

image-20230103220303165

执行完之后,点击完成

3.刷新

image-20230103220321774

运行脚本:

[root@node1 shell]# vim mysqldump_demo.sh 
[root@node1 shell]# chmod +x mysqldump_demo.sh 
[root@node1 shell]# ./mysqldump_demo.sh 
2020_05_12_102918
2020_05_12_102918
---------------------开始备份数据库---------------------
---------------------备份的路径是/export/data/db/2020_05_12_102918.tar.gz---------------------
mysqldump: [Warning] Using a password on the command line interface can be insecure.
2020_05_12_102918/
2020_05_12_102918/2020_05_12_102918.sql.gz
-------------------------备份成功-------------------------

结果查看:

1:进入数据库备份目录
[root@node1 shell]# cd /export/data/db/
[root@node1 db]# ls
2020_05_12_102918.tar.gz

2:解压备份压缩包
[root@node1 db]# tar -zxvf 2020_05_12_102918.tar.gz 
2020_05_12_102918/

3:进入解压后目录
[root@node1 db]# cd 2020_05_12_102918/
[root@node1 2020_05_12_102918]# ls
2020_05_12_102918.sql

4:查看sql脚本内容
[root@node1 2020_05_12_102918]# vim 2020_05_12_102918.sql 

查看sql脚本内容,发现备份成功!

image-20230103220401388

定时执行:

这里配置定时任务,需要使用Linux的定时工具crontab,crontab语法如下:

image-20230103220423129

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

分(0~59) 
时(0~23)
日(0~31,但是你需要考虑你月的天数)
月(1~12)
周(0~6 0=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)

"* * * * *"         #每隔一分钟触发
"15 * ? * *"       #每小时的第15分触发
"15 10 ? * *"      #每天上午10:15触发
"15 10 * * ?"      #每天上午10:15触发
"* 14 * * ?"       #在每天下午2点到下午2:59期间的每1分钟触发
"0/5 14 * * ?"     #在每天下午2点到下午2:55期间的每5分钟触发
"0/5 14,18 * * ?"  #在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0-5 14 * * ?"     #在每天下午2点到下午2:05期间的每1分钟触发
"10,44 14 ? 3 WED" #每年三月的星期三的下午2:10和2:44触发
  1. 命令行输入crontab -e 进入编辑模式

  2. 编辑,写入以下内容

15 1 * * * /export/data/shell/mysqldump_demo.sh
  1. wq保存退出即可

  2. 配置定时任务调度成功!这样的话,每天的凌晨 1:15就会自动的备份数据库

image-20230103220514391

标签:12,102918,05,备份,001,shell,2020,超强,export
From: https://www.cnblogs.com/zuoer96/p/17038981.html

相关文章