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

news2025/1/12 16:13:38

【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/sh

find /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.coloradmin.cn/o/1023506.html

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

相关文章

Android:报错“Transform‘s input file does not exist”

一、前言: android运行的时候出现如下错误:Transform output file C:\android\Enjoy\app\libs\xxxx.jar does not exist.刚开始我也很懵,我理解的事什么文件没有。上网查完资料,发现是添加依赖的时候有问题。 二、解决方案&…

Redis实战:Redis在Java中的基本使用

本片将介绍 Redis 在 Java 中的基本使用 文章目录 1、使用jedis操作redis1.1、Jedis简介1.2、引入jedis的Maven依赖1.2、获取连接1.3、使用实例 2、对于JedisPooled的使用2.1、使用JedisPooled2.2、关于连接池 3、SpringBoot下使用Redis3.1、引入Maven依赖3.2、配置Redis连接3.…

C语言入门log03

2023.9.19 周二 江苏 软件:visual studio 2017 ;注释快捷键 ctrlkc;取消ctrlku;运行快捷键 ctrlf5 B站视频 P4 按位取反~ int main() {//int arr[] {1,2,3,4,5,6};//4*624//printf("%d\n",sizeof(arr));//24 数组大小//print…

第14章 结构和其他数据形式

本章介绍以下内容: 关键字:struct、union、typedef 运算符:.、-> 什么是C结构,如何创建结构模板和结构变量 如何访问结构的成员,如何编写处理结构的函数 联合和指向函数的指针 设计程序时,最重要的步骤之…

面向面试知识--Lottery项目

面向面试知识–Lottery项目 1.设计模式 为什么需要设计模式? (设计模式是什么?优点有哪些?) 设计模式是一套经过验证的有效的软件开发指导思想/解决方案;提高代码的可重用性和可维护性;提高团…

DAQ高频量化平台:引领Ai高频量化交易模式变革

近年来,数字货币投资市场掀起了一股热潮,以(BTC)为代表的区块链技术带来了巨大的商业变革。数字资产的特点,如无国界、无阶级、无门槛、高流动性和高透明度,吸引了越来越多的人们的关注和认可,创…

linux内网渗透

一、信息收集 主机发现: nmap -sP 192.168.16.0/24 端口探测 masscan -p 1-65535 192.168.16.168 --rate1000 开放端口如下 nmap端口详细信息获取 nmap -sC -p 8888,3306,888,21,80 -A 192.168.16.168 -oA ddd4-port目录扫描 gobuster dir…

Windows安装GPU版本的pytorch详细教程

文章目录 chatGLM2-6B安装教程正式安装 chatGLM2-6B ChatGLM2-6B版本要装pytorch2.0,而且要2.0.1 ,因此CUDA不能用12.0 ,也不能用10.0,只能用11.x 版本。 安装教程 pip install直接下载安装 官网: https://pytorch.…

Python语言学习实战-内置函数all()和any()的使用(附源码和实现效果)

实现功能 all()和any()函数都是Python的内置函数,用于对布尔值进行操作。 all()函数接受一个可迭代对象作为参数,如果可迭代对象中所有元素都为真值(即非零、非空、非None等),则返回True,否则返回False。…

VR全景需要加盟吗?简述VR全景加盟的意义

对于一个刚开始了解VR全景行业的新人来说,VR全景不是有软件、有设备、会拍摄就行了吗?为什么还要找全景平台进行加盟呢?VR全景加盟的作用又是什么呢?那么,我们就不得不多问几个问题了,例如不加盟的话&#…

企业级数据仓库-理论知识

D3 AM 大数据中间件 Hive:将SQL转化成分布式Map/Reduce进行运算,也支持转换成Spark,需要单独安装Hive集群才能访问Spark,支持60%的SQL,延迟比较大。SparkSQL:属于Spark生态圈,Hive on Sqark。HBase: NoSQL,高并发读,适…

霓虹灯效果

源码&#xff1a; void neon(Mat& src,Mat& dst) {for (int i 1; i < src.rows - 1; i) {for (int j 1; j < src.cols - 1; j){int r1, r2, r3, g1, g2, g3, b1, b2, b3;r1 src.at<Vec3b>(i, j)[2];r2 src.at<Vec3b>(i 1, j)[2];r3 src.at<…

Mac 错误zsh: command not found: brew解决方法

打开iterm或其他shell终端&#xff0c;执行命令&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 选择下载brew的源&#xff0c;输入1~6任意都行 根据提示输入Y及开机密码 最后执行&#xff1a;source ~/.z…

Jenkins自动化测试

学习 Jenkins 自动化测试的系列文章 Robot Framework 概念Robot Framework 安装Pycharm Robot Framework 环境搭建Robot Framework 介绍Jenkins 自动化测试 1. Robot Framework 概念 Robot Framework是一个基于Python的&#xff0c;可扩展的关键字驱动的自动化测试框架。 它…

应用(Application)部署容器化演进之路

目录 一、应用程序部署痛点 1.1 应用程序部署流程 1.2 应用程序扩缩容 1.3 应用程序多环境部署 二、 计算资源应用演进过程 2.1 使用物理服务器痛点 2.2 使用虚拟机优点与缺点 2.2.1 使用虚拟机优秀点 2.2.2 使用虚拟机缺点 2.3 使用容器的优点与缺点 2.3.1 使用容器…

中国提出FastSAM:在RTX3090上提升了ViT-H E(32×32) 50倍速度

文章目录 1. Abstract2. 背景介绍3. 框架详情 (Methodology)3.1 Overview3.2 All-instance Segmentation3.3 Prompt-guided Selection4. Experiments4.1 Run-time Efficiency Evaluation4.2 Zero-Shot Edge Detection4.2.1 BSDS5004.2.2 Sobel filtering4.2.3 NMS4.3 Zero-Shot…

最优化方法——Matlab实现黄金分割法一维搜索

文章目录 黄金分割法一维搜索原理算法流程&#xff1a; Matlab代码命令行窗口结果打印&#xff1a;《最优化方法》教材上写成表的答案&#xff1a;黄金分割法的一些性质 黄金分割法一维搜索原理 若保留区间为[x1,b],我们得到的结果是一致的. 该方法称为黄金分割法,实际计算取近…

编译工具:CMake(七) | cmake 常用变量和常用环境变量

编译工具&#xff1a;CMake&#xff08;七&#xff09; | cmake 常用变量和常用环境变量 cmake 变量引用方式cmake 自定义变量的方式cmake 常用变量总结 cmake 变量引用方式 cmake使用${}进行变量的引用。 在 IF 等语句中&#xff0c;是直接使用变量名而不通过${}取值 cmake…

京东全店商品采集教程(详解京东店铺所有商品数据采集步骤方法和代码示例)

随着电商行业的快速发展&#xff0c;京东已成为国内的电商平台之一&#xff0c;拥有着海量的商品资源。对于一些需要大量商品数据的商家或者需求方来说&#xff0c;京东全店采集是非常必要的。本文将详细介绍京东全店采集的步骤和技巧&#xff0c;帮助大家更好地完成数据采集任…

基于Spark的K-means快速聚类算法的优化

摘要 1 引言 2 相关研究 2.1 Spark计算框架 2.2 K-means算法 2.3 K-means++算法