当前位置: 首页 > 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,设…...

轻量级加密新选择:tiny-AES-c深度解析

轻量级加密新选择:tiny-AES-c深度解析 【免费下载链接】tiny-AES-c Small portable AES128/192/256 in C 项目地址: https://gitcode.com/gh_mirrors/ti/tiny-AES-c 在嵌入式系统与物联网设备等资源受限环境中,数据安全面临着独特挑战。轻量级AES…...

【OpenCore Configurator】:解决黑苹果配置难题的智能化解决方案

【OpenCore Configurator】:解决黑苹果配置难题的智能化解决方案 【免费下载链接】OpenCore-Configurator A configurator for the OpenCore Bootloader 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Configurator OpenCore Configurator作为一款针…...

CameraKit-Android终极社区贡献指南:从新手到核心开发者的完整教程

CameraKit-Android终极社区贡献指南:从新手到核心开发者的完整教程 【免费下载链接】camerakit-android Library for Android Camera 1 and 2 APIs. Massively increase stability and reliability of photo and video capture on all Android devices. 项目地址:…...

Windows窗口置顶3分钟快速上手指南:告别频繁切换的烦恼

Windows窗口置顶3分钟快速上手指南:告别频繁切换的烦恼 【免费下载链接】PinWin Pin any window to be always on top of the screen 项目地址: https://gitcode.com/gh_mirrors/pin/PinWin 你是否曾在处理多个窗口时感到手忙脚乱?当你在写代码时…...

DynamiCrafter完全指南:从安装到生成高质量动画视频

DynamiCrafter完全指南:从安装到生成高质量动画视频 【免费下载链接】DynamiCrafter DynamiCrafter: Animating Open-domain Images with Video Diffusion Priors 项目地址: https://gitcode.com/gh_mirrors/dy/DynamiCrafter DynamiCrafter是一款强大的AI动…...

AI赋能监控:让快马平台的Kimi模型帮你智能识别网页每日真更新

今天想和大家分享一个最近用AI辅助开发的实用小工具——智能网页更新检测系统。这个项目的核心目标是解决传统网页监控工具"误报率高"和"无法识别实质性更新"的痛点,特别适合需要跟踪竞品动态或内容更新的运营同学。 语义摘要比对技术 传统方案…...

Eigen库实战指南——从基础到精通

1. Eigen库基础入门:矩阵与向量操作 第一次接触Eigen库是在做机器人运动学仿真时,当时被它简洁的API设计惊艳到了。这个纯头文件的C模板库,不需要编译安装,只需包含头文件就能使用,对开发者极其友好。Eigen最核心的Mat…...

让论文润色提速的秘密武器

对于每一位科研人员而言,将心血凝聚成论文初稿仅仅是万里长征的第一步。紧接着,一场更为煎熬的“拉锯战”往往在修改环节悄然打响。你是否也经历过这样的时刻:为了一个地道的表达,对着电脑屏幕逐字逐句地斟酌,耗费数小…...

SIM4LIFE Light保姆级教程:手把手搞定第一个人体SAR值仿真(附FDTD模块避坑指南)

SIM4LIFE Light保姆级教程:手把手搞定第一个人体SAR值仿真(附FDTD模块避坑指南) 电磁场仿真在生物医学工程领域扮演着越来越重要的角色,而SIM4LIFE Light作为一款专为人体组织电磁特性研究设计的仿真软件,凭借其内置的…...

告别写死地址!CH32V IAP升级实战:用函数传参实现APP跳转地址的动态配置

CH32V IAP升级进阶:动态跳转地址的工程实践与安全设计 在嵌入式开发中,IAP(In-Application Programming)技术是实现固件远程更新的重要手段。对于CH32V系列RISC-V MCU而言,官方示例中"写死"跳转地址的做法虽…...