CentOS定时备份MySQL数据库、定期删除备份文件

CentOS Jul 16, 2020 1

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,此命令表示在每天的凌晨四点执行一次脚本,可自行调整时间

目录

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.