Linux 定时备份数据库并删除 N 天以前的数据
Posted 知其黑、受其白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 定时备份数据库并删除 N 天以前的数据相关的知识,希望对你有一定的参考价值。
阅读目录
1、新建文件 auto_bak_data.sh 并赋予执行权限
# 创建文件
touch auto_bak_data.sh
# 给文件执行权限
chmod +x auto_bak_data.sh
2、添加备份命令
vi auto_bak_data.sh
#!/bin/sh
#注意 变量 变量值 不能与=之前有空格
rq=`date +%Y%m%d`
mysqldump -uuser_ofo -proot --single-transaction ofo>/tmp/mysql_data_backup/ofo_$rq.sql;
find /tmp/mysql_data_backup/ -mtime +7 -name "*.sql" -exec rm -rf \\;
使用 --single-transaction
可以保证在备份过程中,整个备份集的数据一致性。
MySQL 常用备份命令
1、备份db1数据库中所有表(包括表结构和数据,不包括创建db1数据库的语句)
mysqldump -h192.168.1.10 -uroot -p db1 > xxx.sql
2、备份db1数据库中所有表(包括表结构和数据,包括创建db1数据库的语句)
mysqldump -h192.168.1.10 -uroot -p --databases db1 > xxx.sql
3、备份db1数据库中t1、t2、t3表(包括表结构和数据,不包括创建db1数据库的语句)
mysqldump -h192.168.1.10 -uroot -p db1 t1 t2 t3 > xxx.sql
4、备份多个(db1、db2)数据库(包括建库语句和所有表的结构和数据)
mysqldump -h192.168.1.10 -uroot -p --databases db1 db2 > xxx.sql
5、备份所有数据库(包括建库语句和所有表的结构和数据)
mysqldump -h192.168.1.10 -uroot -p --all-databases > xxx.sql
6、备份db1数据库中所有表结构(只包括表结构,加-d参数)
mysqldump -h192.168.1.10 -uroot -p -d db1 > xxx.sql
7、备份db1数据库中t1、t2、t3表结构(只包括表结构,加-d参数)
mysqldump -h192.168.1.10 -uroot -p -d db1 t1 t2 t3 > xxx.sql
8、备份db1数据库中所有表数据(只包括表数据,加-t参数)
mysqldump -h192.168.1.10 -uroot -p -t db1 > xxx.sql
9、备份db1数据库中t1、t2、t3表数据(只包括表数据,加-t参数)
mysqldump -h192.168.1.10 -uroot -p -t db1 t1 t2 t3 > xxx.sql
10、恢复命令
mysql -uroot -proot ysknowage < yskowage20190306.sql
3、添加定时任务
1、实例命令
# find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf \\;
find /data/tomcat/logs/ -mtime +30 -name "*.log" -exec rm -rf \\;
说明:
将 /data/tomcat/logs/
目录下所有 30 天前带 ”.log
”的文件删除。
如果去掉 -name "*.log"
此参数 表示将目录下所有文件都删除。
2、计划任务(升级)
若嫌每次手动执行语句太麻烦,可以将这小语句写到一个可执行 shell 脚本文件中,再设置cron 调度执行,那就可以让系统自动去清理相关文件。
2.1 创建 shell
新建一个可执行文件 auto-del-30-days-ago-log.sh
并分配可运行权限。
touch /opt/auto-del-30-days-ago-log.sh
chmod +x auto-del-30-days-ago-log.sh
2.2 编辑 shell 脚本(auto-del-30-days-ago-log.sh)
1、打开编辑器
vi auto-del-30-days-ago-log.sh
2、输入以下内容 -mtime
表示天 -mmin
表示分钟
#!/bin/sh
find /data/tomcat/logs/ -mtime +30 -name "*.log" -exec rm -rf \\;
3、保存退出 (:wq!)
。
2.3 计划任务
1、将 auto-del-30-days-ago-log.sh 执行脚本加入到系统计划任务
# crontab -e
2、设置是每天凌晨 0 点 10 分执行 auto-del-30-days-ago-log.sh 文件进行数据清理:
10 0 * * * /bin/bash /opt/auto-del-30-days-ago-log.sh >/dev/null 2>&1
2.4 启动任务:重启 crond
service crond restart
#centos7 请执行 systemctl restart crond
2.5 瞄一眼是否已经开始任务
crontab -l
PS: 如果需要查看定时任务执行日志:
cat /var/log/cron
完成以上三步,妈妈再也不用担心我的硬盘空间满了,不用手动清理日志文件了。
以上是关于Linux 定时备份数据库并删除 N 天以前的数据的主要内容,如果未能解决你的问题,请参考以下文章
mysql 在linux下如何进行指定的数据库定时备份与删除XX天以前的备份文件?
linux mysql数据库备份 与自动删除30天以前的备份
转-让linux每天定时备份MySQL数据库并删除五天前的备份文件