MySQL数据库备份方法

一、数据库备份的分类

1.按不同维度分类

从物理与逻辑的角度,备份可分为

物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份

物理备份方法

  • 冷备份(脱机备份):是在关闭数据库的时候进行的
  • 热备份(联机备份):数据库处于运行状态,依赖于数据库的日志文件
  • 温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作
  • 逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份

2.从数据库的备份策略角度,备份可分为

完全备份:每次对数据库进行完整的备份

差异备份:备份自从上次完全备份之后被修改过的文件

增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份

二.常见的备份方法

1.物理冷备

备份时数据库处于关闭状态,直接打包数据库文件

备份速度快,恢复时也是最简单的

2.专用备份工具mydump或mysqlhotcopy

mysqldump常用的逻辑备份工具

mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表

3.启用二进制日志进行增量备份

进行增量备份,需要刷新二进制日志

4.第三方工具备份

1.概述
  • 是对整个数据库、数据库结构和文件结构的备份
  • 保存的是备份完成时刻的数据库
  • 是差异备份与增量备份的基础
2.优缺点

1.优点

备份与恢复操作简单方便

2.缺点

数据存在大量的重复

占用大量的备份空间

备份与恢复时间长

3.数据库完全备份分类

MySQL物理冷备份及恢复

关闭MySQL数据库

使用tar命令直接打包数据库文件夹

直接替换现有MySQL目录即可

(1)物理冷备份

systemctl stop mysqld  //关闭数据库
mkdir /backup  //打包备份
tar zcf /backup/mysql_all-$(date+%F).tar.gz /usrlocal/mysql/data/

(2)恢复数据库

mkdir bak
mv /usr/local/mysql/data//bak/
mkdir restore
tar zxf/backup/mysql_all-2020-01-02.tar.gz-C restore //恢复数据库,采用将备份数据mv成线上库文件夹的方式
mv restore/usr/local/mysql/data/ /usr/local/mysql/
systemctl start mysqld
4.mysqldump备份与恢复

MySQL自带的备份工具,可实现对Msal的备份

可以将指定的库,表导出为SQL脚本

使用命令mysql导入备份的数据

mysqldump备份数据库

三、恢复数据库

1.使用mysqldump导出的脚本,可使用导入的方法

source命令

mysql命令

2.使用source恢复数据库的步骤

登录到MySQL数据库

执行source备份sql脚本的路径

3.source恢复的示例

MySQL[(none)]>source /backup/all-data.sql //source

4.使用mysql命令恢复数据

mysql -u root -p /backup/all-data.sql

四、MySQL增量备份

1.使用mysqldump进行完全备份存在的问题

备份数据中有重复数据

备份时间与恢复时间过长

2.自上一次备份后增加/变化的文件或者内容

特点:

没有重复数据,备份量不大,时间短

恢复需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复

3.MySQL没有提供直接的增量备份方法

4.通过MySQL提供的二进制日志间接实现增量备份

5.MySQL二进制日志对备份的意义

二进制日志保存了所有更新或者可能更新数据库的操作

二进制日志在启动MySQL服务器后开始记录,并在文件达到max_binlog_size所设置的大小或者接收到flush logs命令后重新创建新的日志文件

只需定时执行fush logs方法重新创建新的日志,生成=进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份

五、MySQL数据库增量恢复

1.分类

1.一般恢复

将所有备份的二进制日志内容全部恢复

2.基于位置恢复

数据库在某一时间点可能既有错误的操作也有正确的操作

可以基于精准的位置跳过错误的操作

3.基于时间点恢复

跳过某个发生错误的时间点实现数据恢复

2.增量恢复的方法

(1)一般恢复

mysqlbinlog [--no-defaults]增量备份文件 mysql -uroot -p

(2)基于位置的恢复

恢复数据到指定位置

mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小时:分钟:秒'二进制日志 | mysql-u用户名-p密码

从某个时间点到日志结尾的恢复

mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小时:分钟:秒'二进制日志 | mysql-u用户名-p密码

从某个时间点到某个时间点的恢复

mysqlbinlog [-no-defaults] --start-datetime='年-月-日 小时:分钟:秒'--stop-datetime='年-月-日小时:分钟:秒'二进制日志 | mysql-u用户名-p密码

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

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

相关文章

使用maven对springboot项目进行瘦身分离jar的多种处理方案

文章目录 前言一、方案一(修改自带的spring-boot-maven-plugin插件)二、方案二(使用spring-boot-thin-maven-plugin插件)总结 前言 springboot项目打包一般我们都使用它自带的spring-boot-maven-plugin插件,这个插件默…

编程笔记 html5cssjs 075 Javascript 常量和变量

编程笔记 html5&css&js 075 Javascript 常量和变量 一、JavaScript 变量二、JavaScript 常量三、示例:小结: 在JavaScript中,变量和常量是用来存储数据的占位符。它们的主要区别在于可变性:变量的值可以改变,而…

大数据本地环境搭建03-Spark搭建

需要提前部署好 Zookeeper/Hadoop/Hive 环境 1 Local模式 1.1 上传压缩包 下载链接 链接:https://pan.baidu.com/s/1rLq39ddxh7np7JKiuRAhDA?pwde20h 提取码:e20h 将spark-3.1.2-bin-hadoop3.2.tar.gz压缩包到node1下的/export/server目录 1.2 解压压…

MySQL索引解析与B-tree工作原理

在数据库领域,索引是提高数据检索效率的关键。而在MySQL中,默认的索引方法是B-tree(Balanced Tree),一种常见而高效的索引结构。在这篇文章中,我们将深入探讨MySQL的默认索引方法,特别关注B-tre…

关于 Rust程序设计语言-构建多线程 Web服务器 一章的一些问题

前言 最近在跟着《Rust 程序设计语言》一书学习Rust,在学习最后一章构建多线程 Web 服务器的最后两节时,我遇到了一些问题,并尝试进行解释,接下来分享给大家。 将单线程服务器变为多线程服务器 按照20.2.将单线程服务器变为多线…

Oracle常用命令

创建用户: create user 用户名 identified by 密码 default tablespace zhijie; grant dba,resource,connect to 用户名; CREATE OR REPLACE TYPE DOMAIN_NAMES_COLTYPE AS TABLE OF varchar2(255); CREATE OR REPLACE TYPE TYPE_SPLIT is table of varchar2(40…

刷题11 双指针

一、同向双指针 209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回…

面试 JavaScript 框架八股文十问十答第二期

面试 JavaScript 框架八股文十问十答第二期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)其他值到字符串的…

两个重要极限【高数笔记】

【第一个:lim (sinx / x) 1, x -- > 0】 1.本质: lim (sin‘?’ / ‘?’) 1, ‘?’ -- > 0;保证‘?’ -- > 0,与趋向无关 2.例题&#x…

【ELK】logstash快速入门

1.概述 1.1.什么是logstash? 之前我们聊了es,并且用docker搭建了一个eskibana的环境。es目前最普遍的用法是用来存储日志的,然后结合kibana对日志做一些可视化的工作。既然要收集日志,就面临着一个问题: 各个系统的…

口味多样的碱水贝果面包,香气饱满松松软软

这两天在吃一款碱趣贝果面包,感觉味道很不错,它是一种加热一下就可以吃的手工面包,口感十分独特。这款面包有着清香有韧性的表皮,里面松软可口,加热后更是香气四溢。 除了标准的原味全麦之外,碱趣贝果面包还…

Python爬虫某云音乐歌手及下载其免费音乐

import os import re import threading import timefrom lxml import etreeimport requests from bs4 import BeautifulSoup from database import MyDataBase from utils import make_user_agent 注意:database和utils是自己写的。没有注释,不懂就问 先…

【大厂AI课学习笔记】1.4 算法的进步(3)关于Hinton

Geoffrey Hinton:深度学习之父的传奇人生与杰出贡献 在人工智能领域,有一位科学家的名字如同星辰般闪耀,他就是Geoffrey Hinton。作为深度学习的奠基人之一,Hinton的生涯充满了创新、突破和对未知的不懈探索。他的贡献不仅重塑了…

SpringBoot数据访问复习

SpringBoot数据访问复习 数据访问准备 引入jdbc所需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency> 原理分析 导入的启动器引入了两个…

【年度盛会征稿】第二届全国精准营养与生命健康创新大会(PNHIC 2024)

第二届全国精准营养与生命健康创新大会&#xff08;PNHIC 2024&#xff09; 【高层次专家齐聚交流&#xff0c;年度盛会&#xff01;】 近年来&#xff0c;人们对营养与健康愈加关注&#xff0c;精准营养学研究也成为一个快速发展的热点领域。“精准营养”研究借助多组学、可…

Qt程序设计-运行脚本文件.bat

Qt程序设计-运行脚本文件.bat 本文演示如何实现Qt运行脚本文件.bat 创建一个脚本文件 在D盘,新建一个test.txt文件,将下面的拷入,然后更改后缀名称为bat @echo off set filename=newfile.txt if not exist %filename% (echo This is a new file > %filename% ) else …

Android Studio开发配置(gradle配置)

文章目录 plugin:com.android.applicationgradle换源gradle下载AVD启动电脑蓝屏 刚安装android studio的话&#xff0c;如果直接创建项目&#xff0c;基本gradle编译不过去&#xff0c;会报错。 plugin:com.android.application 最开始我一直报错找不到插件&#xff0c;因为我…

MySQL进阶45讲【13】为什么表数据删掉一半,表文件大小不变?

1 前言 有些小伙伴在删数据库数据时&#xff0c;会产生一个疑问&#xff0c;我的数据库占用空间大&#xff0c;我把一个最大的表删掉了一半的数据&#xff0c;怎么表文件的大小还是没变&#xff1f; 那么这篇文章&#xff0c;就介绍一下数据库表的空间回收&#xff0c;看看如…

【链表】-Lc146-实现LRU(巧妙借助LinkedHashMap)

写在前面 最近想复习一下数据结构与算法相关的内容&#xff0c;找一些题来做一做。如有更好思路&#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 运用你所掌握的数据结构&#xff0c;设计和实现一个 LRU (Least Recently…

Linux Rootkit:内核 5.7+ 的新方法

Linux Rootkit&#xff1a;内核 5.7 的新方法 文章目录 [Linux Rootkit&#xff1a;内核 5.7 的新方法](https://xcellerator.github.io/posts/linux_rootkits_11/)这是怎么回事&#xff1f;ProcFS 更改Kallsyms 问题系统调用名称问题就这样…… 这是怎么回事&#xff1f; 早在…