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