当前位置: 首页 > news >正文

(五)MySQL的备份及恢复

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 不要混用,可能会出现冲突,注意甄别核心命令

相关文章:

(五)MySQL的备份及恢复

1、MySQL日志管理 在数据库保存数据时&#xff0c;有时候不可避免会出现数据丢失或者被破坏&#xff0c;这样情况下&#xff0c;我们必须保证数据的安全性和完整性&#xff0c;就需要使用日志来查看或者恢复数据了 数据库中数据丢失或被破坏可能原因&#xff1a; 误删除数据…...

VitePress-04-文档中的表情符号的使用

说明 vitepress 的文档中是支持使用表情符号的&#xff0c;像 &#x1f602; 等常用的表情都是支持的。 本文就来介绍它的使用方式。 使用语法 语法 &#xff1a; :表情名称: 例如 &#xff1a; :joy: &#x1f602; 使用案例代码 # 体会【表情】的基本使用 > hello world …...

Redis客户端之Redisson(二)Redisson组件

Redisson的几个常用客户端 一、RedissonClient 1、创建 通过Config对象配置RedissonClient所需要的参数&#xff0c;然后获取RedissonClient对象即可。 Config config new Config(); config.useSingleServer().setAddress("redis://127.0.0.1:6379"); RedissonC…...

用Visual Studio Code创建JavaScript运行环境【2024版】

用Visual Studio Code创建JavaScript运行环境 JavaScript 的历史 JavaScript 最初被称为 LiveScript&#xff0c;由 Netscape&#xff08;Netscape Communications Corporation&#xff0c;网景通信公司&#xff09;公司的布兰登艾奇&#xff08;Brendan Eich&#xff09;在 …...

spring-web搭建

先说说这篇文章看完你能学习到什么吧 1&#xff1a;spring-web是什么原理以及组成&#xff0c;2&#xff1a;spring-web的搭建&#xff08;以普通tomcat服务器做基础&#xff09;&#xff0c;3&#xff1a;敲黑板 1&#xff1a;spring-web是什么原理以及组成 spring-web是sp…...

C++ 之LeetCode刷题记录(二十三)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 目标&#xff1a;执行用时击败90%以上使用 C 的用户。 118. 杨辉三角 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows …...

在ubuntu上在安装Squid代理服务器

Squid 是一个代理和缓存服务器&#xff0c;它将请求转发到所需的目的地&#xff0c;同时保存请求的内容&#xff0c;当你再次请求相同内容时&#xff0c;他可以向你提供缓冲内容&#xff0c;从而提高访问速度。Squid代理服务器目前支持的协议有&#xff1a;http、SSL、DNS、FTP…...

如何解决 MySQL 的 socket 错误

MySQL 通过使用 socket 文件 来管理与数据库服务器的连接&#xff0c;这是一种特殊类型的文件&#xff0c;用于促进不同进程之间的通信。MySQL 服务器的 socket 文件名为 mysqld.sock&#xff0c;在 Ubuntu 系统中通常存储在 /var/run/mysqld/ 目录中。这个文件会被 MySQL 服务…...

5G智慧钢铁厂数字孪生三维可视化,推进钢铁新型工业化数字化转型

5G智慧钢铁厂数字孪生三维可视化&#xff0c;推进钢铁新型工业化数字化转型。随着科技的不断发展&#xff0c;数字化转型已经成为钢铁企业转型升级的必经之路。而5G技术的广泛应用&#xff0c;为钢铁企业数字化转型提供了新的机遇。其中&#xff0c;5G智慧钢铁厂数字孪生三维可…...

万户 ezOFFICE DocumentEditExcel.jsp SQL注入漏洞

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…...

OpenCV 2 - 矩阵的掩膜操作

1知识点 1-1 CV_Assert(myImage.depth() == CV_8U); 确保输入图像是无符号字符类型,若该函数括号内的表达式为false,则会抛出一个错误。 1-2 Mat.ptr(int i = 0); 获取像素矩阵的指针,索引 i 表示第几行,从0开始计行数。 1-3 const uchar* current = mylmage.ptr(row); 获得…...

linux -- 内存管理 -- 页面分配器

linux内存管理 为什么要了解linux内存管理 分配并使用内存&#xff0c;是内核程序与驱动程序中非常重要的一环。内存分配函数都依赖于内核中一个非常复杂而重要的组件 - 内存管理。 linux驱动程序不可避免要与内核中的内存管理模块打交道。 linux内存管理可以总体上分为两大…...

StarRocks-3.1.0 单节点部署

1. 相关环境准备 FE&#xff1a; /opt/starrocks BE&#xff1a; /opt/starrocks 安装包下载 wget https://releases.starrocks.io/starrocks/StarRocks-3.1.0.tar.gz解压缩 tar -zxvf StarRocks-3.1.0.tar.gz 安装jdk (v2.5 及以上版本建议安装 JDK 11&#xff0c;我们使用…...

2023美赛A题之Lotka-Volterra【完整思路+代码】

这是2023年的成功&#xff0c;考虑到曾经付费用户的负责&#xff0c;2024年可以发出来了。去年我辅导队伍数量&#xff1a;15&#xff0c;获奖M为主&#xff0c;个别F&#xff0c;H&#xff0c;零S。言归正传&#xff0c;这里我开始分享去年的方案。由于时间久远&#xff0c;我…...

关于如何将Win幻兽帕鲁服务端存档转化为单人本地存档的一种方法(无损转移)

本文转自博主的个人博客&#xff1a;https://blog.zhumengmeng.work,欢迎大家前往查看。 原文链接&#xff1a;点我访问 **起因&#xff1a;**最近大火的开放世界缝合体游戏幻兽帕鲁的大火也是引起了博主的注意&#xff0c;然后博主和周边小伙伴纷纷入手&#xff0c;博主也是利…...

计算机网络——IP协议

前言 网络层的主要负责地址分配和路由选择,ip负责在网络中进行数据包的路由和传输。 IPv4报文组成&#xff08;了解&#xff09; IPv4首部&#xff1a;IPv4首部包含了用于路由和传输数据的控制信息&#xff0c;其长度为20个字节&#xff08;固定长度&#xff09;。 版本&#…...

Linux命令-ar命令(建立或修改备存文件,或是从备存文件中抽取文件)

补充说明 ar命令 是一个建立或修改备存文件&#xff0c;或是从备存文件中抽取文件的工具&#xff0c;ar可让您集合许多文件&#xff0c;成 为单一的备存文件。在备存文件中&#xff0c;所有成员文件皆保有原来的属性与权限. 语法 ar [-]{dmpqrtx}[abcfilNoPsSuvV] [memberna…...

flask基于python的个人理财备忘录记账提醒系统vue

在当今高度发达的信息中&#xff0c;信息管理改革已成为一种更加广泛和全面的趋势。 “备忘记账系统”是基于Mysql数据库&#xff0c;在python程序设计的基础上实现的。为确保中国经济的持续发展&#xff0c;信息时代日益更新&#xff0c;蓬勃发展。同时&#xff0c;随着信息社…...

【leetcode题解C++】257.二叉树的所有路径 and 404.左叶子之和 and 112.路径总和

257. 二叉树的所有路径 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->2->5",&…...

Linux——文本编辑器Vim

Linux中的所有内容以文件形式管理&#xff0c;在命令行下更改文件内容&#xff0c;常常会用到文本编辑器。我们首选的文本编辑器是Vim&#xff0c;它是一个基于文本界面的编辑工具&#xff0c;使用简单且功能强大&#xff0c;更重要的是&#xff0c;Vim是所有Linux发行版本的默…...

嵌入式开发高效数据结构:queue.h解析与应用

1. 嵌入式开发中的数据结构利器&#xff1a;queue.h深度解析在嵌入式开发的江湖里&#xff0c;数据结构的选择往往决定了程序的效率和稳定性。今天我要分享的是一个被很多开发者忽视的"神兵利器"——queue.h头文件。这个来自FreeBSD和Linux系统的头文件&#xff0c;通…...

BD663474车载LCD驱动芯片技术解析与CARIAD集成实践

1. BD663474驱动芯片技术解析&#xff1a;面向CARIAD车载显示系统的TFT-LCD底层控制实现BD663474是ROHM半导体推出的一款专为汽车级TFT-LCD面板设计的源极驱动&#xff08;Source Driver&#xff09;与栅极驱动&#xff08;Gate Driver&#xff09;集成控制器&#xff0c;广泛应…...

实战指南:用Python的pyttsx3库打造你的专属语音助手

1. 从零认识pyttsx3&#xff1a;你的代码会说话 第一次听到电脑用标准播音腔朗读出我写的文字时&#xff0c;那种感觉就像小时候收到会说话的生日贺卡。pyttsx3这个神奇的Python库&#xff0c;能让任何文本通过声卡变成人声。不同于需要联网的语音合成服务&#xff0c;它完全离…...

从“被看错”到“卖爆”,宇树机器人全国首店开业:机器狗平价上路,人形机器人掀价!

在经历了八年的深耕与资本的反复试炼后&#xff0c;杭州宇树科技&#xff08;Ushush Technology&#xff09;今天迎来了一个标志性的时刻——其全国首家线下门店正式在京东Mall西门入口处开业。这不仅是宇树向消费者展示“具身智能”实力的窗口&#xff0c;更是其“讲人形的故事…...

V821 DISP 显示驱动流程分析

文章目录1、前言2、环境介绍3、大致流程4、程序阅读5、总结1、前言 在全志 V821 下调试 RGB 屏幕时&#xff0c;因为一直创建不出 fb 节点&#xff0c;这里记录一下当时阅读显示驱动框架的过程。仅供参考。 2、环境介绍 sdk&#xff1a;V821 tina sdk v1.3 3、大致流程 初…...

时间序列分类新范式:从技术突破到商业落地全指南

时间序列分类新范式&#xff1a;从技术突破到商业落地全指南 【免费下载链接】InceptionTime 项目地址: https://gitcode.com/gh_mirrors/in/InceptionTime 时间序列分类是数据分析领域的核心挑战&#xff0c;传统方法往往在多尺度特征捕捉、实时性分析和复杂场景适应性…...

不再依赖翻译专员:跨马翻译让运营人员也能独立完成高质量多语言出图

一、一个让中型跨境团队头疼的问题 我们团队从最初的单人作战发展到现在的十五人规模&#xff0c;花了大概三年时间。团队架构从最早的"运营一肩挑"&#xff0c;逐步细分为运营组、产品组、设计组、客服组和市场组。分工越来越明确&#xff0c;但问题也随之而来——翻…...

具备“看屏幕”能力的Agent能解决哪些传统接口无法解决的问题?实在Agent以ISSUT视觉感知构建企业级AI智能体新高度

2026年4月&#xff0c;人工智能领域正经历从“文本对话”向“具身操作”的范式跨越。根据腾讯云在2026年3月27日发布的《Agent全景产品图谱》&#xff0c;具备“看屏幕”能力的视觉智能体已成为破除数字化转型“最后一步”僵局的核心变量。在过去的一周内&#xff0c;清华大学与…...

2026届学术党必备的六大AI辅助论文工具实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 知网在近期对自己的 AIGC 检测服务进行了升级&#xff0c;其目的在于识别存在于论文之中的、…...

终极指南:如何在Windows、macOS和Linux上使用Pot跨平台翻译工具

终极指南&#xff1a;如何在Windows、macOS和Linux上使用Pot跨平台翻译工具 【免费下载链接】pot-desktop &#x1f308;一个跨平台的划词翻译和OCR软件 | A cross-platform software for text translation and recognize. 项目地址: https://gitcode.com/pot-app/pot-deskto…...