(五)MySQL的备份及恢复

news2024/12/23 8:36:40

1、MySQL日志管理

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

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

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

MySQL日志类型

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

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

刷新日志命令:

mysql > FLUSH LOGS
mysqladmin flush-logs

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%';

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%';

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';

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;

2、MySQL备份

2.1备份类型

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

热备份:读、写不受影响;

温备份:仅可以执行读操作;

冷备份:读写均终止,离线备份;

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

物理备份:复制数据文件

逻辑备份:将数据导出至目标 XXX.sql文件中

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

完全备份:备份全部的数据

增量备份:仅备份上次完全备份或增量备份后所变化的数据

差异备份:仅备份上次完全备份后变化的数据

逻辑备份的优缺点

优点

在备份速度上两种备份要取决于当前的存储引擎

物理备份的还原速度非常快,但是物理备份的最小单元只能做到表

逻辑备份保存的结构通常都是ASCII形式,所以我们只能通过.sql方式进行保存

逻辑备份有非常强的兼容性,而物理备份对版本要求非常高

逻辑备份对保持数据的安全性有保障

缺点

逻辑备份会对DBMS产生额外的压力,物理备份则无明显压力

逻辑备份的结果可能比信息本身还要大。可以通过压缩来缓解这一现象。

针对于高精度内容,逻辑备份可能会倒置浮点精度丢失。

2.2 备份内容

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

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.coloradmin.cn/o/1419286.html

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

相关文章

二进制安全虚拟机Protostar靶场(6)堆的简单介绍以及实战 heap1

前言 这是一个系列文章&#xff0c;之前已经介绍过一些二进制安全的基础知识&#xff0c;这里就不过多重复提及&#xff0c;不熟悉的同学可以去看看我之前写的文章 程序静态分析 https://exploit.education/protostar/heap-one/#include <stdlib.h> #include <unis…

笔记本键盘卸载或自动跳出字符故障或按键无效修复办法

首先&#xff0c;在Windows 10操作系统中&#xff0c;您可以在笔记本电脑桌面上找到"计算机"图标&#xff0c;并使用鼠标右键点击它。然后选择"属性"选项。 打开系统属性后&#xff0c;您会看到右上角有一个"设备管理器"选项。请点击它来打开设…

Vim实战:使用Vim实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构编译安装Vim环境环境安装过程安装库文件 计算mean和std生成数据集 摘要 论文&#xff1a;https://arxiv.org/pdf/2401.09417v1.pdf 翻译&#xff1a; 近年来&#xff0c;随着深度学习的发展&#xff0c;视觉模型…

适用于 Mac 的 9 款最佳数据恢复软件列表

查看 2024 年 Mac 最佳数据恢复软件的完整列表&#xff0c;并随时恢复您想要的任何类型的数据。 “我们只是人类&#xff0c;我们应该犯错误”。这句话适用于生活的各个方面。错误是会发生的&#xff0c;正是错误使你成为人。 您可以使用 Mac 在线传输内容、上网、工作、玩游…

在Mixamo网站上,下载的动画导入unity给自己的模型添加后出错怎么解决

在Mixamo网站上&#xff0c;下载的动画导入unity给自己的模型添加后出错 一、在Mixamo下载的模型可以正常使用二、在自己的模型和unity自带模型上就出错1.解决方法2.解决成功 注意 一、在Mixamo下载的模型可以正常使用 二、在自己的模型和unity自带模型上就出错 1.解决方法 选…

asp.net core监听本地ip地址

开发asp.net core的时候遇到一个问题我想提供访问供其他同事测试&#xff0c;但是默认都是localhost或者127.0.0.1。我想换成我的Ip地址访问但是不行&#xff0c;百度搜索需要更换监听的地址即修改launchSettings.json&#xff0c;修改为0.0.0.0:5248&#xff0c;这样不管local…

数据结构——用Java实现二分搜索树

目录 一、树 二、二分搜索树 1.二叉树 2.二分搜索树 三、代码实现 1.树的构建 2.获取树中结点的个数 3.添加元素 4.查找元素 &#xff08;1&#xff09;查找元素是否存在 &#xff08;2&#xff09;查找最小元素 &#xff08;3&#xff09;查找最大元素 5.二分搜索…

数字美妆技术:美颜SDK和动态贴纸技术的崭新时代

数字美妆的兴起标志着人们对于自身形象的追求不再局限于现实生活&#xff0c;而是延伸到了虚拟世界。同时&#xff0c;美颜SDK的动态贴纸技术也开始进入到大家的视野之中。 一、美颜SDK&#xff1a;技术之作 通过复杂的图像处理算法&#xff0c;美颜SDK能够实时检测人脸&…

Lua语法基本使用

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

【网络基础】IP

IP协议报头 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节. 8位服务类型(Type Of Service): 3位优先权字段(已经弃用…

网络空间搜索引擎

随着互联网、物联网、传感网、社交网络等信息系统所构成的泛在网络不断 发展&#xff0c;网络终端设备数量呈指数级上升。这为企业进行终端设备资产清点和统一 管控带来了巨大挑战&#xff0c;同时也引发了一系列安全问题&#xff0c;网络攻击与防御的博弈从 单边代码漏洞发展到…

SpringMVC 自动配置

SpringMVC 自动配置 一、WebMvcAutoConfiguration&#xff08;SpringMVC自动配置&#xff09;二、DisPatcherServletAutoConfiguration.class&#xff08;中央调度器自动配置&#xff09;三、WebMvcConfigurationSupport&#xff08;SpringMVC组件配置类&#xff09;四、Servle…

RHCE 搭建DNS域名解析服务器

目录 一、前述 1、BIND&#xff08;Berkeley Internet Name Domain&#xff09; 2、bind服务中三个关键文件 1&#xff09;主配置文件/etc/named.conf 2&#xff09;区域配置文件/etc/named.rfc1912.zones 正向解析 反向解析 3&#xff09;数据配置文件目录/var/named/…

STM32 1-5

目录 STM32简介 点亮PC13LED GPIO LED闪烁 LED流水灯 按键控制LED 光敏传感器控制蜂鸣器 OLED调试工具 OLED显示 EXTI外部中断 对射式红外传感器计次 旋转编码器计次 继续 STM32简介 点亮PC13LED main.c #include "stm32f10x.h" // D…

Hadoop-MapReduce-YarnChild启动篇

一、源码下载 下面是hadoop官方源码下载地址&#xff0c;我下载的是hadoop-3.2.4&#xff0c;那就一起来看下吧 Index of /dist/hadoop/core 二、上下文 在上一篇<Hadoop-MapReduce-MRAppMaster启动篇>中已经将到&#xff1a;MRAppMaster的启动&#xff0c;那么运行M…

如何让wordpress首页只显示某一篇文章全部内容?在您的主页显示选择

大多数WordPress站点首页默认都是显示最新发布的文章列表&#xff0c;不过有些站点比较特殊&#xff0c;只想显示某一篇文章的全部内容&#xff0c;那么应该怎么设置呢&#xff1f; 其实&#xff0c;WordPress后台 >> 设置 >> 阅读 >> 在“您的主页显示”中…

VS+QT 配置Eigen库

1、下载Eigen库&#xff0c;如下&#xff1a; 2、解压到项目目录下&#xff0c;如下&#xff1a; 3、 在C/C中包含文件&#xff0c;如下&#xff1a; 4、在头文件中加入如下代码&#xff1a; 5、测试代码&#xff1a; //.cpp文件 #include "testEigen.h"testEigen::…

【Python】03快速上手爬虫案例三:搞定药师帮

文章目录 前言1、破解验证码2、获取数据 前言 流程&#xff1a;通过用户名、密码、搞定验证码&#xff0c;登录进药师帮网站&#xff0c;然后抓取想要的数据。 爬取数据&#xff0c;最终效果图&#xff1a; 1、破解验证码 使用药师帮测试系统&#xff1a;https://dianrc.ysb…

快速入门存内计算—助力人工智能加速深度学习模型的训练和推理

存内计算&#xff1a;提高计算性能和能效的新技术 传统的计算机架构是将数据存储在存储器中&#xff0c;然后将数据传输到计算单元进行处理。这种架构存在一个性能瓶颈&#xff0c;即数据传输延迟。存内计算通过将计算单元集成到存储器中&#xff0c;消除了数据传输延迟&#…

HiveSQL题——窗口函数(lag/lead)

目录 一、窗口函数的知识点 1.1 窗户函数的定义 1.2 窗户函数的语法 1.3 窗口函数分类 1.4 前后函数:lag/lead 二、实际案例 2.1 股票的波峰波谷 0 问题描述 1 数据准备 2 数据分析 3 小结 2.2 前后列转换&#xff08;面试题&#xff09; 0 问题描述 1 数据准备 …