CentOS定时备份MySQL数据库、定期删除备份文件
1.创建备份目录
# 创建备份目录
mkdir /home/momo/mysql/mysql_bak
# 进入mysql_bak目录
cd /home/momo/mysql/mysql_bak
2.编写备份脚本
# 创建 mysql_backup.sh 文件
touch mysql_backup.sh
# 赋予权限,如果不给予权限的话,该脚本是无法运行的
chmod 777 mysql_backup.sh
# 编辑脚本
vim mysql_backup.sh
# -------------------------以下为脚本内容,不包含本行-------------------------
#!/bin/sh
# mysql定时备份脚本,切记等号左右不能留空格
db_user="root"
db_pwd="123456"
db_name="momo_prod"
bak_dir="/home/momo/mysql/mysql_bak"
time="$(date +"%Y%m%d_%H%M%S")"
# 备份命令,文件名格式[momo_prod_20200120_163059.sql.gz];命令mysqldump需要绝对路径,否则crontab定时任务无法识别
/usr/bin/mysqldump -u$db_user -p$db_pwd -h127.0.0.1 -P3306 $db_name | gzip > $bak_dir/${db_name}_$time.sql.gz
# 定期删除备份,-mtime +90 指删除90天之前的备份文件
find $bak_dir -name "$db_name*.sql.gz" -type f -mtime +90 -exec rm -rf {} \; > /dev/null 2>&1
# -------------------------以上为脚本内容,不包含本行-------------------------
# 测试脚本是否运行正常
./mysql_backup.sh
特别说明,脚本使用了数据库明文密码,存在一定安全隐患。
执行脚本服务器也会提醒:
Using a password on the command line interface can be insecure.
翻译:在命令行界面上使用密码是不安全的。
3.创建定时任务
# 执行命令
crontab -e
# 按 insert 键进入编辑状态
0 4 * * * /home/momo/mysql/mysql_bak/mysql_backup.sh
# 保存并退出后显示 crontab: installing new crontab 时表示成功,文件自动保存在 /var/spool/cron/ 目录。
# 重启crondtab服务
service crond restart
# 查看定时任务
crontab -l
# 查看脚本执行日志
tail -f /var/log/cron
Crontab 语法格式
分 时 日 月 周 执行命令
第 1 列分钟 1~59,每分钟用 * 或者*/1表示,整点分钟数为00或0
第 2 列小时 1~23(0 表示 0 点)
第 3 列日 1~31
第 4 列月 1~12
第 5 列星期 0~6(0 表示星期天)
第 6 列要运行的命令
0 4 * * * /home/momo/mysql/mysql_bak/mysql_backup.sh,此命令表示在每天的凌晨四点执行一次脚本,可自行调整时间