需求
需要对mysql数据库,每天定时备份
方法
主要方式是:利用crontab工具执行shell脚本,shell脚本中编写备份命令。
如果没有crontab,就先安装crontab。
安装crontab
1、Crontab是什么?
“任务计划”,可以将任何脚本、程序或文档安排在某个最方便的时间运行。通俗的讲就是定时执行某个脚本、程序。
常用于:定时关机、定时检查更新、定时对系统配置、数据库、日志进行备份、定时清理垃圾文件
2、检测是否已安装
crontab --help
3、具体安装请参考1
编写脚本
1、创建备份目录
mkdir DB-mysql
2、脚本模板
#!/bin/sh # Database info DB_USER="batsing" DB_PASS="batsingpw" DB_HOST="localhost" DB_NAME="timepusher" # Others vars BIN_DIR="/usr/bin" #the mysql bin path BCK_DIR="/mnt/mysqlBackup" #the backup file directory DATE=`date +%F` # TODO # /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_`date +%F`.sql $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > $BCK_DIR/db_$DATE.sql #还原数据库 #用mysql-front导入前一天的 *.sql 文件即可恢复数据
开放权限:
chmod 777 sqlAutoBak.sh
设置计划
1、执行命令
crontab -e
2、添加计划
*/1 * * * * /usr/local/include/wx-code/sqlAutoBak.sh
意思是:每一分钟执行一次shell脚本
30 3 * * * /usr/local/include/wx-code/sqlAutoBak.sh
意思是:每天凌晨三点半执行一次shell脚本
更多时间格式:
# 例如:db_2021-08-01.sql.zip #DATE=`date +%F` # 例如:db_20210801_161156.sql.zip #DATE=`date +%Y%m%d_%H%M%S` # 例如:db_2021-08-01 16:17:37.sql.zip DATE=`date "+%F %T"`