如下:
一、 编写数据库备份shell脚本
1、登录服务器,进入mysql安装目录。例:cd /usr/local/mysql
2、创建目录 dbBakShell和 dbbak,用于放置数据备份脚本及备份文件
mkdir dbBakShell
mkdir dbbak
3、将以下脚本上传到dbBakShell文件下,其文件中部分设置根据自己服务器进行配置
lzfzMysqlBak.sh文件如下 ,只需要修改如下标红位置即可
#!/bin/bash #保存备份个数,备份14天数据 number=14 #备份保存路径 backup_dir=/usr/local/mysql/dbbak #日期 dd=`date +%Y-%m-%d-%H-%M-%S` #备份工具 tool=/usr/local/mysql/mysql8.0/bin/mysqldump #用户名 username=xxx #密码 password=xxx #将要备份的数据库 database_name=xxx #如果文件夹不存在则创建 echo "$backup_dir"; if [ ! -d $backup_dir ]; then mkdir $backup_dir; fi #简单写法 mysqldump -u root -pXXDB_2022 xxxq_mysql > /root/mysqlbackup/users-$filename.sql $tool -u $username -p$password $database_name >$backup_dir/$database_name-$dd.sql #写创建备份日志 echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt #找出需要删除的备份 delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1` #判断现在的备份数量是否大于$number count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l` if [ $count -gt $number ]; then #删除最早生成的备份,只保留number数量的备份 rm $delfile #写删除文件日志 echo "delete $delfile" >> $backup_dir/log.txt fi
4、进入dbBakShell目录测试运行shell脚本,判断结果是否与预期一致(在dabak目录下生成数据库备份的sql)
cd dbBakShell/
sh ./lzfzMysqlBak.sh
运行结果如下
注意事项:
注意: a.运行shell脚本,出现以下错误: /lzfzMysqlBak.sh:行17: $'\r': 未找到命令 原因:脚本文件在Windows下编辑过,在Windows下每一行结尾是\n\r,而在linux下是\n 需执行以下操作: sed -i 's/\r$//' lzfzMysqlBak.sh
b,运行shell脚本,出现以下错误: mysqldump命令找不到 需运行以下操作: ln -fs /usr/local/mysql/bin/mysqldump(此路径为mysqldump所在目录) /usr/bin 原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
二、 Cron定时任务设置
测试shell脚本没有问题后,设置cron定时器任务。
1、cron命令:
systemctl reload crond.service 重载cron配置
systemctl start crond.service 启动cron
systemctl stop crond.service 停止cron
systemctl status crond.service 查看cron状态
一般情况,服务器cron默认开启
2、设置cron定时器任务
通过命令: crontab -e 创建cron任务文件,文件存放在 /var/spool/cron目录下。该目录独属于各用户的任务文件。例如:使用root账户登录,创建的文件名则为root,如下图所示
命令执行完毕后,会进入文件编辑模式,编辑文件。输入以下cron表达式进行测试
* * * * * echo "hello world" >>/tmp/hello.txt
完成后保存并退出。该表达式意思为每分钟输入“hello word”到tmp目录下的hello.txt文件中。
3、以上测试没有问题后,停止cron服务。使用命令vim /var/spool/cron/root。进入编辑模式对root文件进行修改。更改为如下:
0 1 * * * sh /usr/local/mysql/dbBakShell/lzfzMysqlBak.sh(路径为你的lzfzMysqlBak.sh脚本的路径)
表达式意思为每天晚上1点执行lzfzMysqlBak.sh脚本
4、重载cron配置,启动cron。
end
标签:备份,Linux,cron,sh,mysql,backup,dir From: https://www.cnblogs.com/xh_Blog/p/16835700.html