前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux下MySQL定时自动完整备份(mysqldump+crontab)

Linux下MySQL定时自动完整备份(mysqldump+crontab)

作者头像
KenTalk
发布2018-09-11 11:39:32
2.6K0
发布2018-09-11 11:39:32
举报
文章被收录于专栏:Ken的杂谈Ken的杂谈

一、前言

1、本文主要内容

  • 实现数据库全量备份
  • 实现定时执行备份
  • 实现定时清理7天之前的备份

2、环境信息

环境/工具

说明

MySQL

v5.7.x

mysqldump

MySQL自带的数据导出工具

crontab

功能相当于Windows的任务计划工具

二、备份准备&备份测试

1、备份目录准备

代码语言:javascript
复制
#mysql专用目录
mkdir /mysql
#mysql备份目录
mkdir /mysql/backup
#mysql备份脚本
mkdir /mysql/backup/scripts
#mysql备份文件
mkdir /mysql/backup/files
#mysql备份日志
mkdir /mysql/backup/logs

2、备份脚本准备

  • 新建完整备份脚本
代码语言:javascript
复制
vi /mysql/backup/scripts/backup_full.sh
  • 脚本内容
代码语言:javascript
复制
#!/bin/bash

#备份目录
BACKUP_ROOT=/mysql/backup
BACKUP_FILEDIR=$BACKUP_ROOT/files
BACKUP_LOGDIR=$BACKUP_ROOT/logs

#当前日期
DATE=$(date +%Y%m%d)

######备份######

#查询所有数据库
#-uroot -p123456表示使用root账号执行命令,且root账号的密码为:123456
DATABASES=$(mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema")
#DATABASES=$(mysql -uroot -p123456 -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('sys','mysql','information_schema','performance_schema');" | grep -v "SCHEMA_NAME","ken.io") 
echo $DATABASES
#循环数据库进行备份
for db in $DATABASES
do
echo
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
mysqldump -uroot -pRoot@1024 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
echo
done

echo "done"

3、备份测试&验证

代码语言:javascript
复制
#执行备份脚本
sh /mysql/backup/scripts/backup_full.sh

#查看备份文件
ll /mysql/backup/files -h

#解压指定文件({file}自己替换成备份的文件)
gunzip /mysql/backup/files/{file}

三、定时任务

  • 安装crontab
代码语言:javascript
复制
yum install -y crontab

1、定时执行MySQL完整备份

  • 创建定时备份任务
代码语言:javascript
复制
#添加定时任务
crontab -e

#每天凌晨3点执行
00 3 * * * sh /mysql/backup/scripts/backup_full.sh

#查看定时任务
crontab -l

2、定时清理7天以前的备份

  • 创建文件清理脚本
代码语言:javascript
复制
#创建脚本文件
vi /mysql/backup/scripts/backup_full_clean.sh

#写入以下内容
#!/bin/bash
find /mysql/backup/files -mtime +7 -name "*.gz" -exec rm -rf {} \;
  • 创建定时清理任务
代码语言:javascript
复制
#添加定时任务
crontab -e

#每天凌晨1点执行
00 1 * * * sh /mysql/backup/scripts/backup_full_clean.sh

#查看定时任务
crontab -l

四、备注

1、crontab命令示例

命令

说明

* * * * * command

每1分钟执行一次command

30 * * * * command

每30分钟执行一次command

3,59 * * * * myCommand

每小时的第3和第59分钟执行

3,59 9-18 * * * myCommand

在上午9点到18点的第3和第59分钟执行

3,59 9-18 */2 * * myCommand

每隔两天的上午9点到18点的第3和第59分钟执行

3,59 9-18 * * 1 myCommand

每周一上午9点到18点的第3和第59分钟执行

2、附录

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
    • 1、本文主要内容
      • 2、环境信息
      • 二、备份准备&备份测试
        • 1、备份目录准备
          • 2、备份脚本准备
            • 3、备份测试&验证
            • 三、定时任务
              • 1、定时执行MySQL完整备份
                • 2、定时清理7天以前的备份
                • 四、备注
                  • 1、crontab命令示例
                  • 2、附录
                  相关产品与服务
                  云数据库 MySQL
                  腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档