数据定时备份

1.创建备份目录

cd /home
mkdir backup
cd backup

2.创建备份shell脚本

 

vim bkDatabaseName.sh

输入并粘贴以下内容(注意把以下命令中的DatabaseName改为实际数据库名称):
(1)不压缩:
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql
(2)压缩:
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz 

注意:
A.把username改为实际数据库用户名
B.把password改为实际数据库密码
C.把DatabaseName改为实际备份的数据库名称
例子:
(1)
#!/bin/bash
mysqldump -uroot -p'root' ry-vue > /home/backup/ry-vue_$(date +%Y%m%d_%H%M%S).sql
(2)
#!/bin/bash
mysqldump -uroot -p'root' ry-vue | gzip > /home/backup/ry-vue_$(date +%Y%m%d_%H%M%S).sql.gz

 

 

3.修改shell脚本可执行权限

 

chmod 777 bkDatabaseName.sh

 

 

4.测试shell脚本

 

./bkDatabaseName.sh

 

 

5.添加定时任务(每日凌晨31分整)

crontab -e
并写入:
1 3 * * * /home/backup/bkDatabaseName.sh

 注意:如果/home/backup/bkDatabaseName.sh脚本有docker exec命令不要加-it参数,否则定时任务执行失败,因为 -it 参数就开启了一个终端,计划任务是无法进入任何终端的

 

6.测试定时任务

执行几次ls命令查看备份目录是否有文件创建;如果任务执行失败,查看以下日志:

tailf /var/log/cron

 

7.删除3天前的备份(/home/backup/delete.sh)

 

(1)不压缩
#!/bin/bash	
find /home/backup/ -mtime +3 -name "*.sql" | xargs -i mv {} /home/backup/recycle/;
find /home/recycle/ -name "*.sql" -exec rm -rf {} \;
#find /home/backup/ -maxdepth 1 -type f -mtime +3 -name "*.sql" |xargs rm -rf

(2)压缩
#!/bin/bash
find /home/backup/ -mtime +3 -name "*.sql.gz" | xargs -i mv {} /home/backup/recycle/;
find /home/recycle/ -name "*.sql.gz" -exec rm -rf {} \;
#find /home/backup/ -maxdepth 1 -type f -mtime +3 -name "*.sql.gz" |xargs rm -rf

(3)定时任务(每日凌晨3点30分整)
crontab -e 
并写入:
30 3 * * * /home/backup/delete.sh

 

posted @ 2021-05-06 15:05  詹姆溪  阅读(62)  评论(0编辑  收藏  举报