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数据库并删除五天前的备份文件

Linux实现定时备份MySQL数据库并删除30天前的备份文件

linux定时备份MySQL数据库并删除七天前的备份文件