mysql定时备份(linux服务器)转
一、mysql提供了一个mysqldump的工具可以方便的导出导入数据库信息;
一般情况下mysql的数据库安装成功后,mysqldump的位置在:/usr/bin 的目录会有mysqldump这个文件。创建bakmysql.sh脚本。脚本如下:
#!/bin/bash
# Name:clear_tomcat_log.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#
# 参数说明:
# backupdir 保存路径的绝对地址
# 代码中 time=` date +%Y%m%d`也可以写为time=”$(date +”%Y%m%d”)” 找到当前日期时间格式
# 其中`符号是TAB键上面的符号,不是ENTER左边的’符号,还有date后要有一个空格。
#mysql_bin_dir:mysql的bin路径;
#dataname:数据库名;
#user:数据库用户名;
#password:用户密码;
#name:自定义备份文件前缀标识
# name:自定义备份文件前缀标识。
# -type f 表示查找普通类型的文件,f表示普通文件。
# -mtime +30 按照文件的更改时间来查找文件,+30表示文件更改时间距现在30天以前;如果是 -mmin +7 表示文件更改时间距现在7分钟以前。
# -exec rm -rf {} \; 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号。
#数据库备份的位置
backupdir=/home/mysqlbak
time=` date +%Y%m%d%H%M%S`
#需要备份的数据库的连接的用户名和密码和数据库
#mysql_bin_dir/mysqldump -uuser -ppassword dataname | gzip > $backupdir/name$time.sql.gz
/usr/bin/mysqldump -u root -pBlqy_scsio_1 scsio | gzip > $backupdir/mysql_$time.sql.gz
#传输至备份服务器,如果保留本机则不需要此步骤
#scp $backupdir/mysql_$time.sql.gz 22.122.51.158:/data/bakup/159/
#find $backupdir -name "name*.sql.gz" -type f -mtime +30 -exec rm -rf {} \;
#保留10日
find $backupdir -name "mysql_*.sql.gz" -type f -mtime +10 -exec rm -rf {} \;
二、使用命令行shell测试执行mysqldump,理解必备的参数,查看生成的sql备份文件是否符合需求
第一步:将编写好的脚本放到数据库的服务器上如下图:
![](http://upload-images.jianshu.io/upload_images/2284182-98a95f987a8a3c4f.png?imageMogr2/auto-orient/strip|imageView2/2/w/617/format/webp)
image.png
第二步:进行授予读写权限:
![](http://upload-images.jianshu.io/upload_images/2284182-052724b06effe63f.png?imageMogr2/auto-orient/strip|imageView2/2/w/583/format/webp)
image.png
第三步:创建bakmysql.sh中的备份文件夹
![](http://upload-images.jianshu.io/upload_images/2284182-33616ebe80ccebb8.png?imageMogr2/auto-orient/strip|imageView2/2/w/1035/format/webp)
image.png
第四步:配置linux定时任务
创建定时任务:crontab -e
[图片上传失败...(image-1638b9-1573886433692)]
图中的为每天的凌晨2点执行数据库备份
crontab [-u username] //省略用户表表示操作当前用户的crontab
-e (编辑工作表)
-l (列出工作表里的命令)
-r (删除工作作)
查看定时任务:crontab -l
[root@localhost mysqlbak]# crontab -l
0 2 * * * /home/mysqlbak/bakmysql.sh
0 2 * * * /home/mysqlbak/bakmysqljj.sh
我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。
[root@localhost mysqlbak]# crontab -e
0 2 * * * /home/mysqlbak/bakmysql.sh
0 2 * * * /home/mysqlbak/bakmysqljj.sh
crontab的使用
我们常用的命令如下:
crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如day字段如果是星号,则表示在满足其它字段的制约条件后每天都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次
实例
实例1:每1分钟执行一次myCommand
* * * * * myCommand
实例2:每小时的第3和第15分钟执行
3,15 * * * * myCommand
实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand
实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb
* */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb
* 23-7/1 * * * /etc/init.d/smb restart
原文:
链接:https://www.jianshu.com/p/076796ee4c16