一键安装jdk
在做这个案例之前,将之前安装的JDK全部删除:
1.删除jdk安装目录
rm -rf /export/server/jdk1.8.0_241/
2.删除/etc/profile中的JDK环境变量配置内容
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
数据库定时备份
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 "-------------------------备份成功-------------------------"
代码说明:
-
代码中HOS、DB_USER、DB_PWD这三个变量的值要根据自己的情况来设置
-
mysqldump就是系统内置的用来备份数据库的工具
-
语句
\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标本
2.指定要导入的脚本文件
执行完之后,点击完成
3.刷新
运行脚本:
[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脚本内容,发现备份成功!
定时执行:
这里配置定时任务,需要使用Linux的定时工具crontab,crontab语法如下:
在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如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触发
-
命令行输入
crontab -e
进入编辑模式 -
编辑,写入以下内容
15 1 * * * /export/data/shell/mysqldump_demo.sh
-
wq保存退出即可
-
配置定时任务调度成功!这样的话,每天的凌晨 1:15就会自动的备份数据库