centos6.5下使用crontab定时备份mysql数据库

1.建备份文件夹:
  mkdir mysql_data_bak

[root@10 ~]# cd /home/
[root@10 home]# mkdir mysql_data_bak

2.建脚本文件:
touch autobackupmysql.sh

[root@10 ~]# touch autobackupmysql.sh
3.打开文件
   vi autobackupmysql.sh
   在脚本中加入如下内容: -u和-p指的是数据库用户名和密码 Big指的要备份的数据库名称
  /usr/bin/mysqldump -uroot -p1234 Big >>/home/mysql_data_bak/$filename.sql


[root@10 ~]# vi autobackupmysql.sh 
filename=`date +%Y%m%d`
/usr/bin/mysqldump -uroot -p1234 Big >>/home/mysql_data_bak/$filename.sql


4.检查有没安装crond,
   [root@10 ~]# crontab -l
    no crontab for root
   [root@10 ~]# service crond status

如果没有,先安装
yum -y install vixie-cron
yum -y install crontabs

[root@10 ~]# yum -y install vixie-cron
[root@10 ~]# yum -y install crontabs
启动服务 :service crond start

5.在CentOS系统中加入开机自动启动: chkconfig --level 345 crond on
  [root@10 tmp]# chkconfig --level 345 crond on

    crontab -e
  [root@10 tmp]# crontab -e
     加入内容:00 22 * * * source /root/autobackupmysql.sh  
     每天晚上22点运行此文件,对数据库进行备份

  [root@10 tmp]#service crond restart
6.
  方式一:图形界面完成导入:
  首先,在centos mysql数据库里新建一个数据库Big,创建一张表user,插入几条数据。
执行定时备份,生成20180317.sql,拷贝下来.
  然后在mysql数据库中新建一个数据库,命名YU,在此数据库下运行该sql文件,导入数据成功.


  方式二:mysql命令界面完成导入
       1>进入数据库
       [root@10 home]# mysql -uroot -p
        Enter password: 
       2>创建新的数据库并指定字符编码
         mysql> CREATE database YU DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
             -> ;
       3>指定数据库
         mysql> use YU;
         Database changed
       4>执行.sql文件完成数据的导入
         mysql> source /home/mysql_data_bak/20180317.sql

7.如何实现自动删除备份的sql,功能是假如每一分钟备份一次,删除前五分钟的记录
  首先,修改[root@10 ~]# vi autobackupmysql.sh 
  添加如下
filename=`date +%Y%m%d%H%M`
/usr/bin/mysqldump -uroot -p1234 Big >>/home/mysql_data_bak/name$filename.sql
#
find /home/mysql_data_bak -name "name*.sql" -type f -mmin +5 -exec rm {} \; > /dev/null 2>&1

再修改 
[root@10 tmp]# crontab -e
     加入内容:*/1 * * * * source /root/autobackupmysql.sh

重启服务即可,由于每一分钟备份一次,只会删除前5分钟的,但是一直会保存当前系统时间之前的5分钟记录;
[root@10 mysql_data_bak]# ll
total 24
-rw-r--r--. 1 root root 1998 Mar 18 09:42 name201803180942.sql
-rw-r--r--. 1 root root 1998 Mar 18 09:43 name201803180943.sql
-rw-r--r--. 1 root root 1998 Mar 18 09:44 name201803180944.sql
-rw-r--r--. 1 root root 1998 Mar 18 09:45 name201803180945.sql
-rw-r--r--. 1 root root 1998 Mar 18 09:46 name201803180946.sql
-rw-r--r--. 1 root root 1998 Mar 18 09:47 name201803180947.sql

8.如何备份成压缩sql格式,使用gzip
  首先,修改[root@10 ~]# vi autobackupmysql.sh 
filename=`date +%Y%m%d%H%M`
/usr/bin/mysqldump -uroot -p1234 Big | gzip >/home/mysql_data_bak/name$filename.sql.gz
#
find /home/mysql_data_bak -name "name*.sql.gz" -type f -mmin +5 -exec rm {} \; > /dev/null 2>&1
  然后重启服务
  [root@10 tmp]#service crond restart
  [root@10 mysql_data_bak]# ll
total 20
-rw-r--r--. 1 root root 775 Mar 18 09:56 name201803180956.sql.gz
-rw-r--r--. 1 root root 775 Mar 18 09:57 name201803180957.sql.gz
-rw-r--r--. 1 root root 775 Mar 18 09:58 name201803180958.sql.gz
-rw-r--r--. 1 root root 775 Mar 18 09:59 name201803180959.sql.gz
-rw-r--r--. 1 root root 783 Mar 18 10:00 name201803181000.sql.gz
   可以进行对该文件进行解压下载到本地,进行解压恢复sql
 新建一个数据库,运行该文件解压后生成.sql文件,并执行该文件即可。
9.
#
find $backupdir -name "name_*.sql.gz" -type f -mtime +5 -exec rm {} \; > /dev/null 2>&1

说明:
代码中time=` date +%Y%m%d%H `也可以写为time="$(date +"%Y%m%d$H")"
其中`符号是TAB键上面的符号,不是ENTER左边的'符号,还有date后要有一个空格。
mysql_bin_dir:mysql的bin路径;
dataname:数据库名;
user:数据库用户名;
password:用户密码;
name:自定义备份文件前缀标识。
-type f 表示查找普通类型的文件,f表示普通文件。
-mtime +5 按照文件的更改时间来查找文件,+5表示文件更改时间距现在5天以前;如果是 -mmin +5 表示文件更改时间距现在5分钟以前。
-exec rm {} \; 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。
/dev/null 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的& 表示让该命令在后台执行。


10.定时删除备份
  1>只删除前两天的备份文件
     [root@syiaas32 ~]# vi autobackupmysql.sh 
         filename=`date +%Y%m%d%H%M`
 /usr/bin/mysqldump -uroot -p1234  Big >>/home/mysql_data_bak/name$filename.sql
         #只删除前3天的备份文件
         find /home/mysql_data_bak -name "name*.sql" -type f -mtime +3 -exec rm {} \; > /dev/null 2>&1
  2>每天晚上20点开始备份
     [root@syiaas32 home]# crontab -e
         00 20 * * * source /root/autobackupmysql.sh
11.如何查看crontab 是否执行
   [root@syiaas32 /]# tail -f /var/spool/mail/root


       
       


         
   
  

转载于:https://my.oschina.net/shanesen/blog/1647453

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值