读高性能MySQL(第4版)笔记14_备份与恢复(中)

news2024/12/24 9:07:00

1. 在线备份

2. 离线备份

2.1. 关闭MySQL做备份是最简单、最安全的

2.2. 所有获取一致性副本的方法中最好的

2.3. 损坏或不一致的风险最小

2.4. 根本不用关心InnoDB缓冲池中的脏页或其他缓存

2.5. 不需要担心数据在尝试备份的过程中被修改

2.5.1. 服务器不对应用提供访问

3. 备份时间

3.1. 将备份复制到目的地需要多久

4. 备份负载

4.1. 在将备份复制到目的地时对服务器性能的影响有多大

4.2. 在备份服务器上压缩而不是在MySQL服务器上

4.3. Percona XtraBackup和MySQL Enterprise Backup这样的工具都有限流选项,可在使用p v时加--rate-limit选项来限制备份脚本的吞吐量

5. 牺牲其一以增强另外一个

6. 恢复时间

6.1. 把备份镜像从存储位置复制到MySQL服务器、重放二进制日志等,需要多久

7. 逻辑备份

7.1. 导出

7.2. 以一种MySQL能够解析的格式来包含数据

7.2.1. SQL语句

7.2.2. 以某个符号分隔的文本

7.3. 优点

7.3.1. 逻辑备份备份的文件是可以用编辑器或像grep和sed之类的命令查看和操作的普通文件

7.3.2. 恢复非常简单

7.3.3. 可以通过网络来备份和恢复,也就是说,可以在与MySQL主机不同的另外一台机器上操作

7.3.4. 可以在类似云数据库这样不能访问底层文件系统的系统中使用

7.3.5. 灵活

7.3.6. 与存储引擎无关

7.3.6.1. 消除了底层数据存储引擎的差异

7.3.7. 有助于避免数据损坏

7.3.7.1. 如果MySQL在内存中的数据还没有损坏,当不能得到一个正常的裸文件备份时,或许可以得到一个可以信赖的逻辑备份

7.4. 缺点

7.4.1. 必须由数据库服务器完成生成逻辑备份的工作,因此要占用更多的CPU周期

7.4.1.1. 某些场景下比数据库文件本身更大

7.4.2. 无法保证导出后再还原出来的一定是同样的数据

7.4.2.1. 浮点表示的问题、软件Bug等都会导致问题

7.4.3. 从逻辑备份中还原需要MySQL加载和解释语句,将它们转化为存储格式,并重建索引,所有这一切会很慢

7.4.3.1. MySQL中导出数据和通过SQL语句将其加载回去的庞大开销
7.4.3.2. 如果使用逻辑备份,测试恢复需要的时间将非常重要
7.4.3.3. 逻辑备份最可怕的地方就是不确定的还原时间

8. 裸文件备份

8.1. 原始文件是指存放于硬盘上的文件

8.2. 直接复制原始文件

8.3. 优点

8.3.1. 基于文件的物理备份,它只需将需要的文件复制到其他地方即可完成备份,不需要其他额外的工作来生成原始文件

8.3.2. 非常容易跨平台、操作系统和MySQL版本工作

8.3.3. 从裸文件备份中恢复会更快

8.3.3.1. MySQL服务器不需要执行任何SQL语句或构建索引
8.3.3.2. 如果有很大的InnoDB表,无法完全缓存到内存中,则裸文件备份的恢复要快得多
8.3.3.2.1. 至少要快一个数量级

8.4. 缺点

8.4.1. InnoDB的原始文件通常比相应的逻辑备份要大得多

8.4.1.1. 表空间往往包含很多未使用的空间

8.4.2. 不总是可以跨平台、操作系统及MySQL版本的

8.4.2.1. 文件名大小写敏感和浮点格式是可能会遇到麻烦的
8.4.2.2. 对于需要长期保留或者是用于满足法律合规要求的备份,尽量不要完全依赖裸文件备份
8.4.2.3. 每隔一段时间需要做一次逻辑备份

8.4.3. 除非经过测试,不要假定备份(特别是裸文件备份)是正常的

8.4.3.1. CHECK TABLES
8.4.3.2. 不建议仅对文件运行innochecksum

9. 混合使用

9.1. 使用裸文件备份

9.2. 用得到的数据启动MySQL服务器实例并运行mysqlcheck

9.3. 周期性地使用mysqldump执行逻辑备份

9.4. 优点是不会使生产服务器在导出时有过度负担

9.5. 如果能够方便地利用文件系统的快照,也可以生成一个快照,将该快照复制到另外一台服务器上并释放,然后测试原始文件,再执行逻辑备份

10. 备份什么

10.1. 恢复的需求决定需要备份什么

10.2. 最简单的策略是只备份数据和表定义,但这是一个最低的要求

10.3. 非显著数据

10.3.1. 二进制日志和InnoDB事务日志

10.3.2. 在理想情况下,应该把整个数据目录和MySQL一起备份起来

10.4. 代码

10.4.1. 现代的MySQL服务器可以存储许多代码,例如,触发器和存储过程

10.4.2. 实际是存放在mysql数据库中的

10.5. 服务器配置

10.5.1. 对于服务器配置来说,备份中对生产服务器至关重要的任何外部配置,都十分重要

10.6. 选定的操作系统文件

10.6.1. 在UNIX服务器上,这可能包括cron任务、用户和组的配置、管理脚本,以及sudo规则

11. 部分备份

11.1. 一般不包含完整的数据集

11.1.1. 因为某些数据没有改变

11.1.2. 对减少服务器开销、备份时间及备份空间而言都很适合

11.2. Percona XtraBackup和MySQL Enterprise Backup,仍然会扫描服务器上的所有数据块,因而并不会节约太多的开销

11.2.1. 确实会减少一定量的备份时间和大量用于压缩的CPU时间

11.2.2. 会减少磁盘空间的使用

11.3. 差异备份

11.3.1. 自上次全备份后所有改变的部分而做的备份

11.4. 增量备份

11.4.1. 对自任意类型的上次备份后的所有修改做的备份

11.4.2. 缺点

11.4.2.1. 会增加恢复的复杂性
11.4.2.2. 额外的风险
11.4.2.3. 更长的恢复时间

12. 建议

12.1. 使用Percona XtraBackup和MySQL Enterprise Backup中的增量备份特性

12.2. 备份二进制日志

12.2.1. 在每次备份后使用FLUSH LOGS来开始记录一个新的二进制日志,这样就只需要备份新的二进制日志

12.3. 如果有一些“引用”表,例如,包含不同语种、各个月的名称列表,或者州或区域的简写等,可以考虑将它们单独放在一个数据库中,这样就不需要每次都备份这些表

12.3.1. 一个更好的选择可能是把这些数据放到程序代码中,而不是保存在数据库中

12.4. 某些数据根本不需要备份

12.4.1. 相对于从全备份中可能获得的快速恢复时间,避免备份可以节约更多时间开销

12.4.2. 临时数据也不用备份

12.5. 备份所有的数据,然后发送到一个有去重特性的地方

12.6. 如果可以做全备份,考虑到简便性,建议尽量做全备份

12.6.1. 建议至少一周一次

13. 复制

13.1. 从副本中备份最大的好处是可以不干扰源库,避免在源库上增加额外的负载

13.1.1. 这是一个建立副本服务器的好理由,即使不需要用它做负载均衡或提供高可用性

13.2. 用GTID是非常明智的

13.2.1. 避免了必须保存有关复制过程的所有信息

13.3. 故意将一个副本延迟复制一段时间对于某些灾难场景非常有用

13.4. 源库与副本数据不匹配是很常见的,并且MySQL没有方法检测这个问题

13.4.1. 唯一方法是使用Percona Toolkit中的pt-table-checksum之类的工具

13.4.2. 防止这种情况的最好方法是使用super_read_only来确保只有复制可以写入副本

13.5. 复制不是备份

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

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

相关文章

Redis淘汰策略-架构案例2020(三十六)

上篇案例回顾: 解释器,管道过滤,隐式调用优缺点? 解释器 则是独立的语法规则,可以通过解释器来解析,可扩展性很高,灵活性强。 管道过滤则是侧重于数据的输入和输出,上一个模块的数…

stm32之看门狗

STM32 有两个看门狗,独立看门狗和窗口看门狗,独立看门狗又称宠物狗,窗 口看门狗又称警犬。可用来检测和解决由软件错误引起的故障。两个看门狗的原理都是当计数器达到给定的超时值时,产生系统复位,对于窗口型看门狗同…

2023.9.20 简单了解 HTTP协议 及 Fiddle 安装使用

目录 HTTP 协议基本概念 Fiddle 下载 HTTP 请求格式 HTTP 响应格式 HTTP 协议基本概念 应用层使用最广泛的协议浏览器 基于 HTTP协议 获取网站是 浏览器 和 服务器 之间的交互桥梁HTTP协议 基于传输层的 TCP协议 实现HTTP 全称为 HyperText Transfer Protocol,中…

Java IO流实现文件复制

目录 前言 文件复制底层逻辑 代码实现 ​编辑 重点!!! 完整代码 改善思考 前言 Windows文件复制时我们是使用Ctrl C复制Ctrl V粘贴,上一篇文章Java基础入门对存储文件的相关操作 我们学习了Java IO流对文件的读写操作&…

数据结构--排序(1)

文章目录 排序概念直接插入排序希尔排序冒泡排序堆排序选择排序验证不同排序的运行时间 排序概念 排序指的是通过某一特征关键字(如信息量大小,首字母等)来对一连串的数据进行重新排列的操作,实现递增或者递减的数据排序。 稳定…

深度学习自学笔记二:逻辑回归和梯度下降法

目录 一、逻辑回归 二、逻辑回归的代价函数 三、梯度下降法 一、逻辑回归 逻辑回归是一种常用的二分类算法,用于将输入数据映射到一个概率输出,表示为属于某个类别的概率。它基于线性回归模型,并使用了sigmoid函数作为激活函数。 假设我们…

Git_06_创建分支/查看分支

创建分支 # 创建分支的同时,切换到该分支上 > git checkout -b 分支名称 # > git push origin 分支名称查看分支 # 查看本地分支 > git branch # 查看远程分支 > git branch -r # 查看所有分支 > git branch -a删除分支 # 删除本地分支 > git …

app一键加固加签名脚本 百度加固 window版本

echo off setlocal enabledelayedexpansionset KEYSTORE_PATH*.jks set KEYSTORE_PASSWORD* set KEY_ALIAS* set KEY_PASSWORD*set OUTPUT_DIR%cd%\out set UNSIGNED_DIR%cd%\unsignedREM 设置加固工具的路径和密钥 set APKPROTECT_PATH"apkprotect" set AKEY替换成你…

Postman 全局配置接口路径变量等

Postman 全局配置接口路径变量等 一、简介 这里主要是介绍通过配置postman接口测试工具,简化每次新增模块等接口时修改url的繁琐过程,方便以后查阅!!! 二、全局变量设置 1、新增测试环境 新增测试环境 2、接口集合设…

上N下P三极管推挽电路----》交越失真问题的解决

交越失真现象: 波形失真原因: 三极管的导通条件是Vbe > 0.7V,在正弦波驱动波形介于-0.7v ~ 0.7v之间时,上N管子截止、下P管子也截止,此时波形失真。 (关于三极管的伏安特性曲线、米勒效应,请自行百度) …

UOS Deepin Linux 安装 anaconda

UOS Deepin Linux 安装 anaconda 下载 anaconda 官网下载 国内开源镜像站下载 官网下载 anaconda 官网: https://www.anaconda.com/ 点击右上角 Free Download 按钮 跳转值下载页面:https://www.anaconda.com/download 国内开源镜像站下载 清华大学开源…

MySQL案例详解 二:MHA高可用配置及故障切换

文章目录 1. MHA的简单介绍1.1 MHA概述1.2 MHA的核心组件1.2.1 Manager 节点1.2.2 Master 节点1.2.3 Slave 节点 1.3 MHA的工作原理1.4 工作流程1.5 MHA架构的特点 2. 部署MHA实现MySQL高可用2.1 首先实现主从复制2.1.1 前置准备2.1.2 配置主服务器2.1.3 配置从服务器12.1.4 配…

给/etc/docker/daemon.json中配置graph后docker启动失败

目录 背景 排查 解决 另外注意 背景 启动报错: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. 迁移docker目录&…

Neo4j CQl语句(持续更新)

1.清空所有数据 MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r2.删除一个节点及其所有的关系 MATCH (r) WHERE id(r) 11 DETACH DELETE r3.删除一个节点 DELETE(通过属性删除) MATCH (n:标签{name:temp}) delete n4.删除所有节点和所有的关系 MA…

Android事件分发机制源码解析

触摸事件传递机制是Android中一块比较重要的知识体系,了解并熟悉整套的传递机制有助于更好的分析各种滑动冲突、滑动失效问题,更好去扩展控件的事件功能和开发自定义控件。 预备知识 MotionEvent 在Android设备中,触摸事件主要包括点按、长…

Steam VR Plugin 2.7.3爬坑指南

因为项目有VR串流的需要,于是就用起了PicoSteam VR串流,真是一把心酸泪,坑还真不少。有些解决了,有些没有,等待后续更新或者有好心人指点一下啊,进入正题。 (1)导入插件之后&#xf…

Qt5开发及实例V2.0-第十六章-Qt汽车销售管理系统实例

Qt5开发及实例V2.0-第十六章-Qt汽车销售管理系统实例 Qt汽车销售管理系统实例一、 系统概述二、 系统模块三、 界面设计四、 代码实现五、 总结 本章相关例程源码下载 Qt汽车销售管理系统实例 一、 系统概述 汽车销售管理系统是一款基于QT5框架开发的管理系统,主要…

回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测

回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测 目录 回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测效果一览基本介绍研究内容程序设计参考资料 效果一览 基本介绍 Matlab实现基于…

LeetCode【69. x 的平方根】

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1&#xff1…

智云谷再获AR HUD新项目定点,打开HUD出口海外新通道

深圳前海智云谷科技有限公司(以下简称“智云谷”)于近日收到国内某新能源车企的《定点通知书》,选择智云谷作为其新车型AR HUD开发与量产供应商。智云谷获得定点的车型为海外出口车型,该车型预计在2024年下半年量产。 中国汽车全产业链出海“圈粉” 随…