Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写


Posted in MySQL onAugust 02, 2021

一、需求说明:

数据库的备份,对于生产环境来说尤为重要,数据库的备份分为物理备份和逻辑备份。

物理备份:使用相关的复制命令直接将数据库的数据目录中的数据复制一份货多分副本,常使用工具:XtraBackup。

逻辑备份:使用mysql自带的mysqldump命令把需要备份的数据以sql语句的形式存储起来。

下边我们将使用mysqldump命令进行数据备份。使用自动任务进行每日备份。

二、执行文件编写:

1、创建文件夹,执行的sh文件和数据库的备份文件都存在这个文件夹下

mkdir /usr/local/mysqlDataBackup
cd /usr/local/mysqlDataBackup

2、创建sh文件并编写shell脚本:

backup.sh

单数据库脚本:

#!/bin/bash
#This scripts is for auto backup databases
#create by weijb at 2021-07-28
#delete data from 7 day before

DATAdelete=‘date +%F -d "-7 day"
rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz

MYSQL_CMD=/usr/bin/mysqldump
MYSQL_USER=账号
MYSQL_PWD=密码
DATA=‘date +%F‘
DBname=test_db

${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz

解析:

 (1)删除7天前的备份数据,节省空间:
    DATAdelete=‘date +%F -d "-7 day"‘    当前时间前7天的日期

              rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz 删除前7天的备份数据,节省空间,只保留最新的7天数据

  (2)定义变量:  
    MYSQL_CMD=/usr/bin/mysqldump    mysql自带的mysqldump命令所在的位置
    MYSQL_USER=账号                  mysql连接的账号
    MYSQL_PWD=密码            mysql连接的密码
    DATA=‘date +%F‘                  获取当前日期,%F 表示格式:%Y-%m-%d 例如:2021-07-28
    DBname=test_db                   需要备份的数据库名,当前的数据库名为:test_db
  (3)执行备份命令: 
    ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz
    --compact 优化输出信息
    -B        包含建库的语句
    gzip      压缩备份,减少备份的文件大小
    usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz   备份文件保存的路径以及名字

多数据库备份:

#!/bin/bash
#This scripts is for auto backup databases
#create by weijb at 2021-07-28
#delete data from 7 day before
DATAdelete=‘date +%F -d "-7 day"‘
rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz

MYSQL_CMD=/usr/bin/mysqldump
MYSQL_USER=账号
MYSQL_PWD=密码
DATA=‘date +%F‘
DBname=‘ mysql -u${MYSQL_USER} -p${MYSQL_PWD} -e "show databases;" | sed '1,5d'‘

for DBname in ${DBname}
do 
  ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz
done

解析:

  (1) 截取需要备份的数据库

 -e "show databases;" | sed '1,5d'‘ 显示所有的数据库,并截取mysql自带的information_schema、mysql、performance_schema、sys意外的所有数据库。

(2) 其他的和单库备份相同

3、验证脚本是否编写成功:

(1)脚本文件授权:

cd /usr/local/mysqlDataBackupchmod +x backup.sh

(2) 执行脚本:

sh backup.sh

/usr/local/mysqlDataBackup 下生成文件说明编写成功。

4、编写自动任务:

每天凌晨1点对数据库进行备份:

crontab -e

输入i进行编辑:

00 01 * * * /usr/local/mysqlDataBackup/backup.sh

使用esc退出文件编辑,输入 :wq 保存并退出。

查询任务是否设置成功:

crontab -l

重启crontab服务:

service crond restart

至此,mysql的自动任务脚本备份数据库到此完成。

到此这篇关于Centos7中MySQL数据库使用mysqldump进行每日自动备份的文章就介绍到这了,更多相关MySQL使用mysqldump自动备份内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
如何使用Maxwell实时同步mysql数据
Apr 08 MySQL
浅谈Mysql多表连接查询的执行细节
Apr 24 MySQL
MySQL 8.0 Online DDL快速加列的相关总结
Jun 02 MySQL
MySQL系列之开篇 MySQL关系型数据库基础概念
Jul 02 MySQL
MySQL分区表实现按月份归类
Nov 01 MySQL
mysql5.6主从搭建以及不同步问题详解
Dec 04 MySQL
MySQL创建表操作命令分享
Mar 25 MySQL
mysql中数据库覆盖导入的几种方式总结
Mar 25 MySQL
Mysql开启外网访问
May 15 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
Jun 28 MySQL
mysql sock 文件解析及作用讲解
Jul 15 MySQL
MySql统计函数COUNT的具体使用详解
Aug 14 MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
使用ORM新增数据在Mysql中的操作步骤
Jul 26 #MySQL
mysql脏页是什么
Jul 26 #MySQL
为什么MySQL分页用limit会越来越慢
Jul 25 #MySQL
MySQL深度分页(千万级数据量如何快速分页)
ORM模型框架操作mysql数据库的方法
mysql 直接拷贝data 目录下文件还原数据的实现
You might like
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
php设计模式 Builder(建造者模式)
2011/06/26 PHP
php函数的常用方法及注意之处小结
2011/07/10 PHP
解析php中call_user_func_array的作用
2013/06/07 PHP
php截取视频指定帧为图片
2016/05/16 PHP
php实现的双色球算法示例
2017/06/20 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
详细介绍Python中的偏函数
2015/04/27 Python
python 读取DICOM头文件的实例
2018/05/07 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
原装进口全世界:天猫国际
2016/08/03 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
委托书如何写
2014/08/30 职场文书
2015年副班长工作总结
2015/05/15 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
nginx 配置缓存
2022/05/11 Servers