前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql 数据库 定时自动备份

mysql 数据库 定时自动备份

作者头像
挑战者
发布2019-11-18 15:04:00
4.2K0
发布2019-11-18 15:04:00
举报
文章被收录于专栏:java沉淀java沉淀

一、mysql提供了一个mysqldump的工具可以方便的导出导入数据库信息;

一般情况下mysql的数据库安装成功后,mysqldump的位置在:/usr/bin 的目录会有mysqldump这个文件。创建bakmysql.sh脚本。脚本如下:
代码语言:javascript
复制
#!/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备份文件是否符合需求

第一步:将编写好的脚本放到数据库的服务器上如下图:

image.png

第二步:进行授予读写权限:

image.png

第三步:创建bakmysql.sh中的备份文件夹

image.png

第四步:配置linux定时任务
代码语言:javascript
复制
创建定时任务:crontab -e
  [图片上传失败...(image-1638b9-1573886433692)]

图中的为每天的凌晨2点执行数据库备份

crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作作)

查看定时任务:crontab -l

代码语言:javascript
复制
[root@localhost mysqlbak]# crontab -l
0 2 * * * /home/mysqlbak/bakmysql.sh
0 2 * * * /home/mysqlbak/bakmysqljj.sh

我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。

代码语言:javascript
复制
[root@localhost mysqlbak]# crontab -e

0 2 * * * /home/mysqlbak/bakmysql.sh
0 2 * * * /home/mysqlbak/bakmysqljj.sh

crontab的使用

我们常用的命令如下:

代码语言:javascript
复制
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字段,表示每十分钟执行一次

实例

代码语言:javascript
复制
实例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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、mysql提供了一个mysqldump的工具可以方便的导出导入数据库信息;
    • 一般情况下mysql的数据库安装成功后,mysqldump的位置在:/usr/bin 的目录会有mysqldump这个文件。创建bakmysql.sh脚本。脚本如下:
    • 二、使用命令行shell测试执行mysqldump,理解必备的参数,查看生成的sql备份文件是否符合需求
    • crontab的使用
    • 实例
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档