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 相关文章推荐
MySQL学习总结-基础架构概述
Apr 05 MySQL
MySQL kill不掉线程的原因
May 07 MySQL
MySQL 数据类型选择原则
May 27 MySQL
浅谈mysql返回Boolean类型的几种情况
Jun 04 MySQL
如何避免mysql启动时错误及sock文件作用分析
Jan 22 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
MySQL索引 高效获取数据的数据结构
May 02 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
MySQL范围查询优化的场景实例详解
Jun 10 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
Jun 16 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
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
php的4种常见运行方式
2015/03/20 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
javascript函数中的arguments参数
2010/08/01 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
django简单的前后端分离的数据传输实例 axios
2020/05/18 Javascript
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
python各类经纬度转换的实例代码
2019/08/08 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
Python之字典对象的几种创建方法
2020/09/30 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
Lucene推荐的分页方式是什么?
2015/12/07 面试题
2013年大学生的自我鉴定
2013/10/24 职场文书
小学生新学期寄语
2014/01/19 职场文书
红旗方阵解说词
2014/02/12 职场文书
法律系毕业生求职信
2014/05/28 职场文书
奖励通知
2015/04/22 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP