具体诉求
公司数据库存放于NAS共享的路径上,NAS服务器通过备份服务器,每天会备份。可是数据是最重要的资产,多一个备份安全性更高。
手头有一台现成的CentOS8云服务器,没有太多的用途,正好用作数据备份使用,如何备份到云服务器的操作就不多介绍了,公众号前面的文章都有类似的。无非就是云服务器上弄个NFS共享到数据库服务器上加载成一个目录。然后使用脚本将数据库备份到云服务器空间,后期再通过linux自带的定时任务工具,实现自动备份。
脚本分享
#!/bin/bash
#one backup every,totol 31 days
number=31
#path of backup
backup_dir=/data/backup
#date
dd=`date +%Y-%m-%d-%H-%M-%S`
tm=$(date '+%Y-%m-%d %T')
#tool
tool=mysqldump
#user
username=root
#password
password=‘请更换为数据库密码’
#database
database_name=ErpDb
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir
fi
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
echo "$tm create $backup_dir/$database_name-$dd.dump" >> $backup_dir/log.txt
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9}' | head -1`
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
rm $delfile
echo "$tm delete $delfile" >> $backup_dir/log.txt
fi
脚本解析
其实脚本很简单,只是程序员习惯于用变量表示而已。最上面设置了几个变量,分别是:
备份保留的份数:31份,就是一个月内每天一份的计划;
备份文件路径:这个就是云服务器映射过来的路径
时间变量:定义时间变量是为了给备份文件命名的时候带上时间,另外写日志的时候留下操作的时间。
下面定义采用的工具、数据库名称、账号、密码等。
下面的操作很容易看懂,要是不明白的话,直接将变量更改成数值,命令就完整显示出来了。分别是:
创建路径
备份数据库
写入日志文件
判断备份文件个数并删除最早的文件。
备份结果
因为近期还在整数据库,下图为手动执行脚本的备份结果。

日志文件的记录信息为:

感谢各位的阅读,本公众号会持续分享实际的服务案例,若感兴趣请关注该公众号。
需要作者分享内容的资源,请关注此公众号,后台发送 【共享资源】 获取下载链接
需要上门解决问题时,请及时联系我们!