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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL原理(二)存储引擎(3)InnoDB

目录 一、概况&#xff1a; 1、介绍&#xff1a; 2、特点&#xff1a; 二、体系架构 1、后台线程 2、内存池&#xff08;缓冲池&#xff09; 三、物理结构 1、数据文件&#xff08;表数据和索引数据&#xff09; 1.1、作用&#xff1a; 1.2、共享表空间与独立表空间 …

【C/C++ 05】快速排序

快速排序是Hoare于1962年提出的一种二叉树结构的交换排序算法&#xff0c;其基本思想是&#xff1a;任取待排序序列中的某元素作为基准值&#xff0c;按照该基准值将待排序集合分割成两个子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右子序列中所有元素均大于…

MySQL原理(二)存储引擎(1)概述

一、存储引擎介绍 1、概念&#xff1a; &#xff08;1&#xff09;MySQL中的数据用各种不下同的技术存储在文件中&#xff0c;每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力&#xff0c;这些不同的技术以及配套的功能在MySQL中称为存储引擎…

【数据结构与算法】7.详解队列的基本操作

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》|《数据结构与算法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢…

2024年最新 MySQL的下载、安装、启动与停止

一、MySQL的下载 MySQL最常用的2个版本&#xff1a; 社区版&#xff1a;免费开源&#xff0c;自由下载&#xff0c;不提供官方技术支持&#xff0c;大多数普通用户选择这个即可。企业版&#xff1a;需要付费&#xff0c;不能在线下载&#xff0c;可以使用30天&#xff0c;提供…

ctfshow web72

下载源码&#xff1a; 开启环境&#xff1a; 本题设置了 open_basedir()&#xff0c;将php所能打开的文件限制在指定的目录树中&#xff0c;包括文件本身。 因为 ini_set() 也被限制了&#xff0c;所以 open_basedir() 不能用 ini_set() 重新设置绕过。 使用 php 伪协议 glob:…

【网络】:网络套接字(UDP)

网络套接字 一.网络字节序二.端口号三.socket1.常见的API2.封装UdpSocket 四.地址转换函数 网络通信的本质就是进程间通信。 一.网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分,网…

数据结构----链表介绍、模拟实现链表、链表的使用

文章目录 1. ArrayList存在的问题2. 链表定义2.1 链表的概念及结构2.2 链表的组合类型 3. 链表的实现3.1 单向、不带头、非循环链表的实现3.2 双向、不带头节点、非循环链表的实现 4.LinkedList的使用4.1 什么是LinkedList4.2 LinkedList的使用4.2.1. LinkedList的构造4.2.2. L…

npm 淘宝镜像正式到期

由于node安装插件是从国外服务器下载&#xff0c;如果没有“特殊手法”&#xff0c;就可能会遇到下载速度慢、或其它异常问题。 所以如果npm的服务器在中国就好了&#xff0c;于是我们乐于分享的淘宝团队干了这事。你可以用此只读的淘宝服务代替官方版本&#xff0c;且同步频率…

Docker 数据管理、容器互联、网络与资源控制

一、docker数据管理 管理 Docker 容器中数据主要有两种方式&#xff1a;数据卷(Data volumes)和数据卷容器(Datavolumes containers)。 1、数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可将宿主机的目录挂载到数据卷上&#xff0c;对数据卷的修改操作立…

seata 分布式

一、下载安装seata 已经下载好的朋友可以跳过这个步骤。这里下载的是seata1.6.1这个版本。 1、进入seata官网 地址&#xff1a; https://seata.io/zh-cn/index.html 2、进入下载 3、点击下载地址 下载地址&#xff1a; https://github.com/seata/seata 二、配置seata 进入c…

​ PaddleHub 首页图像 - 文字识别chinese_ocr_db_crnn_server​

PaddleHub 便捷地获取PaddlePaddle生态下的预训练模型&#xff0c;完成模型的管理和一键预测。配合使用Fine-tune API&#xff0c;可以基于大规模预训练模型快速完成迁移学习&#xff0c;让预训练模型能更好地服务于用户特定场景的应用 零基础快速开始WindowsLinuxMac Paddle…

MacOS安装反编译工具JD-GUI以及解决无法打开的问题

目录 一.下载地址 二.安装 三.问题 四.解决办法 1.显示包内容 2.找到Contents/MacOS/universalJavaApplicationStub.sh 3.修改sh文件 4.保存后再次打开即可 一.下载地址 Java Decompiler 二.安装 将下载下来的 jd-gui-osx-1.6.6.tar 解压&#xff0c;然后将 JD-GUI.a…

驾驭AI绘画:《AI魔法绘画》带你秒变顶级画手!

大家好&#xff0c;我是herosunly。985院校硕士毕业&#xff0c;现担任算法研究员一职&#xff0c;热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名&#xff0c;CCF比赛第二名&#xff0c;科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

C++笔试强训选择题7

1.对于以下代码&#xff0c;说法正确的是&#xff08;&#xff09; char * p new char[100]&#xff1b;A p 和 new出来的内存都在栈上 B p 和 new出来的内存都在堆上 C p在栈上 new出来的在堆上 D p在堆上 new出来的在栈上 new默认情况下申请的空间在堆上 2. 类模板的使用…

微信小程序~上推加载更多组件

本组件使用的是TaroReact 实现的 &#xff0c;具体代码如下 一共分为tsx和less文件 //index.tsx /** RefreshLoading* description 上推加载更多组件* param loading boolean* param style* returns*/import { View } from "tarojs/components"; import React, { FC…

Ubuntu 20.04 Server 使用命令行设置 IP 地址

1、编辑 /etc/netplan/ 目录下的配置文件00-installer-config.yaml (修改之前&#xff0c;把原来的文件备份) 按照对应的配置进行修改IP地址和网关 2、运行命令使其生效 sudo netplan apply 修改完成后&#xff0c;永久有效。重启后配置不会丢失

ElasticSearch重建/创建/删除索引操作 - 第501篇

历史文章&#xff08;文章累计500&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 E…

ROS学习笔记11——ROS中的重名问题

一、ros功能包重名——ros工作空间覆盖 功能包重名时&#xff0c;会按照 ROS_PACKAGE_PATH 查找&#xff0c;在前的会优先执行。ROS 会解析 .bashrc 文件&#xff0c;并生成 ROS_PACKAGE_PATH ROS包路径&#xff0c;即调用功能包的顺序&#xff0c;该变量中按照 .bashrc 中配置…

三、ElasticSearch集群搭建实战

本篇ES集群搭建主要是在Linux VM上&#xff0c;未使用Docker方式, ES版本为7.10 ,选择7.10版本原因可以看往期文章介绍。 一、ElasticSearch集群搭建须知 JVM设置 Elasticsearch是基于Java运行的&#xff0c;es7.10可以使用jdk1.8 ~ jdk11之间的版本&#xff0c;更高版本还没…
最新文章