• 欢迎访问圣洁的白莲!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

crontab自动备份数据库

Linux 菜根譚 5个月前 (06-30) 59次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

前言

前几天,我在学习shell编程的时候,正好学到使用shell脚本备份数据库,今天正好学到使用crontab命令来周期性的执行脚本,起到自动化的作用,在百度转悠了一圈,决定将自己几天前写的备份数据库的脚本和crontab命令结合,每天定时备份数据库。

备份数据库脚本

#!/bin/bash
#backup_mysql

Date=`date +%Y.%m.%d.%T`	#日期
mysqldb=***			#数据库名称
mysqluser=****			#有权限操作数据库的用户
mysqlpw=*****		        #数据库密码
mysqlcmd=/usr/bin/mysqldump	#mysqldump备份数据库命令
mysql_back_name=$Date.sql.zip	#备份出数据库的名称
mysql_check=$mysqldb+$mysql_back_name	#用于检查数据库是否备份

if [ $UID -ne 0 ] ;then			#判断当前用户是不是root账户
	echo $Date "Must to be user root to exec shell"  >> /www/wwwroot/backup/mysql_backup.log	#将错误记录到日志中
	exit	#退出脚本
fi

if [ ! -f $mysql_check ];then		#判断数据库是否备份过
	echo -e "\033[32m$Date The $mysql_check file does not exist\033[0m" >> /www/wwwroot/backup/mysql_backup.log		#将操作记录到日志中
else
	echo -e "\033[32m$Date The $mysql_check is exists..." >> /www/wwwroot/backup/mysql_backup.log
	exit
fi

#mysql backup commend

$mysqlcmd -u $mysqluser -p$mysqlpw --databases $mysqldb | zip > /www/wwwroot/shell/$mysqldb+$mysql_back_name		#备份数据库


if [ $? -eq 0 ];then		#判断备份数据库的命令是否执行成功
	echo -e "\033[32m$Date The mysql backup $mysqldb successful!\033[0m" >> /www/wwwroot/backup/mysql_backup.log
else
	echo -e "\033[32m$Date The mysql backup $mysqldb failed,please check shell script\033[0m" >> /www/wwwroot/backup/mysql_backup.log
fi

脚本下载:备份数据库脚本

提取码:127b 

添加到crontab

在这里我就不介绍如何使用crontab了。

添加执行周期:

crontab -e
加入以下命令:
30 1 */2 * *  sh /www/wwwroot/shell/back_mysql.sh

我在这里设置的是每隔两天在1点30分的时候,执行备份数据库的脚本。

结语

作为个人博客,周期性的备份数据库是很有必要的,避免因服务器故障导致数据的丢失而带来的损失。

由于博主现在正在学习的道路上,写的脚本还有很大的改进,如果你发现其中代码有错误,欢迎指正。

浩瀚学海,虔诚分享!


圣洁的白莲 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:crontab自动备份数据库
喜欢 (0)
[]
分享 (0)
关于作者:
浩瀚学海,虔诚分享!

您必须 登录 才能发表评论!