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

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.mzph.cn/news/85416.shtml

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

相关文章

【动态规划刷题 17】回文子串 最长回文子串

647. 回文子串 链接: 647. 回文子串 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由…

zookeeper + kafka

Zookeeper 概述 Zookeeper是一个开源的分布式服务管理框架。存储业务服务节点元数据及状态信息,并负责通知再 ZooKeeper 上注册的服务几点状态给客户端 Zookeeper 工作机制 Zookeeper从设计模式角度来理解: 是一个基于观察者模式设计的分布式服务管理框架&…

Learn Prompt-GPT-4:能力

GPT-4能力大赏​ 常识知识推理​ 一个猎人向南走了一英里,向东走了一英里,向北走了一英里,最后回到了起点。他看到了一只熊,于是开枪打了它。这只熊是什么颜色的? 答案是白色,因为这种情况只可能发生在北…

Gin学习记录4——Controller和中间件

一. Controller 用不同的Controller可以实现业务的分类,不同类型的请求可以共用同一套中间件 1.1 单文件Controller 几乎等同于函数封装,直接将ctrl的代码写入到一个文件里然后调用: package adminimport ("net/http""git…

数据结构与算法(六)--链表的遍历,查询和修改,删除操作

一、前言 上篇文章我们了解了链表的概念以及链表底层的搭建以及向链表中添加元素的操作。本次我们继续学习链表剩余的操作:遍历,查询和修改、删除操作。 二、链表查询以及遍历 ①获得链表的第index(0-based)个位置的元素(不常用&#xff0…

MySQL详细案例 1:MySQL主从复制与读写分离

文章目录 1. MySQL主从复制1.1 使用场景1.2 MySQL的复制类型1.3 主从复制的作用1.4 主从复制的工作过程1.5 实现MySQL主从复制1.5.1 前置准备1.5.2 主服务器mysql配置1.5.3 从服务器1 mysql配置1.5.4 从服务器2 mysql配置1.5.5 测试 1.6 主从复制的3种同步模式1.6.1 异步复制&a…

微信小程序底部安全区域高度获取

CSS 属性 safe-area-inset-bottom safe-area-inset-bottom 就是安全区的高度 padding-bottom:env(safe-area-inset-bottom); wx.getSystemInfoSync() wx.getSystemInfoSync()可以获取系统信息 let system wx.getSystemInfoSync() let bottomSafe system.screenHeight -…

一招解除csdn复制限制

先看这个代码 python读取英文pdf翻译成中文pdf文件导出代码 想要复制代码,csdn有限制怎么办(csdn流氓,无耻) 解除方法 ctrlu 看效果

Linux启动过程详解 Xmind导图笔记

参考大佬博客: 简要描述linux系统从开机到登陆界面的启动过程 Linux启动过程详解 Bootloader详解 来源:从BIOS开始画图了解Linux启动过程——老杨Linux

TSINGSEE视频AI智能分析技术:水泥厂安全生产智能监管解决方案

一、方案背景 随着人工智能技术的快速发展以及视频监控系统在全国范围内的迅速推进,基于AI视频智能分析技术的智能视频监控与智慧监管系统,也已经成为当前行业的发展趋势。在工业制造与工业生产领域,工厂对设备的巡检管理、维护维修、资产管…

【全志V3s】SPI NAND Flash 驱动开发

文章目录 一、硬件介绍V3s的启动顺序 二、驱动支持U-Boot驱动主线 Linux 驱动已经支持 三、烧录工具 xfel四、构建U-Boot(官方的Uboot)先编译一下开始spi nand flash 代码层面的适配修改menuconfig配置ARM architecture配置Support for SPI Nand Flash o…

rabbitMQ (1)

文章目录 1. RabbitMQ 介绍1.1 几个重要概念1.2 RabbitMq 的工作原理 2 RabbitMQ 安装3. RabbitMQ 入门操作3.1 添加依赖3.2 生产者代码3.3 消费者代码 4. Work Queues5. 管理端页面创建队列 1. RabbitMQ 介绍 引用 : RabbitMQ 是一个消息中间件:它接受…

Xilinx FPGA 程序固化重新上电程序不运行的问题

问题描述 FPGA直接下载bit文件,功能正常。 FPGA擦除FLASH,烧写FLASH,正常。 电源断电,重新上电,FALSH里面的程序没有启动,FPGA程序没有跑起来。–FLASH启动不正常。 解决办法 在XDC约束文件里边增加约束: ## Configuration options, can be used for all designs se…

[Linux入门]---Linux项目自动化构建工具-make/Makefile

目录 1.背景2.make指令输入make默认为Makefile文件第一条指令执行Makefile文件对gcc指令特殊处理及原理特殊符号 3.总结 1.背景 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放…

CNN(九):Inception v3算法实战

🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍖 原作者:K同学啊|接辅导、项目定制 1 理论基础 Inception v3论文 Inception v3由谷歌研究员Christian Szegedy等人在2015年的论文《Rethinking the Inception Architecture f…

Jmeter集成到jenkins

Jmeter集成到Jenkins Jmeter集成到Jenkins. 1 软件下载... 4 一:环境配置... 4 1.JDK安装:... 4 配置JDK环境变量... 5 2.Jmeter安装:... 5 配置jmeter环境变量... 6 3.安装Ant 7 配置Ant环境变量... 7 4.Git安装:... 8 配置git环境…

Untiy UDP局域网 异步发送图片

同步画面有问题,传图片吧 using System.Text; using System.Net.Sockets; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using System.Net; using System; using System.Threading.Tasks; using Sy…

java内嵌浏览器CEF-JAVA、jcef、java chrome

java内嵌浏览器CEF-JAVA、jcef、java chrome jcef是老牌cef的chrome内嵌方案,可以进行java-chrome-h5-桌面开发,下面为最新版本(2023年9月22日10:33:07) JCEF(Java Chromium Embedded Framework)是一个基于…

Cesium 空间量算——生成点位坐标

文章目录 需求分析1. 点击坐标点实现2. 输入坐标实现 需求 用 Cesium 生成点位坐标,并明显标识 分析 以下是我的两种实现方式 第一种是坐标点击实现 第二种是输入坐标实现 1. 点击坐标点实现 //点位坐标getLocation() {this.hoverIndex 0;let that this;this.view…

板子接线图

1.ST-LINK V2接线 2.对抗板子刷蓝牙固件 接USB转TTL,用镊子短接两个孔 2.对抗板子用串口测试蓝牙AT命令 短接白色箭头,接TX,RX,电源