五、MySQL的备份及恢复

5.1 MySQL日志管理

在数据库保存数据时,有时候不可避免会出现数据丢失或者被破坏,这样情况下,我们必须保证数据的安全性和完整性,就需要使用日志来查看或者恢复数据了

数据库中数据丢失或被破坏可能原因:

  1. 误删除数据库
  2. 数据库工作时、意外程序终止、程序崩溃
  3. 病毒的入侵
  4. 文件系统损坏后,系统进行自检操作时,误删除了核心数据
  5. 升级数据库时、命令不严格
  6. 设备故障,硬件损坏
  7. 自然灾害,被盗

5.1.1 MySQL日志类型

日志类型记录文件中的信息类型
错误日志记录启动、运行或停止时出现问题
查询日志记录建立的客户端连接和执行的语句
二进制日志记录所有更改数据的语句。主要用于复制或即时点恢复
慢日志记录所有执行时间超过最大查询时间 long_query_time 的查询操作或不使用索引的查询
事务日志记录InnoDB等支持事务管理的存储引擎执行事务时所产生的日志

默认情况下,所有日志都创建于mysqld数据目录内,通过刷新日志,你可以强制 mysqld来关闭和重新打开||切换日志文件。

mysql > FLUSH LOGS
或
mysqladmin flush-logs

5.1.2 错误日志

错误日志中主要记录的几种日志:

  1. 服务器启动和关闭过程中的信息
  2. 务器运行过程中的错误信息
  3. 事件调度器运行一个时间是产生的信息
  4. 在从服务上启动进程时所产生的信息

错误日志的定义:
可以用–log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。
如果没有给定file_name值,mysqld使用错误日志名host_name.err 并在数据目录中写入日志文件。
如果执行刷新操作,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。

#错误日志
mysql> SHOW GLOBAL VARIABLES LIKE '%log_error%';
#警告日志
mysql> SHOW GLOBAL VARIABLES LIKE '%log_warning%';

5.1.3 通用查询日志

启动开关 general_log = {ON||OFF}
日志文件变量 general_log_file [=/PATH/TO/file]
全局日志开关 log = {ON||OFF}
记录类型 log_output = {TABLE||FILE||NONE}

如果需要启用通用查询日志 至少要配置 general_log = NO ,log_output = {TABLE||FILE}
如果general_log_file 没有额外指定 默认名为 host_name.log

mysql> SHOW GLOBAL VARIABLES LIKE '%general_log%';mysql> SHOW GLOBAL VARIABLES LIKE '%log_output%';

5.1.4 慢查询日志

Mysql 如果启用了 slow_query_log = ON 选项。就会记录执行时间超过long_query_time的查询。

日志记录文件为slow_query_log_file[=file_name] 若没有给定file_name, 默认为主机名,后缀为-slow.log。

与慢查询相关的变量设置:

# 系统默认关闭慢查询日志开关 查看状态
MYSQL> SHOW GLOBAL VARIABLES LIKE '%slow_query_log%'; #开启方式
SET GLOBAL slow_query_log=ON;#查看默认的查询时效
MYSQL> SHOW GLOBAL VARIABLES LIKE 'long_query_time';

5.1.5 二进制日志

开启日志

二进制日志启动开关:log-bin [= file_name]

5.6版本

前:一定要手动指定

后:默认file_name为$datadir/mysqld-binlog

查看二进制日志的工具为 mysqlbinlog

二进制日志包含了所有更新了数据或者已经潜在更新了数据。语言语句以事件形式保存,描述了数据的更改。

二进制日志还包含关于每个更新数据库的语句的执行时间信息。

作用:当数据库存在故障时,恢复能尽最大可能进行即时点恢复,因为二进制日志内包含了备份后进行的所有更新,所以二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。

二进制日志是记录 执行的语句 还是 执行后的数据 ???

情况1:假如一个表有10万行数据,而现在要执行一个如下语句将amount字段的值全部在原来的基础上增加1000

UPDATE sales.january SET amount=amount+1000 ;

如果影响的行数过于庞大,日志内记录的是执行的语句

情况2:如果像某一个指定的行内字段插入数据

UPDATE student SET Email = "XXX" WHERE StudentNo = ???; 

此时就不能记录语句了,因为不同时间执行的结果是不一样的。这是应该记录这一行的值,这种就是基于行(row)的二进制日志

情况3:如果出现触发器 存储函数 这种方式进行数据的更新的话,可能会结合两种方式来进行记录,这种叫做 混合方式的二进制日志

日志滚动

在my.cnf中设定max_binlog_size = 200M,表示限制二进制日志最大尺寸为200M,超过200M后进行滚动。

MySQL的滚动方式与其他日志不太一样,滚动时会创建一个新的编号大1的日志用于记录最新的日志,而
原日志名字不会被改变。每次重启MySQL服务,日志都会自动滚动一次。

#日志查看
查看有哪些二进制日志文件:mysql> SHOW BINARY LOGS;
查看当前正在使用的是哪一个二进制日志文件:mysql> SHOW MASTER STATUS;

5.2 MySQL备份

5.2.1备份类型

根据服务器的状态,备份分为三种类型:热备份、温备份、冷备份。

  1. 热备份:读、写不受影响;
  2. 温备份:仅可以执行读操作;
  3. 冷备份:读写均终止,离线备份;

从对象的角度分析,分为物理备份以及逻辑备份

  1. 物理备份:复制数据文件
  2. 逻辑备份:将数据导出至目标 XXX.sql文件中

从数据收集上来分,分为完全备份、增量备份、差异备份

  1. 完全备份:备份全部的数据
  2. 增量备份:仅备份上次完全备份或增量备份后所变化的数据
  3. 差异备份:仅备份上次完全备份后变化的数据

逻辑备份的优缺点

优点

  1. 在备份速度上两种备份要取决于当前的存储引擎
  2. 物理备份的还原速度非常快,但是物理备份的最小单元只能做到表
  3. 逻辑备份保存的结构通常都是ASCII形式,所以我们只能通过.sql方式进行保存
  4. 逻辑备份有非常强的兼容性,而物理备份对版本要求非常高
  5. 逻辑备份对保持数据的安全性有保障

缺点

  1. 逻辑备份会对DBMS产生额外的压力,物理备份则无明显压力
  2. 逻辑备份的结果可能比信息本身还要大。可以通过压缩来缓解这一现象。
  3. 针对于高精度内容,逻辑备份可能会倒置浮点精度丢失。

5.2.2 备份内容

数据文件
数据结构
日志(二进制日志,事务日志)
存储过程,存储函数,触发器
个人配置信息
脚本信息

5.2.3 常见的备份工具

MySQL自带的工具

基于DBMS=====> mysqldump

mysqldump 是mysql数据库管理系统,自带的逻辑备份工具。支持所有的主流引擎,MyISAM引擎是温备,InnoDB引擎是热备。备份速度中等,还原速度较慢。因此在实现还原时,我们会采用其他的方式进行操作。

#备份所有数据库:
mysqldump -uroot -p --all-databases > /usr/local/databases.sql
#备份指定的数据库(数据表)
mysqldump -uroot -p MySchool_db student grade > /usr/local/MySchool_db.sql;
-------------------------------------------------------------------------------------------
#还原方式1
use MyScl_db;
source/usr/local/MySchool_db.sql;
#还原方式2
mysql -uroot -p MyScl_db < /usr/local/MySchool_db.sql
--------------------------------------------------------------------------------------------

其他工具

ibbackup 商业工具 MyISAM是温备份,InnoDB是热备份 ,备份和还原速度都很快,这个软件它的每服务器授权版本是5000美元。

xtrabackup 开源工具 MyISAM是温备份,InnoDB是热备份 ,是ibbackup商业工具的替代工具。

mysqlbackup ORACLE公司也提供了针对企业的备份软件MySQL Enterprise Backup简称:mysqlbackup。

MySQL企业备份工具执行在线“热备“,无阻塞的MySQL数据库备份。全备份可以在所有InnoDB数据库上
执行,而无需中断MySQL查询或更新。此外,支持增量备份,只备份自上次备份后有变化的数据。另外部分备
份,支持特定的表或表空间按需要进行备份。

#备份
选择需要备份的数据库,右键-》备份/导出-》以SQL转储文件备份数据库
选择需要恢复的数据库,右键-》导入-》从sql转储文件导入数据库PS 不要混用,可能会出现冲突,注意甄别核心命令

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

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

相关文章

C/C++ - 函数进阶(C++)

目录 默认参数 函数重载 内联函数 函数模板 递归函数 回调函数 默认参数 定义 默认参数是在函数声明或定义中指定的具有默认值的函数参数。默认参数允许在调用函数时可以省略对应的参数&#xff0c;使用默认值进行替代。 使用 默认参数可以用于全局函数和成员函数。默认参…

C语言KR圣经笔记 5.12 复杂声明

5.12 复杂声明 C 语言有时会因为声明的语法而受到谴责&#xff0c;特别是涉及函数指针的声明语法。语法试图使声明和使用一致&#xff1b;在简单的情况下它的效果不错&#xff0c;但在更复杂的情况下会让人困惑&#xff0c;因为声明不能从左往右读&#xff0c;而且括号被过度使…

Linux文本三剑客---sed经典案例

Sed介绍&#xff1a; sed是一种流编辑器&#xff0c;它一次处理一行内容。处理时&#xff0c;把当前处理的行存储在临时缓冲区中&#xff0c;称为“模式空间”&#xff0c;接着用sed命令处理缓冲区中的内容&#xff0c;处理完成后&#xff0c;把缓冲区的内容送往屏幕。接着处理…

Mybatis-plus原生pages分页未生效的解决方案

文章目录 前言原因1、Mybatis Plus版本的问题2、Mapper.xml文件中SQL语句格式问题3、Mybatis Plus默认分页拦截器问题4、分页参数传参问题5、分页配置的问题 解决方案1、升级对应的Mybatis-plus版本分页插件配置问题3、自定义分页拦截器4、正确的参数5、不同版本的配置文件3.4.…

Hugging Face创始人分享:企业如何在ChatGPT浪潮下实现战略布局

Hugging Face创始人兼首席执行官 Clem Delangue在IBM一年一度的 THINK大会中研讨了当前人工智能发展趋势&#xff0c;特别是ChatGPT模型以及其对行业的影响。他的演讲还涉及到一个关键的议题&#xff0c;在ChatGPT这样的通用模型出现后&#xff0c;企业如何在人工智能领域找到自…

QR 分解cpu程序

1. 代码 Makefile EXE : hello_qrSRC_QR qr_main.c qr_func.c $(EXE): $(SRC_QR)gcc $^ -o $ -lm.PHONY: clean clean:-rm -rf $(EXE) qr_main.c #include "stdio.h"int maqr(double* a,int m,int n,double* q);int main() {int i,j;static double q[4][4],a[4]…

全能相似度计算与语义匹配搜索工具包,多维度实现多种算法,涵盖文本、图像等领域。支持文图搜索,满足您在不同场景下的搜索需求

全能相似度计算与语义匹配搜索工具包,多维度实现多种算法,涵盖文本、图像等领域。支持文图搜索,满足您在不同场景下的搜索需求。 Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索 Similar…

window下如何安装ffmpeg(跨平台多媒体处理工具)

ffmpeg是什么? FFmpeg是一个开源的跨平台多媒体处理工具&#xff0c;可以用于录制、转换和流媒体处理音视频。它包含了几个核心库和工具&#xff0c;可以在命令行下执行各种音视频处理操作&#xff0c;如剪辑、分割、合并、媒体格式转换、编解码、流媒体传输等。FFmpeg支持多…

C++类和对象引入以及类的介绍使用

文章目录 一、面向过程和面向对象的初步认识二、类的引入2.2 类的引入 三、类的访问限定符及封装3.3 访问限定符3.4 【面试题】C中struct和class的区别3.5 类的两种定义方式 四、封装【面试题】面向对象的三大特性 五、类的作用域六、类的实例化七、类对象模型7.1 类对象的存储…

postman之接口参数签名(js接口HMAC-SHA256签名)

文章目录 postman之接口参数签名&#xff08;js接口签名&#xff09;一、需求背景二、签名生成规则三、postman js接口签名步骤1. postman设置全局、或环境参数2. 配置Pre-request Scripts脚本 四、Pre-request Scripts脚本 常见工作整理1. js获取unix时间戳2. body json字符串…

day35WEB 攻防-通用漏洞XSS 跨站反射存储DOMBeef-XSS

目录 一&#xff0c;XSS 跨站-原理&分类&手法&探针 1、原理 2、分类 3、危害 二&#xff0c;反射型XSS 1&#xff0c;案例演示 三&#xff0c;存储型XSS 1&#xff0c;案例演示 四&#xff0c;DOM 型XSS 五&#xff0c;XSS 利用环境-XSS 平台&Beef-XS…

探讨UI自动化测试几步骤

随着软件开发的不断发展&#xff0c;UI自动化测试变得越来越重要&#xff0c;它能够提高测试效率、降低人为错误&#xff0c;并确保软件交付的质量。本文将介绍UI自动化测试的一般步骤和一些最佳实践&#xff0c;以帮助开发团队更好地实施自动化测试。 需求分析和选择测试工具&…

QT+VS实现Kmeans++

1、Kmeans的原理如下&#xff1a; &#xff08;1&#xff09;首先选取样本中任一数据点作为第一个聚类中心&#xff1b; &#xff08;2&#xff09;计算样本每一个数据点至现所有聚类中心的最近距离&#xff0c;并记录下来&#xff1b; &#xff08;3&#xff09;逐一挑选所…

MySQL死锁解析与解决方法

在数据库管理中&#xff0c;死锁是一种常见而又棘手的问题。当多个事务相互等待对方释放锁资源时&#xff0c;死锁就会发生。本文将介绍MySQL中死锁产生的原因、如何查询死锁&#xff0c;以及解决死锁的方法。 1. 死锁的原因 死锁通常是由于多个事务竞争相同资源而引起的。以下…

电脑监控软件:提升工作效率与保障信息安全

随着信息技术的飞速发展&#xff0c;电脑已经成为了我们日常生活和工作中不可或缺的工具。然而&#xff0c;随着电脑使用频率的增加&#xff0c;工作效率低下、信息泄露等问题也日益凸显。为了解决这些问题&#xff0c;电脑监控软件应运而生&#xff0c;为我们的工作和生活提供…

基于vue实现待办清单案例

一、需求 新增内容&#xff1b; 删除内容&#xff1b; 统计操作&#xff1b; 清空数据。 示例图&#xff1a; 二、代码演示 1、基础准备 index.css代码 html, body {margin: 0;padding: 0; } body {background: #fff ; } button {margin: 0;padding: 0;border: 0;backgr…

STM32duino舵机控制-2

使用定时器进行精确延时&#xff0c;串口接收数据进行 50 0度 --十六进制32 250 180度 --十六进制FA 串口接收到AA 32两个字节&#xff0c;舵机转到0度&#xff1b;接收到AA FA&#xff0c;转到180度。请验证代码&#xff1a; const unsigned…

马斯克将为 X 平台设立内容审核中心;Google Bard 冲上 LLM 排行榜第二

马斯克旗下社交媒体平台 X&#xff08;原 Twitter&#xff09;的业务运营主管 Joe Benarroch 表示&#xff0c;将在得州奥斯汀设立一个新的内容审核中心&#xff0c;招募 100 名全职员工。 该中心将重点打击平台上虐待儿童相关内容&#xff0c;并执行平台的仇恨言论限制政策&am…

雪深传感器的工作原理

TH-XL2雪深传感器的工作原理主要是利用超声波的发射和反射来测量雪的厚度。传感器发射超声波&#xff0c;超声波遇到雪表面后会反射回来&#xff0c;传感器再接收反射回来的超声波&#xff0c;通过计算超声波的传播时间和速度&#xff0c;就可以得出雪的厚度。 另外&#xff0c…

幻兽帕鲁服务器价格,这个价格不够电费的

幻兽帕鲁服务器价格多少钱&#xff1f;4核16G服务器Palworld官方推荐配置&#xff0c;阿里云4核16G服务器32元1个月、96元3个月&#xff0c;腾讯云换手帕服务器服务器4核16G14M带宽66元一个月、277元3个月&#xff0c;8核32G22M配置115元1个月、345元3个月&#xff0c;16核64G3…