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

mysql之备份和恢复

(一)备份

1、备份的种类

(1)完全备份:将整个数据库完整的进行备份
(2)增量备份:在完全备份的基础上,对后续新增的内容进行备份

2、备份的需求

(1)在生产环境中,数据的安全至关重要,任何数据的丢失都可能产生严重的后果
(2)数据丢失的原因:程序操作、运算错误、磁盘故障、不可预期的事件、认为操作等等

3、备份的方法

(1)冷备份:关机备份,停止mysql服务,然后进行备份
(2)热备份:开机备份,无需关闭mysql服务,然后进行备份
(3)物理备份:对数据库系统的物理文件(数据文件、日志文件)进行备份
(4)逻辑备份:对数据库的逻辑组件进行备份(表结构),以sql语句的形式,把库、表结构、表数据进行备份保存(直接在数据库系统中删除所有文件,逻辑备份无法恢复)

(二)物理备份

1、物理备份:采用完全备份,对整个数据库进行完整的打包备份

2、优点:操作简单(打包、解包)
3、缺点:数据库文件占用量很大,占用空间大,备份和恢复的时间很长,而且需要暂停数据库
4、物理冷备份(关机备份)

打包备份最好关闭服务,避免有新的数据进入、被覆盖,也可能导致恢复失败

(1)创建两个数据库、建表、写入数据

5、远程复制库

(三)热备份中的逻辑备份

1、mysql自带的工具:mysqldump(逻辑恢复数据库)
(1)mysqldump:操作方便简单,但是只能基于逻辑上的表结构和表数据恢复,物理删除之后,再用逻辑恢复会报错;也可以作为数据迁移
(2)优点:较物理备份,相对来说占的空间要小得多
(3)缺点:占用空间大
2、命令

备份单个库:mysqldump -u root -p123 --databases test > /opt/test.sql

备份多个库:mysqldump -u root -p123 --databases test test1> /opt/test.sql

备份所有库:mysqldump -u root -p123 --all-databases > /opt/test.sql

3、实验

(1)物理删除数据库,会报错

(2)对多个库一次性备份

(3)备份所有的库

4、只恢复数据表

(1)单个表

(2)多个表

5、mysql的命令

(1)mysql连接执行之后即退出
-e:指定连接mysql之后,执行完命令之后,自动退出

(四)增量备份

1、mysqldump也支持增量备份

  1. 增量备份:没有重复数据,备份量小,时间短
  2. mysqldump增量备份恢复表数据期间,表会锁定
  3. 缺点:备份时锁表,必然会影响业务(超过10G大小,耗时会比较长,导致服务不可用)
  4. mysql提供的二进制日志间接的视线增量备份

2、mysql二进制日志记录格式有三种

(1)STATEMENT:基于sql语句
特点:记录修改的sql语句,高并发情况下,记录sql语句时候的顺序可能会出错,恢复数据时可能会导致丢失和误差,效率比较高
(2)ROW:基于行
特点:精准记录每一行的数据,准确率高,但是恢复时的效率低
(3)MIXED:混合模式,既可以根据sql语句,也可以根据行
特点:在正常情况下使用STATEMENT,一旦发生高并发,会智能自动切换ROW行

3、二进制文件怎么来(修改配置文件)

4、位置恢复(基于位置点进行恢复):

(1)从某一个点开始,恢复到最后
格式:mysqlbinlog --no-defaults --start-position=位置点 文件名 | mysql -u root -p
(2)从开头一直恢复到某个位置
格式:mysqlbinlog --no-defaults --stop-position=位置点 文件名 | mysql -u root -p
(3)从指定点到指定结束点(位置范围)
格式:mysqlbinlog --no-defaults --start-position=位置点 --stop-position=位置点 文件名 | mysql -u root -p
(4)实验

5、时间恢复(基于时间点进行恢复)

(1)从某个事件点开始,恢复到最后
格式:mysqlbinlog --no-defaults --start-datetime=位置点 文件名 | mysql -u root -p
(2)从开头一直恢复到某个时间点
格式:mysqlbinlog --no-defaults --stop-datetime=位置点 文件名 | mysql -u root -p
(3)从指定时间点到指定结束时间点(时间范围)
格式:mysqlbinlog --no-defaults --start-datetime=位置点 --stop-datetime=位置点 文件名 | mysql -u root -p
(4)实验

6、总结

(1)在生产中,通过binlog进行增量恢复是非常好用的方法,只需要对binlog文件进行备份,随时可以进行备份和恢复

(五)配置文件

1、MySQL 的日志默认保存位置为 /usr/local/mysql/data

2、错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启

(1)log-error=/usr/local/mysql/data/mysql_error.log

3、通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的

(1)general_log=ON
(2)general_log_file=/usr/local/mysql/data/mysql_general.log

4、二进制日志(binlog),用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启

(1)log-bin=mysql-bin
(2)log_bin=mysql-bin

5、慢查询日志,用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的

(1)slow_query_log=ON
(2)slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
(3)long_query_time=5(设置慢查询时间,超过5秒记录)

6、查看通用查询日志是否开启:show variables like 'general%';

7、查看二进制日志是否开启:show variables like 'log_bin%';

8、查看慢查询日功能是否开启:show variables like '%slow%';

9、 查看慢查询时间设置:show variables like 'long_query_time';

10、在数据库中设置开启慢查询的方法:set global slow_query_log=ON;

相关文章:

mysql之备份和恢复

(一)备份 1、备份的种类 (1)完全备份:将整个数据库完整的进行备份 (2)增量备份:在完全备份的基础上,对后续新增的内容进行备份 2、备份的需求 (1&#x…...

【音视频 | Ogg】libogg库详细介绍以及使用——附带libogg库解析.opus文件的C源码

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

如何使用群晖NAS的Audio Station结合内网穿透实现远程访问本地曲库

文章目录 本教程解决的问题是:按照本教程方法操作后,达到的效果是本教程使用环境:1 群晖系统安装audiostation套件2 下载移动端app3 内网穿透,映射至公网 很多老铁想在上班路上听点喜欢的歌或者相声解解闷儿,于是打开手…...

要在CentOS中安装Docker

要在CentOS中安装Docker,请按照以下步骤进行操作: 首先,确保系统已更新到最新版本。运行以下命令: sudo yum update接下来,安装需要的软件包以允许使用HTTPS进行软件包下载。运行以下命令: sudo yum ins…...

Android Gldie复用只取之前decode过的缓存resource,Kotlin

Android Gldie复用只取之前decode过的缓存resource,Kotlin import android.graphics.Bitmap import android.os.Bundle import android.util.Log import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.life…...

EasyExcel实现动态表头功能

EasyExcel实现动态表头功能 开发过程中,大部分都会使用到导出报表功能,目前阶段会用得有 poi导出(暂无), easyexcel导出(官方文档,https://easyexcel.opensource.alibaba.com/docs/current/&am…...

Python | 安装、环境配置及包的安装

Python | 安装、环境配置及包的安装 一、前言二、python安装及编辑器配置2.1 python安装2.2 python调试2.3 python编辑器 | PyCharm2.3.1 PyCharm下载2.3.2 PyCharm安装2.3.3 PyCharm启动界面2.3.4 PyCharm初步设置2.3.5 PyCharm环境配置(含Python Interpreter配置)2.3.5.1 New…...

CentOS 7 安装 JDK17(注意版本号要与自己的版本一致)

查看是否有自带的 JDK java -versionrpm -qa | grep jdk卸载自带 JDK rpm -e --nodeps [name] # 如 rpm -e --nodeps java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64查看自带 JDK 是否卸载干净 java -versionrpm -qa | grep jdk在 oracle 官网下载自己所需 JDK 版本&#x…...

JavaScript 数组操作

JavaScript 中的数组提供了各种操作方法,包括增加、删除、修改、查找、排序、遍历、去重和转换等。以下是一些常用的数组操作方法: 增加元素 push(element1, element2, …, elementN): 将一个或多个元素添加到数组的末尾,并返回新数组的长度…...

idea使用lombok编译问题

idea编译报错问题如下: java: You arent using a compiler supported by lombok, so lombok will not work and has been disabled.Your processor is: com.sun.proxy.$Proxy26Lombok supports: OpenJDK javac, ECJ解决方案:在idea配置中File->Setti…...

GoLong的学习之路(番外)如何使用依赖注入工具:wire

我为什么要直接写番外呢?其原因很简单。项目中会使用,其实在这里大家就可以写一些项目来了。 依赖注入的工具本质思想其实都大差不差。无非控制反转和依赖注入。 文章目录 控制反转为什么需要依赖注入工具 wire的概念提供者(provider&#x…...

【pyspider】爬取ajax请求数据(post),如何处理python2字典的unicode编码字段?

情景:传统的爬虫只需要设置fetch_typejs即可,因为可以获取到整个页面。但是现在ajax应用越来越广泛,所以有的网页不能用此种爬虫类型来获取页面的数据,只能用slef.crawl()来发起http请求来抓取数据。 直接上例子: 可以…...

torch.cumprod实现累乘计算

cumprod取自“cumulative product”的缩写,即“累计乘法”。 数学公式为: y i x 1 x 2 x 3 . . . x i y_ix_1\times{x_2}\times{x_3}\times{...}\times{x_i} yi​x1​x2​x3​...xi​ 官方链接:torch.cumprod 用法: impo…...

设计模式之迭代器模式

什么是迭代器模式 迭代器模式(Iterator pattern)是一种对象行为型设计模式,它提供了一种方法来顺序访问聚合对象中的元素,而又不暴露该对象的内部表示,同时也可以将迭代逻辑与聚合对象的实现分离,增强了代码…...

使用SSH ,让windows和linux互通

简介 SSH 是一种安全网络协议,旨在让客户端和服务器之间进行安全的数据传输。SSH 的核心思想是利用公钥加密技术和共享密钥加密技术相结合的方式,使客户端和服务器之间建立起安全的连接。 当客户端发起连接请求时,服务器会对客户端进行身份验…...

常用设计模式——策略模式

策略模式是什么 策略模式(Strategy):针对一组算法,将每一个算法封装起来,从而使得它们可以相互替换。 比如我们一个软件的会员等级,每一个等级都会有对应的一些等级权益,那么每一个等级权益就…...

牛客网 CM11.链表分割

目录 1.解题思路2.代码实现 1.解题思路 此题目思路相对简单,利用双指针,一个指针指向小于val的,一个指针指向大于等于val的,但实现起来,如果仅仅使用单链表,那么还需特别判断第一个指针是否为空从而特意做…...

[iOS开发]iOS中TabBar中间按钮凸起的实现

在日常使用app的过程中,经常能看到人家实现了底部分栏控制器的中间按钮凸起的效果,那么这是怎么实现的呢? 效果演示: 实现原理: 创建按钮 创建一个UITabBar的子类,重写它的layoutSubviews方法&#xff1…...

数字时代,企业的数据共享意味着什么?

随着数字化整体在社会方方面面的推进,通过数据直接或间接创造的价值越来越大,逐渐成为了构建现代社会的重要要素。而对于企业来说,数据也是在数字经济中容易接触也切实能够利用产生大量价值,所以如何最大化利用数据,让…...

壹[1],QT自定义控件创建(QtDesigner)

1,环境 Qt 5.14.2 VS2022 原因:厌烦了控件提升的繁琐设置,且看不到界面预览显示。 2,QT制作自定义控件 2.1,New/其他项目/Qt4 设计师自定义控件 2.2,设置项目名称 2.3,设置 2.4,设…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

idea大量爆红问题解决

问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...