Linux下MySQL自动备份、定期删除、恢复

版权声明:本文供经验交流,欢迎转载 https://blog.csdn.net/qq_31708763/article/details/86516523

1.备份。

MySQL的安装位置:/usr/share/mysql

备份位置: /usr/local/backup

cd /usr/local/backup
touch dbbackup.sh

vi dbbackup.sh

注意:在/etc/my.cnf配置mysqldump就不会提示:Warning: Using a password on the command line interface can be insecure.

vi /etc/my.cnf 追加:

[mysqldump]
quick
max_allowed_packet = 16M
user = root
password = test123

#!/bin/bash
#备份目录
backup_path=/backup/mysql
#要备份的数据库
db_name=zpzy
#cd $backup_path
#定义日期,
day='date +%Y%m%d%H%M%S'
#rm -rf $day
#mkdir $day
#cd $day
#数据库服务器localhost
host=localhost
#用户名
user=root
#密码
password=test123
#数据保留天数
days=1
#备份
#mysqldump $db_name > /backup/mysql/db_$db_name_$(date +%Y%m%d%H%M%S).sql
#mysqldump -u$user -p$password $db_name > /backup/mysql/db_$db_name_$(date +%Y%m%d%H%M%S).sql
mysqldump -u$user -p$password test > /backup/mysql/db_test_$(date +%Y%m%d%H%M%S).sql
#mysqldump -u$user -p$password --all-databases | gzip > /backup/mysql/db_name$(date +%Y%m%d%H%M%S).sql.gz
mysqldump -u$user -p$password --all-databases | gzip > /backup/mysql/db_name$(date +%Y%m%d%H%M%S).sql.gz
echo "backup db success"
#删除 mtime 表示天
day='date -d "$days days ago" +%Y%m%d'
#rm -rf $day
#find $backup_path -name $db_name"*.sql.gz" -type f -mmin +10 -exec rm -rf {} \;
find $backup_path -name "*.sql" -type f -mmin +1 -exec rm -rf {} \;
find . -name "*.sql" -type f -size 0c | xargs -n 1 rm -f;
echo "delete success"

##进入目录,执行chmod,赋予可执行权限

chmod u+x 2.sh

u 代表用户.
g 代表用户组.
o 代表其他.
a 代表所有.

2.定时作业。

检测是否安装crontab.

rpm -qa | grep cron

如果未安装进行安装:

yum -y install vixie-cron
yum -y install crontabs
vixie-cron 软件包是 cron 的主程序;
crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
service crond start     //启动服务
service crond stop      //关闭服务
service crond restart   //重启服务
service crond reload    //重新载入配置
service crond status    //查看crontab服务状态

##开机启动
chkconfig --level 345 crond on

使用方法, 编辑配置文件:crontab -e  和vi一样操作。

输入:0 3 * * * /backup/3.sh     //此命令表示在每天的凌晨三点执行一次脚本,可自行调整时间

* * * * * /backup/3.sh     //每分钟执行一次

图解:https://www.cnblogs.com/shuaiqing/p/7742382.html

*    *  *  *  *   .........
分 时 日 月 周      命令
第 1 列分钟 1~59,每分钟用 *或者*/1表示,整点分钟数为00或0
第 2 列小时 1~23(0 表示 0 点)
第 3 列日 1~31
第 4 列月 1~12
第 5 列星期 0~6(0 表示星期天)
第 6 列要运行的命令
0 3 * * * /backup.sh,此命令表示在每天的凌晨三点执行一次脚本,可自行调整时间

12 1 * * * /usr/bin/curl https://www.baidu.com
每晚的1:12访问一次百度网站

12 1 2,3,4 * * /usr/bin/curl https://www.baidu.com
每月2、3、4日的1 : 12访问一次百度网站

0,30 1-2 * * * /usr/bin/curl https://www.baidu.com
在每天1:00至2:00之间每隔30分钟访问百度

0 23 * * 6 /usr/bin/curl https://www.baidu.com
每星期六的11: 00 pm访问百度

10 1 * * 6,0 /usr/bin/curl https://www.baidu.com
每周六、周日的1:10访问百度

0 2 1 jan * /usr/bin/curl https://www.baidu.com
1月1号的2点访问百度

* */1 * * * /usr/bin/curl https://www.baidu.com
每一小时访问百度

* 20-7/1 * * * /usr/bin/curl https://www.baidu.com
晚上20点到早上7点之间,每隔一小时访问百度

0 10 4 * mon-wed /usr/bin/curl https://www.baidu.com
每月的4号与每周一到周三的10点访问百度

##每天凌晨3点执行
0 3 * * * root . /home/backup.sh
30 1 * * * root /home/www.osyunwei.com/osyunwei.sh #表示每天凌晨1点30执行备份

查看用户下的定时任务:crontab -l或cat /var/spool/cron/用户名

取消定时任务:crontab -r -u test    //取消test用户任务

crontab -r    //取消自己的任务

3.恢复数据库备份。

# 新建bll库
mysql -u root -p bll < /backup/mysql/db_test_20190117151002.sql
#输入pwd
#如果是恢复压缩的备份文件,可遵循以下格式:
gunzip < [backupfile.sql.gz] | mysql -u [uname] -p[pass] [dbname]

猜你喜欢

转载自blog.csdn.net/qq_31708763/article/details/86516523
今日推荐