【MySQL系列】- MySQL自动备份详解

【MySQL系列】- MySQL自动备份详解

文章目录

  • 【MySQL系列】- MySQL自动备份详解
    • 一、需求背景
    • 二、Windows mysql自动备份方法
      • 2.1 复制date文件夹备份
        • 实验备份环境
        • 创建bat直接备份脚本
      • 2 .2 mysqldump备份成sql文件
        • 创建mysqldump备份脚本
      • 2 .3 利用WinRAR对MySQL数据库进行定时备份
      • 创建WinRAR备份脚本
    • 三、Linux Mysql自动备份
      • 3.1 查看磁盘空间情况
      • 3.2 创建备份目录
      • 3.3 编写备份shell脚本
      • 3.4 Shell压缩备份
      • 3.5 清除历史备份文件
      • 3.6 添加计划任务
      • 3.7 测试任务是否执行
    • 四、参考链接

在这里插入图片描述

一、需求背景

数据库在一个系统中处于非常重要的地位,是整个系统底层也是核心,当数据库被误删会造成非常严重的失误,所有数据库备份可以说是重中之重。本文将梳理Mysql在windows与Liunx中的备份方法。

二、Windows mysql自动备份方法

2.1 复制date文件夹备份

  • 实验备份环境

  1. MySQL 安装位置:D:\Program Files\MySQL
  2. 数据库名称为:GoyeerDB
  3. 数据库备份目的地:F:\Mysql\db_bak\
  • 创建bat直接备份脚本

*******************************Code Start*****************************
net stop mysql
xcopy D:\Program Files\MySQL\data\GoyeerDB\*.* F:\Mysql\db_bak\goyeerdb_bak\%date:~0,10%\ /S /I
net start mysql
*******************************Code End *****************************

然后使用Windows的“计划任务”定时执行该批处理脚本即可。(例如:每天凌晨1点执行back_db.bat)
解释:备份和恢复的操作都比较简单,完整性比较高,控制备份周期比较灵活,例如,用%date:0,10%。此方法适合有独立主机但对mysql没有管理经验的用户。缺点是占用空间比较多,备份期间mysql会短时间断开(例如:针对30M左右的数据库耗时5s左右),针对%date:0,10%的用法参考 .

2 .2 mysqldump备份成sql文件

  • 创建mysqldump备份脚本

rem *******************************Code Start*****************************
@echo off
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
D:\Program Files\MySQL\bin\mysqldump --opt -u root --password=123456 GoyeerDB > F:\Mysql\goyeerdb_bak\goyeerdb_%Ymd%.sql
@echo on
rem *******************************Code End*******************************

将以上代码保存为backup_db.bat
然后使用Windows的“计划任务”定时执行该脚本即可。(例如:每天凌晨2点执行back_db.bat)

说明:此方法可以不用关闭数据库,并且可以按每一天的时间来名称备份文件。

通过%date:5,2%来组合得出当前日期,组合的效果为yyyymmdd,date命令得到的日期格式默认为yyyy-mm-dd(如果不是此格式可以通过pause命令来暂停命令行窗口看通过%date:,20%得到的当前计算机日期格式),所以通过%date:5,2%即可得到日期中的第五个字符开始的两个字符,例如今天为2009-02-05,通过%date:5,2%则可以得到02。(日期的字符串的下标是从0开始的)

2 .3 利用WinRAR对MySQL数据库进行定时备份

对于MySQL的备份,最好的方法就是直接备份MySQL数据库的Data目录。下面提供了一个利用WinRAR来对Data目录进行定时备份的方法。

首先当然要把WinRAR安装到计算机上。

创建WinRAR备份脚本

*******************************Code Start***************************
net stop mysql
c:\Program Files\winrar\winrar a -ag -k -r -s F:\Mysql\goyeerdb_bak\goyeerdb_%Ymd%.rar   D:\Program Files\MySQL\data\GoyeerDB\
net start mysql
*******************************Code End*****************************

保存,然后将文本文件的扩展名修改成CMD。进入控制面版,打开计划任务,双击“添加计划任务”。在计划任务向导中找到刚才的CMD文件,接着为这个任务指定一个运行时间和运行时使用的账号密码就可以了。 这种方法缺点是占用时间比较多,备份期间压缩需要时间,mysql断开比第一种方法更多的时间,但是对于文件命名很好。

三、Linux Mysql自动备份

3.1 查看磁盘空间情况

既然是定时备份,就要选择一个空间充足的磁盘空间,避免出现因空间不足导致备份失败,数据丢失的恶果,推荐使用NAS做为备份存储。

df -h  #查看磁盘空间

3.2 创建备份目录

在有磁盘空间的目录上创建文件夹,下面例子已在/home文件夹下创建目录

cd /home     #切换目录到home下
mkdir backup #常见目录并进入backup
cd backup

3.3 编写备份shell脚本

语法:mysqldump -u数据库用户名 -p密码 数据库名称 > /路径/备份文件名.sql

#!/bin/bash
mysqldump -uroot -p123456 demo > /home/backup/demo_$(date +%Y%m%d_%H%M%S).sql  #按日期时间备份

database_name_ ( d a t e + (date +%Y%m%d%H%M%S)为生成的备份文件名称,可自定义,这里文件名是数据库名 + 下划线 + 具体时间, (date+(date +%Y%m%d%H%M%S)可获取到当前日期,%Y %m %d %H %M %S 分别对应年、月、日、时、分、秒

3.4 Shell压缩备份

语法:mysqldump -u数据库用户名 -p密码 数据库名称 | gzip > /路径/备份文件名.sql.gz

#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz

3.5 清除历史备份文件

#!/bin/shfind /usr/local/backups -mtime +10 -name "*DatabaseName_*" -exec rm -rf {} \;

#删除七天之前的备份
find $backup_dir -name $db_name".sql.gz" -type f -mtime +7 -exec rm -rf {} ; > /dev/null 2>&1
#删除一分钟之前的备份
find $backup_dir -name $db_name".sql.gz" -type f -mmin +1 -exec rm -rf {} ; > /dev/null 2>&1

关键字说明

-type f 表示查找普通类型的文件,f 表示普通文件,可不写
-mtime +7 按照文件的更改时间来查找文件,+7表示文件更改时间距现在7天以前;如果是-mmin +7表示文件更改时间距现在7分钟以前
-exec rm {} ; 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对{ },一个空格和一个\,最后是一个分号;
/dev/null 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的& 表示让该命令在后台执行。

3.6 添加计划任务

执行命令:crontab -e

*/1 * * * * /home/backup/bkDatabaseName.sh

分 时 日 月 周 执行命令
第 1 列 分钟 1~59,每分钟用 或者/1表示,整点分钟数为00或0
第 2 列 小时 1~23(0 表示 0 点)
第 3 列 日 1~31
第 4 列 月 1~12
第 5 列 星期 0~6(0 表示星期天)
第 6 列 要运行的命令
例子 :0 3 * * * /backup.sh,此命令表示在每天的凌晨三点执行一次脚本,可自行调整时间

3.7 测试任务是否执行

如果任务执行失败了,可以通过以下命令查看任务日志:

tail -f /var/log/cron

四、参考链接

  1. https://blog.csdn.net/qq_32684319/article/details/86996369
  2. https://www.jianshu.com/p/be1e581acb8e
  3. https://www.cnblogs.com/taomylife/p/8022253.html
  4. https://blog.csdn.net/stonexmx/article/details/72974500

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 白天黑夜模式设置

白天黑夜模式是一种动态的UI模式,根据当前时间或用户设置的偏好,在白天和黑夜之间进行切换。它通过调整应用程序的颜色、亮度和其他可视化元素来提供更加舒适和易读的用户界面。 一、简单设置 UiModeManager 是用于管理和控制用户界面模式(UI Mode)。它提供了一组方法,允…

【每日一题】154. 寻找旋转排序数组中的最小值 II

154. 寻找旋转排序数组中的最小值 II - 力扣(LeetCode) 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums [0,1,4,4,5,6,7] 在变化后可能得到&#xff1…

CListCtrl控件为只显示一列,持滚动显示其他,不用SetScrollFlags

CListCtrl控件为只显示一列,持滚动显示其他,不用SetScrollFlags 2023/9/5 下午4:52:58 如果您不希望使用 SetScrollFlags 函数来设置滚动条样式,可以使用以下代码将 CListCtrl 控件设置为只显示一列,并支持滚动显示其他内容: cpp // 设置控件样式和属性 m_listCtrl.Se…

基于SSM的智慧城市实验室主页系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

linux学习实操计划0103-安装软件

本系列内容全部给基于Ubuntu操作系统。 系统版本:#32~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 18 10:40:13 UTC 1 安装deb格式软件 Debian包是Unixar的标准归档,将包文件信息以及包内容,经过gzip和tar打包而成。 处理这些包的经典程序是…

git基本手册

Git and GitHub for Beginners Tutorial - YouTube Kevin Stratvert git config --global user.name “xxx” git config --global user.email xxxxx.com 设置默认分支 git config --global init.default branch main git config -h查看帮助 详细帮助 git help config 清除 cl…

vue国际化教程

需求背景 项目需求要做国际化,结果网上找了好几篇文章,没有一个可以一次性搞定,现在这里总结一下。首先,我们分为两部分处理,一个是前端页面的静态文字,这个由前端vue.json自行处理。第二部分就是后端的错…

剑指YOLOv7改进最新重参数化结构RepViT| 最新开源移动端网络架构ICCV 2023,1.3ms 延迟,速度贼快

💡本篇内容:剑指YOLOv7改进最新重参数化结构RepViT| 最新开源移动端网络架构ICCV 2023,1.3ms 延迟,速度贼快 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv7 按步骤操作运行改进后的代码即可 💡:重点:该专栏《剑指YOLOv7原创改进》只更新改进 YOLOv7 模型的…

《计算机视觉中的多视图几何》笔记(5)

5 Algorithm Evaluation and Error Analysis 本章主要讲述对算法的验证和误差分析。 概述了两种计算这种不确定性(协方差)的方法。第一个基于线性近似值,涉及串联各种雅各布表达式,第二个是更容易实施蒙特卡洛方法。 文章目录 …

Pytorch面试题整理(2023.09.10)

1、pytorch如何微调fine tuning? 在加载了预训练模型参数之后,需要finetuning 模型,可以使用不同方式finetune。 局部微调:加载了模型参数后,只想调节最后几层,其他层不训练,也就是不进行梯度…

从命令行管理文件(二)

1.数据流和重定向 1.2数据流 标准输入 (standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入 标准输出(standard output,简称stdout): 默认情况下,命令执行所回传正确的信息会输出到屏幕上 标准错误输出(standard …

阿里云acp云计算认证考试科目有哪些?

阿里云ACP云计算认证考试科目包括以下内容: 阿里云云计算基础知识:包括云计算的定义、特点、服务模式、部署模式、虚拟化技术等相关知识。阿里云产品:包括阿里云ECS、RDS、SLB、OSS、DNS等核心产品的架构、使用方法、优化技巧等相关知识。云…

2023年华为杯数学建模研赛D题思路解析+代码+论文

下文包含:2023华为杯研究生数学建模竞赛(研赛)D题思路解析代码参考论文等及如何准备数学建模竞赛(22号比赛开始后逐步更新) C君将会第一时间发布选题建议、所有题目的思路解析、相关代码、参考文献、参考论文等多项资…

Ui自动化测试上传文件方法都在这里了

前言 实施UI自动化测试的时候,经常会遇见上传文件的操作,那么对于上传文件你知道几种方法呢?今天我们就总结一下几种常用的上传文件的方法,并分析一下每个方法的优点和缺点以及哪种方法效率,稳定性更高 被测HTML代码…

【计算机基础】Git系列2:配置多个SSH

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

qml布局管理器介绍与代码演示

Qt Quick中的布局管理器与Qt Widgets中的相似,它与定位器的不同之处在于:布局管理器会自动调整子Item的尺寸来适应界面大小的变化。 GridLayout qml中比较复杂的是GridLayout,在使用时,需要包含QtQuick.Layouts。 RowLayout和 ColumnLayout实际上可以看作是GridLayout的…

大数据课程L7——网站流量项目的操作步骤

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解网站流量项目的Spark与HBase整合; ⚪ 掌握网站流量项目的实时流业务处理; 一、 Spark 与 HBase 整合基础 1. 实现步骤: 1. 启动…

各个国家商品条形码

什么是商品条码? 我们常说的条形码其实就是商品条码,它是由一组规则排列的条、空及其对应代码组成,表示商品代码的条码符号,主要用于零售商品、储运包装商品、物流单元、参与方位置等的代码与条码标识。通俗来讲,商品…

Antmonsido(AMS)早期预售(IDO)如何参与?

Antmonsido是Kucoin两年前开始孵化的项目,第一款全链游戏已经开发完成,项目的NFT已经上过币安,前两周刚完成180万美元融资,投资机构也都很强势,IDO注册人数超过三万,海外热度超高,19号上GATE&am…

MyEclipse报错javax/persistence/EntityManagerFactory

MyEclipse报错&#xff1a; Build path is incomplete. Cannot find class file for javax/persistence/EntityManagerFactory 解决方案&#xff1a; 引入依赖 <dependency><groupId>javax.persistence</groupId> <artifactId>persistence-api</a…