企业实用——MySQL的备份详解

序言:  本次基于mysql8.0.40来给大家做数据库的备份的实用技巧和思路!对于mysql基础的部分后续我会节选部分给大家讲解,本篇文章适合有一定数据库基础的小伙伴看

         

目录

一、MySQL备份概述

1、关于数据保存你要知道

2、到底要备份什么

备份什么

MySQL体系结构(MySQL => DBMS软件到底是由哪些层构成的)

 存储引擎层(MyISAM与InnoDB引擎)

 存储层(数据文件是如何进行存储的)

 日志文件(MySQL中我们需要了解哪些日志)

3、备份过程须考虑的因素

4、备份的类型

重点掌握以下几种备份方式:

逻辑备份

物理备份

在线热备(数据冗余、AB复制、主从复制)

5、备份工具

㈠ 社区版安装包中的备份工具

① mysqldump(逻辑备份,只能全量备份)

② mysqlhotcopy(物理备份工具)

㈡ 企业版安装包中的备份工具

㈢ 第三方备份工具

① XtraBackup和innobackupex(物理备份)

② mydumper(逻辑备份,备份SQL语句)

6、备份方法

三、MySQL逻辑备份

1、mysqldump基本备份

2、mysqldump基本语法

2.1、mysqldump表级备份与还原

 备份

还原( 利用< 或者 source )

2.2、mysqldump库级备份与还原

 备份

还原

2.3、mysqldump全库级备份

备份

还原

总结

四、mysqldump + binlog实现增量备份

1、核心思路

2、增量备份步骤

3、增量备份的具体实践

小结

补充:逻辑导入导出(了解)

五、MySQL的物理备份

1、Xtrabackup概述

2、Xtrabackup优点

3、Xtrabackup软件安装

4、创建备份用户并授权

5、Xtrabackup全量备份与恢复

具体实施方案:

第一步:创建全量备份

第二步:预备阶段,把备份这段时间内产生的日志整合到全量备份中

第三步:模拟数据库故障

第四步:快速的恢复数据库中的数据

第五步:恢复数据时,一定要记得更改/var/lib/mysql目录下的文件拥有者以及所属组权限,否则mysql无法启动

第六步:启动MySQL,测试其是否正常

6、Xtrabackup增量备份与恢复

常见问题说明

7、xtrabackup知识点补充

Tips:

一、MySQL备份概述

1、关于数据保存你要知道

思考:备份和冗余有什么区别?

备份: 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方。

冗余: 数据有多份冗余,但不等同备份,只能防止机械故障带来的数据丢失,例如主备模式、数据库集群。

2、到底要备份什么

备份什么

数据库:一堆物理文件的集合;日志文件(二进制日志)+数据文件+配置文件

所以需要备份:① 数据文件;② 配置文件 => my.cnf;③ 日志文件(主要是二进制日志文件)

MySQL体系结构(MySQL => DBMS软件到底是由哪些层构成的)

 存储引擎层(MyISAM与InnoDB引擎)

存储引擎层:简单来说,就是数据的存储方式。在MySQL中,我们可以使用show engines查看当前数据库版本支持哪些引擎,常见的数据存储引擎:InnoDB、MyISAM、NDB…

常见面试题:请简述MySQL的MyISAM引擎与InnoDB引擎的区别

  1. ① MyISAM引擎:擅长数据的查询,支持全文索引
  2. ② InnoDB引擎:Supports transactions, row-level locking, and foreign keys,支持事务处理、行级锁、支持外键。
 存储层(数据文件是如何进行存储的)

问题:存储引擎到底是如何保存数据文件的?

mysql> create database db1 default charset=utf8;

我能不能不进入MySQL终端,然后在命令行中直接创建一个数据库呢?-e选项即可。

当数据库创建完毕后,查看对应的 mysql 的文件夹:

db.opt,存放内容为数据库的编码格式。

  • MyISAM引擎(非聚集索引)
mysql> use db1;
mysql> create table tb1(id int, name char(1)) engine=myisam default charset=utf8;

创建完成后,查看db1目录信息,发现产生了3个文件

*.frm :框架文件,定义数据表结构

*.MYI :INDEX索引,主要用于存放索引文件

*.MYD:数据文件

  • InnoDB引擎(聚集索引)
mysql> use db1;
mysql> create table tb1(id int, name char(1)) engine=innodb default charset=utf8;

创建完成后,查看db1目录信息,发现产生了2个文件

 *.frm :框架文件,定义数据表结构

*.ibd:索引文件 + 数据文件

        其实InnoDB引擎不仅仅会产生以上两个文件,其在也会产生一个文件(确切来说不能叫做产生文件,而应该叫做共享文件)。

 日志文件(MySQL中我们需要了解哪些日志)

日志类型 写入日志的信息
事务日志:transaction log
 
redo log:实现 WAL(Write Ahead Log) ,数据更新前先记录redo log;undo log:保存与执行的操作相反的操作,用于实现rollback
事务型存储引擎自行管理和使用,建议和数据文件分开存放;事务日志文件: ib_logfile0, ib_logfile1
慢查询日志 slow query log 记录执行查询时长超出指定时长的操作
中继日志 reley log 在主从复制架构中,从服务器用于保存从主服务器的二进制日志中读取的事件
通用日志:general log 记录对数据库的通用操作,包括:错误的SQL语句
通用日志可以保存在:file(默认值)或 table(mysql.general_log表)
 error log 错误日志 存放数据库的启动、停止或运行时的错误信息(找ERROR)。mysqld启动和关闭过程中输出的事件信息;mysqld运行中产生的错误信息;event scheduler运行一个event时产生的日志信息;在主从复制架构中的从服务器上启动从服务器线程时产生的信息
binary log二进制日志 数据库的所有更改操作(DDL/DML/DCL),不包含select或者show这类语句。 用于主从复制中,master主服务器将二进制日志中的更改操作发送给slave从服务器,从服务器执行这些更改操作是的和主服务器的更改相同;用于数据的恢复操作

更改日志的存放位置:

# vim my.cnf
[mysqld]
日志类型=路径+命名

注:当我们更改了my.cnf配置文件,一定要记得重启MySQL服务器。

3、备份过程须考虑的因素

  • 必须制定详细的备份计划(策略)(备份频率、时间点、周期)。
  • 备份数据应该放在非数据库本地,并建议有多份副本。
  • 必须做好数据恢复的演练(每隔一段时间,对备份的数据在测试环境中进行模拟恢复,保证当出现数据灾难的时候能够及时恢复数据。)
  • 根据数据应用的场合、特点选择正确的备份工具。
  • 数据的一致性、服务的可用性

4、备份的类型

按备份方式划分
1. 物理备份(Physical Backup)
定义:直接复制数据库的物理文件(如数据文件、日志文件、配置文件等),不依赖数据库逻辑结构。
工具:cp、tar、rsync 等系统命令,或数据库专属工具(如 MySQL 的 xtrabackup、PostgreSQL 的 pg_basebackup)。
示例:xtrabackup --user=root --password=xxx --backup --target-dir=/backup/。
特点:速度快(直接拷贝文件,无需解析数据);恢复快(直接覆盖文件,适合大规模数据);与数据库版本、存储引擎强相关(如 InnoDB 和 MyISAM 的物理文件结构不同)。
适用场景:全量备份、大规模数据库、需要快速恢复的场景。
2. 逻辑备份(Logical Backup)
定义:通过数据库接口(如 SQL 命令)导出数据的逻辑结构(表结构、索引)和内容(行记录),生成可读的文本文件(如 SQL 脚本、CSV 等)。
工具:MySQL 的 mysqldump、PostgreSQL 的 pg_dump、SQL Server 的 bcp 等。
示例:mysqldump -u root -p --databases test > test_backup.sql。
特点:

  • 跨版本、跨存储引擎兼容(SQL 脚本通用)。
  • 可读性强(可直接编辑 SQL 文件)。
  • 速度慢(需解析数据并生成 SQL,适合中小规模数据)。
  • 恢复慢(需执行 SQL 语句重建数据)。

适用场景:中小数据库、需要跨环境迁移(如从 MySQL 5.7 迁移到 8.0)、需要筛选部分数据备份的场景。


按数据范围划分
1. 全量备份(Full Backup)
定义:备份数据库的全部数据和对象(所有表、索引、存储过程等)。
特点:

  • 备份完整,恢复时无需依赖其他备份。
  • 占用空间大,备份时间长。

示例:xtrabackup 全量备份整个实例、mysqldump --all-databases 导出所有库。
2. 增量备份(Incremental Backup)
定义:仅备份上次全量备份或增量备份后新增或修改的数据。
实现方式:依赖日志文件(如 MySQL 的 binlog、PostgreSQL 的 WAL 日志)或变更跟踪机制。
示例:xtrabackup --incremental 基于上次备份的增量备份、通过 mysqlbinlog 导出指定时间段的 binlog。
特点:

  • 备份体积小,速度快。
  • 恢复复杂(需先恢复全量备份,再依次应用增量备份)。

适用场景:全量备份后的数据补充(如每日全量 + 每小时增量),减少备份存储和时间开销。
3. 差异备份(Differential Backup)
定义:仅备份上次全量备份后新增或修改的数据(与增量备份的区别:增量基于上一次备份,差异基于上一次全量)。
特点:

  • 备份体积比增量大,但比全量小。
  • 恢复比增量简单(只需全量 + 最后一次差异)。

示例:周一全量备份,周二差异备份(周一后变更的数据),周三差异备份(周一后变更的数据,包含周二的内容)。


按数据库状态划分
1. 冷备份(Cold Backup)
定义:在数据库关闭状态下进行的备份(无读写操作干扰)。
实现方式:直接拷贝数据文件(如关闭 MySQL 后 cp -r /var/lib/mysql /backup/或者结合rsync进行异地备份)。
特点:

  • 备份一致性高(无未提交事务)。
  • 影响业务(需停机)。

适用场景:非核心业务、可接受停机的维护窗口。
2. 热备份(Hot Backup)
定义:在数据库运行状态下进行的备份,不影响正常读写(如生产环境)。
实现方式:依赖数据库的事务日志和快照机制(如 InnoDB 的 MVCC、PostgreSQL 的在线备份)。
工具:xtrabackup(支持 InnoDB 热备份)、pg_basebackup -X stream(PostgreSQL 在线备份)。
特点:

  • 不影响业务(无需停机)。
  • 需处理未提交事务(通过日志保证一致性)。

适用场景:核心业务、7x24 小时运行的数据库。
3. 温备份(Warm Backup)
定义:在数据库运行状态下进行,但会对读写操作有限制(如只读模式)。

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

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

相关文章

使用 FunASR 工具包实现音频文件的语音识别

使用 FunASR 工具包实现音频文件的语音识别&#xff0c;并将识别结果保存为文本文件&#xff0c;支持单文件处理和批量处理。电脑环境需要配置&#xff0c;我使用的PyTorch版本: 2.4.1cu121&#xff0c;CUDA可用: True。FunASR 是一个功能强大、性能卓越、面向工业应用的语音识…

【STM32】定时器编码器接口

【STM32】定时器编码器接口一、编码器接口1.1 正交编码器1.2 编码器接口基本结构1.3 工作模式二、编码器接口测速一、编码器接口 编码器接口可接收增量&#xff08;正交&#xff09;编码器的信号&#xff0c;根据编码器旋转产生的正交信号脉冲&#xff0c;自动控制CNT的自增或…

浪潮科技Java开发面试题及参考答案(120道题-中)

请介绍一下 SpringMVC 的运行流程&#xff1f;从用户发送请求到响应返回的完整步骤是什么&#xff1f;SpringMVC 是基于MVC架构的Web框架&#xff0c;其运行流程围绕“前端控制器&#xff08;DispatcherServlet&#xff09;”展开&#xff0c;通过多个组件协同工作&#xff0c;…

k8s初始化常见问题

执行初始化&#xff1a;kubeadm init --apiserver-advertise-address192.168.88.110 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr10.244.0.0/16 --control-plane-endpointweb01报错信息&#xff1a;age-repository registry.aliyuncs.com/…

Python学习笔记--使用Django修改和删除数据

一、修改方式一&#xff1a;模型类的对象.属性 更改的属性值&#xff0c;模型类的对象.save()返回值&#xff1a;编辑的模型类的对象。def update_book(request):book models.Book.objects.filter(pk1).first()book.price "169"book.save()return HttpResponse(bo…

如何评价2025年数学建模国赛?

2025年全国大学生数学建模竞赛将于9月4日正式举行&#xff01; 有些第一次参加数学竞赛的同学可能觉得自己还没准备好&#xff0c;临近比赛感到紧张很正常&#xff0c;但需调整心态——数学建模比赛本就是学习过程&#xff0c;遇到不会的知识及时搜索、现学现用即可&#xff0…

uniapp [全端兼容] - 实现全景图Vr 720°全景效果查看预览功能,3D全景图流畅不卡顿渲染+手势拖拽+悬浮工具按钮,uniAPP实现vr看720度全景效果示例代码(H5小程序APP全兼容)

前言 如果您需要 Vue 版本,请访问 这篇文章。 在 uni-app 全平台兼容(H5网页网站、支付宝/微信小程序、安卓App、苹果App、nvue)开发中,详细实现全景图Vr 720全景查看+用户可流畅拖动预览+自定义工具栏/按钮元素等,uniApp如何实现在线观看720度全景图,适用于全景图VR看房…

51单片机-实现串口模块教程

本章概述思维导图&#xff1a;51单片机实现串口模块教程通信基本概念通信&#xff0c;至少是需要两个对象&#xff0c;一个收一个发数据。根据数据通信的传输时序协调方式&#xff0c;可分为&#xff1a;同步通信和异步通信&#xff1b;根据数据通信的传输线路可分为&#xff1…

Linux echo 命令使用说明

echo 命令使用说明&#xff08;Linux&#xff09; 适用环境 Bash/Zsh 等常见 Shell&#xff08;echo 通常为内建命令&#xff09;也可能存在外部 /bin/echo&#xff08;行为与内建略有差异&#xff09; 基本语法 echo [选项] [字符串...]常用选项 -n: 结尾不输出换行-e: 解析反…

Java搭建高效后端,Vue打造友好前端,联合构建电子采购管理系统,实现采购流程电子化、自动化,涵盖采购全周期管理,功能完备,附详细可运行源码

前言&#xff1a;在当今数字化浪潮席卷的时代&#xff0c;企业的采购管理面临着前所未有的挑战与机遇。传统采购模式因流程繁琐、效率低下、信息不透明等问题&#xff0c;已难以满足企业快速发展的需求。电子采购管理系统作为一种创新的采购解决方案&#xff0c;借助先进的信息…

应用开发使用缓存

在 Java 开发的典型架构&#xff08;结合前端、后端、MyBatis、MySQL 及缓存机制&#xff09;中&#xff0c;缓存层次可以从前端到后端再到数据库进行划分&#xff0c;通常涉及以下多层缓存&#xff1a;1. 前端缓存浏览器缓存&#xff1a;浏览器自带的缓存机制&#xff08;如 H…

leetcode算法刷题的第二十六天

今天主要是要用贪心算法来解决重置区间的问题。 1.leetcode 452.用最少数量的箭引爆气球 题目链接 class Solution { public:static bool cmp(const vector<int>& a,const vector<int>& b){return a[0]<b[0];}int findMinArrowShots(vector<vecto…

BlueZ 学习之GATT Server开发

Linux下&#xff0c;使用C语言开发一个简单的GATT Server&#xff0c;我的Ubuntu上跑的BlueZ版本是5.79&#xff0c;使用的GLib库版本是2.85.2&#xff0c;这里我直接使用GLib里的D‑Bus来实现与BlueZ通信。BlueZ 官方推荐通过 D-Bus 进行通信和控制&#xff0c;如果是要使用原…

【Linux基础】Linux文件系统深度解析:EXT4与XFS技术详解与应用

目录 引言 1 Linux文件系统概述 1.1 文件系统的基本概念 1.2 日志文件系统的概念 2 EXT4文件系统详解 2.1 EXT4概述 2.2 EXT4的磁盘结构 2.3 EXT4的inode结构 2.4 EXT4的新特性 2.4.1 Extents 2.4.2 延迟分配 2.4.3 快速文件系统检查 2.5 EXT4的性能特点 3 XFS文…

埃文科技荣获2025年“数据要素×”大赛河南分赛二等奖

2025年8月19日&#xff0c;2025年“数据要素”大赛河南分赛决赛在郑州举行&#xff0c;本届河南分赛聚焦数据价值赋能。郑州埃文科技有限公司&#xff08;以下简称“埃文科技”&#xff09;凭借其前沿成果“IP地址高精度地理定位及应用场景划分数据集”&#xff0c;从500多支参…

链上迷局:区块链技术的法律暗礁与合规导航

高鹏律师首席数据官&#xff0c;数字经济团队创作AI辅助区块链&#xff0c;这个被誉为“信任机器”的技术&#xff0c;正以颠覆性的力量重塑数字经济的底层逻辑。从比特币的横空出世到NFT的全民狂欢&#xff0c;从DeFi的金融革命到DAO的组织重构&#xff0c;技术永不眠&#xf…

线性代数基础 | 基底 / 矩阵 / 行列式 / 秩 / 线性方程组

注&#xff1a;本文为 “线性代数基础 ” 相关合辑。 略作重排&#xff0c;未作全校。 如有内容异常&#xff0c;请看原文。 线性代数的本质&#xff08;1&#xff09;——基底、向量、线性变换、逆阵、行列式 野指针小李于 2020-08-13 16:34:45 发布 零、基底 在展开后续内…

GORM.io详细指南

GORM.io 详细指南 GORM&#xff08;全称 Go ORM&#xff09;是一个功能丰富的 ORM&#xff08;Object-Relational Mapping&#xff09;库&#xff0c;用于 Go 语言。它简化了数据库操作&#xff0c;将 SQL 查询映射到 Go 结构体&#xff0c;支持多种数据库后端。GORM 的设计理念…

【Flask】测试平台开发,应用管理模块实现-第十一篇

概述通过Element UI抽屉和表单校验&增改接口合并实现应用管理Drawer 抽屉之前产品修改和添加是使用Dialog组件实现的&#xff0c;但这个组件有时候并不满足我们的需求, 比如表单很长, 亦或是你需要临时展示一些文档, Drawer 是可以从侧面弹出的一个层&#xff0c;可以容纳更…

Elasticsearch 深分页限制与解决方案

最近在准备面试&#xff0c;正把平时积累的笔记、项目中遇到的问题与解决方案、对核心原理的理解&#xff0c;以及高频业务场景的应对策略系统梳理一遍&#xff0c;既能加深记忆&#xff0c;也能让知识体系更扎实&#xff0c;供大家参考&#xff0c;欢迎讨论。在项目中遇到一个…