MySQL备份恢复

news2024/11/15 10:50:35

MySQL日志管理

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

MySQL日志类型

日志类型计入文件中的信息类型
错误日志记录启动,运行或停止时出现的问题
查询日志记录建立的客户端连接和执行语句的日志
二进制日志记录的是所有更改的语句,主要用于复制和快照点的恢复
慢日志记录了所有执行时间超过查询上限时间的所有查询记录或不使用索引来查询的记录
事务日志记录INNODB等支持事务的存储引擎执行事务时所产生的日志

默认情况下,所有日志创建于MySQL的数据目录内,通过刷新日志,我们可以强制MySQL来关闭和重新打开日志文件(切换处理),当执行了FLUSH LOGS语句或mysqladmin flush-logs或mysqladmin refresh,出现日志刷新,如果此时正在使用MySQL复制功能,从复制的服务器将维护更多的日志文件,被称为接替日志。

在MySQL中,执行sql语句

FLUSH LOGS;

在shell内,通过mysqladmin命令执行日志刷新

mysqladmin -uroot -p flush-logs;
输入密码
或者
mysqladmin -uroot -p refresh;
输入密码

错误日志

错误日志主要记录如下几种日志:
①服务器启动和关闭过程中的信息
②服务器运行过程中的错误信息
③事件调度器运行一个时间时产生的信息
④在从服务器上启动从服务器进程时产生的信息

错误日志定义:
可以用–log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。如果没有给定file_name值,mysqld使用错误日志名host_name.err,并在数据记录中写入日志文件。如果你执行FLUSH LOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。(如果未给出–log-error选项,则不会重新命名)

查看当前错误日志的配置

SHOW GLOBAL VARIABLES LIKE '%log_error%';
mysql> SHOW GLOBAL VARIABLES LIKE '%log_error%';
+----------------------------+----------------------------------
| Variable_name              | Value                            
+----------------------------+----------------------------------
| binlog_error_action        | ABORT_SERVER                     
| log_error                  | /var/log/mysqld.log              
| log_error_services         | log_filter_internal; log_sink_int
| log_error_suppression_list |                                  
| log_error_verbosity        | 2                                
+----------------------------+----------------------------------
5 rows in set (0.00 sec)

从上表可以看出错误日志文件的目录为/var/log/下的mysqld.log

是否记录警告日志

SHOW GLOBAL VARIABLES LIKE '%log_warnings%';

通用查询日志

查看当前通用查询日志的配置

SHOW GLOBAL VARIABLES LIKE '%general_log%';
或者
SHOW GLOBAL VARIABLES LIKE '%log_output%';

启动开关: general_log={ON||OFF};
日志文件变量: general_log_file[=/PATHTO/file]
全局日志开关: log={ON||OFF} 该开关打开后,所有日志都会被启用
记录类型: log_output={TABLE|FILE|NONE}:
因此,要启用通用日志查询,需要至少配置general_log=ON,log_output={TABLE|FILE}。而general_log_file如果没有指定,默认名是host_name_log。

慢查询日志

MySQL如果启用了slow_query_log=ON选项,就会记录执行时间超过long_query_time的查询(初始表锁定的时间不算作执行时间)。日志记录文件为slow_query_log_file[=file_name],如果没有给出file_name值,默认为主机名,后缀为-slowlog。如果给出了文件名,但不是绝对路径名,文件则写入数据目录。

默认与慢查询相关变量的配置

# 默认没有启用慢查询,为了服务器调优,建议开启
SHOW GLOBAL VARIABLES LIKE '%slow_query_log%';

# 开启方法,当前生效,永久有效配置文件中设置
SET GLOBAL slow_query_log=ON;

# 使用mysqldumpslow命令获得日志中显示的查询要求来处理慢查询日志
# mysqldumpslow slow.log
# 那么多久算是慢呢?
# 如果查询时长超过long_query_time的定义值(默认10s),即为慢查询
SHOW GLOBAL VARIABLES LIKE 'long_query_time';

二进制日志

# 二进制日志启动开关
log_bin[=file_name]

二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。

语句以“事件”的形式保存,他描述数据更改。二进制日志还包含了关于每个更新数据库的语句的执行时间信息。它不包含没有修改任何数据的语句。

二进制日志的主要目的是在数据库存在故障时,恢复时能够最大可能的更新数据库(即时点恢复),因为二进制日志包含了包含备份后进行的所有更新。二进制日志还用于在主复制服务器上记录所有将发送给服务器的语句。

二进制日志是记录执行的语句还是执行后的结果数据呢?分三种情况
1、加入一个表有10万行数据,而现在要执行一个如下语句将amount字段的值全部在原来的基础上增加1000:

UPDATE sales.january SET amount=amount+1000;

此时如果要记录执行后的结果数据的话,日志会非常大。因此在这种情况下应记录执行语句。这种方式就是基于语句的二进制日志。
2、如果向某个字段插入的是当前的时间呢?如下

INSERT INTO tb SET Birthdate=CURRENT_TIME();

此时就不能记录语句了,因为不同时间执行的结果是不一样的。这时影噶记录这一行的值,这种就是基于行(row)的二进制日志。
3、在有些情况,可能会结合两种方式来记录,这种叫做混合方式的二进制日志。
二进制日志的管理
日志滚动。在my.cnf中设定max_binlog_size=200M,表示限制二进制日志最大容量为200M,超过200M后进行滚动。MySQL的滚动方式与其他日志不太一样,滚动时会创建一个新的编号大于1的日志用于记录最新的日志,而原日志名字不会被改变,则使用命令FLUSH LOGS;
日志查看

# 查看有哪些二进制日志文件:
SHOW BINARY LOGS;

# 查看当前正在使用的是哪一个二进制日志文件:
SHOW MASTER STATUS;

# 执行一下删表操作后再查看一下正在使用的日志文件,可以观察到记录

# 查看二进制日志内容:
SHOW BINLOG EVENTS IN 'mysqld-binlog.00002' FROM  203;

# 该语句还可以加上Position(位置),指定显示从哪个Position(位置)开始:
SHOW BINLOG EVENTS IN 'mysqld-binlog.00002' FROM 203;

使用命令mysqlbinlog查看二进制日志内容:mysqlbinlog [OPTIONS] log-files

MySQL备份

备份类型

根据服务器状态,可以分为热备份、温备份、冷备份
①热备份:读写不受影响
②温备份:仅可以执行读操作
③冷备份:离线备份;读写操作均中止

从对象来分,可以分为物理备份与逻辑备份
①物理备份:复制数据文件;
②逻辑备份:将数据导出至文本文件中。

从数据收集来分,可以分为完全备份、增量备份、差异备份
①完全备份:备份全部数据
②增量备份:仅备份上次完全备份或增量备份以后变化的数据
③差异备份:仅备份上次完全备份以来变化的数据。

逻辑备份的优缺点
优点:
在备份速度上两种备份要取决于不同的存储引擎。
物理备份的还原速度非常快,但是物理备份的最小粒度只能做到表。
逻辑备份保存的结构通常都是纯ASCII的,所以我们可以使用文本处理工具来处理。
逻辑备份有非常强的兼容性,而物理备份则对版本要求非常高。
逻辑备份也对数据的安全性有保证。
缺点:
逻辑备份要求对RDBMS产生额外的压力,而裸备份无压力。
逻辑备份的结果可能要比源文件更大。所以很多人都对备份的内容进行压缩。
逻辑备份可能会丢失浮点数的精度信息。

备份内容

数据文件
日志文件(比如事务日志,二进制日志)
存储过程,存储函数,触发器
配置文件(十分重要,各个配置文件都要备份)
用于实现数据库备份的脚本,数据库自身清理的Crontab等…

备份工具

MySQL自带的备份工具 DBMS提供的
mysqldump,是MySQL数据库管理系统,自带的逻辑备份工具,支持所有引擎,MylSAM引擎是温备,InnoDB引擎是热备,备份速度中速,还原速度非常非常慢,但是在实现还原的时候,具有很大的操作余地,具有很好的弹性。

需求: 将test中的student表进行逻辑备份,转储在目标目录内

# mysqldump
mysqldump -u root -p 数据库名[表名 表名 表名] > sql转储的地址
mysqldump -u root -p test student > /usr/local/mysqlbackups/test.sql

需求: 将test.sql恢复

sql命令
SOURCE 目录
SOURCE /usr/local/mysqlbackups/test.sql;

或者

shell命令
mysql -uroot -p 数据库名 < 目录
[root@localhost /]# mysql -u root -p test2 < /usr/local/mysqlbackups/test.sql
Enter password:

工具方式:
例如使用Navicat Premium工具

备份:
在这里插入图片描述
恢复:
在这里插入图片描述
在这里插入图片描述
然后进行选择即可。

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

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

相关文章

Android Studio实现简易计算器(带横竖屏,深色浅色模式,更该按钮颜色,selector,style的使用)

目录 前言 运行结果&#xff1a; 运行截屏&#xff08;p50e&#xff09; apk文件 源码文件 项目结构 总览 MainActivity.java drawable 更改图标的方法&#xff1a; blackbutton.xml bluebuttons.xml greybutton.xml orangebuttons.xml whitebutton.xml layout 布…

uniapp项目实践总结(二十七)苹果应用商店上架教程

导语&#xff1a;之前介绍了如何打包一个苹果安装包文件&#xff0c;如果想要上架苹果 ios 应用商店&#xff0c;那么就来这里学习一下方法吧。 目录 准备材料上架步骤审核事项 准备材料 基本信息 构建版本&#xff1a;需要一个 ipa 格式安装包&#xff1b;logo&#xff1a…

YOLOv5、YOLOv8改进:RepVGG结构

1.简介 论文参考&#xff1a;最新RepVGG结构: Paper 我们所说的“VGG式”指的是&#xff1a; 没有任何分支结构。即通常所说的plain或feed-forward架构。 仅使用3x3卷积。 仅使用ReLU作为激活函数。 主要创新点为结构重参数化。在训练时&#xff0c;网络的结构是多分支进…

计数排序详解

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言 这种排序在部分情境下出奇地好&#xff0c;也是一种不错的排序 思路 有一个无序数组&#xff0c;我们从中找到最小和最大的数&#xff0c;最大的数减最小的数1的大小就是我们将要新建数组的大小&#xff0c;这个新建数…

14链表-环形链表、龟兔赛跑算法

目录 LeetCode之路——141. 环形链表 分析&#xff1a; 解法一&#xff1a;哈希表 解法二&#xff1a;龟兔赛跑 LeetCode之路——141. 环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针…

美团外卖优惠券小程序 美团优惠券微信小程序 自带流量主模式 带教程

小程序带举牌小人带菜谱流量主模式&#xff0c;挺多外卖小程序的&#xff0c;但是都没有搭建教程 搭建&#xff1a; 1、下载源码&#xff0c;去微信公众平台注册自己的账号 2、解压到桌面 3、打开微信开发者工具添加小程序-把解压的源码添加进去-appid改成自己小程序的 4、…

第十七章:Java连接数据库jdbc(java和myql数据库连接)

1.进入命令行&#xff1a;输入cmd&#xff0c;以管理员身份运行 windowsr 2.登录mysql 3.创建库和表 4.使用Java命令查询数据库操作 添加包 导入包的快捷键 选择第四个 找到包的位置 导入成功 创建java项目 二&#xff1a;连接数据库&#xff1a; 第一步&#xff1a;注册驱动…

单层神经网络

神经网络 人工神经网络&#xff08;Artificial Neural Network&#xff0c;ANN&#xff09;&#xff0c;简称神经网络&#xff08;Neural Network&#xff0c;NN&#xff09;&#xff0c;是一种模仿生物神经网络的结构和功能的数学模型或计算模型。1943年&#xff0c;McCulloc…

软件工程从理论到实践客观题汇总(头歌第九章至第十七章)

九、软件体系结构设计 1、软件体系结构设计概述 2、软件体系结构模型的表示方法 3、软件体系结构设计过程 4、设计初步的软件体系结构 5、重用已有软件资源 6、精化软件体系结构 7、设计软件部署模型 8、文档化和评审软件体系结构设计 十、软件用户界面设计 1、用户界面设计概…

十四天学会C++之第四天(面向对象编程基础)

类和对象是什么&#xff1f; 在C中&#xff0c;类是一种用户定义的数据类型&#xff0c;它可以包含数据成员&#xff08;也就是属性&#xff09;和成员函数&#xff08;也就是方法&#xff09;。类是一种模板或蓝图&#xff0c;用于创建具体的对象。 对象是类的实例&#xff…

【C++类和对象】:构造函数、析构函数、拷贝构造函数、赋值运算符重载

【C类和对象】&#xff1a;构造函数、析构函数、拷贝构造函数、赋值运算符重载 一、构造函数1.1 概念1.2 性质1.3 实例 二、析构函数2.1 概念2.2 性质2.3 实例 三、拷贝构造函数3.1 概念3.2 性质3.3 实例 四、赋值运算符重载4.1 运算符重载4.2 2 赋值运算符重载1. 赋值运算符重…

一文读懂UTF-8的编码规则

之前写过一篇文章“一文彻底搞懂计算机中文编码”里面只是介绍了GB2312编码知识&#xff0c;关于utf8没有涉及到&#xff0c;经过查询资料发现utf8是对unicode的一种可变长度字符编码&#xff0c;所以再记录一下。 现在国家对于信息技术中文编码字符集制定的标准是《GB 18030-…

yolov8封装进入ROS系统

一,yolov8的环境配置工作 说明:需要相关工程全部源码的可私聊博主或评论留言 配置工作可以参考我的一篇关于yolov8环境配置的博客。 需要说明的是:直接使用: pip install ultralytics 会导致后面对于网络结构的改进无法运行。所以如果需要对网络结构进行改进的同学,不要使用…

学信息系统项目管理师第4版系列17_干系人管理

1. 项目经理和团队管理干系人的能力决定着项目的成败 2. 干系人满意度应作为项目目标加以识别和管理 3. 发展趋势和新兴实践 3.1. 识别所有干系人&#xff0c;而非在限定范围内 3.2. 确保所有团队成员都涉及引导干系人参与的活 3.3. 定期审查干系人群体&#xff0c;可与单…

互联网Java工程师面试题·Dubbo篇·第一弹

目录 1、为什么要用 Dubbo&#xff1f; 2、Dubbo 的整体架构设计有哪些分层? 3、默认使用的是什么通信框架&#xff0c;还有别的选择吗? 4、服务调用是阻塞的吗&#xff1f; 5、一般使用什么注册中心&#xff1f;还有别的选择吗&#xff1f; 6、默认使用什么序列化框架&…

CUDA+cuDNN+TensorRT 配置避坑指南

深度学习模型加速部署的环境配置&#xff0c;需要在本地安装NVIDIA的一些工具链和软件包&#xff0c;这是一个些许繁琐的过程&#xff0c;而且一步错&#xff0c;步步错。笔者将会根据自己的经验来提供建议&#xff0c;减少踩坑几率。当然可以完全按照官方教程操作&#xff0c;…

新手学习笔记-----⽂件操作

目录 1. 为什么使⽤⽂件&#xff1f; 2. 什么是⽂件&#xff1f; 2.1 程序⽂件 2.2 数据⽂件 2.3 ⽂件名 3. ⼆进制⽂件和⽂本⽂件&#xff1f; 4. ⽂件的打开和关闭 4.1 流和标准流 4.1.1 流 4.1.2 标准流 4.2 ⽂件指针 4.3 ⽂件的打开和关闭 5. ⽂件的顺序读写 …

多层神经网络和激活函数

多层神经网络的结构 多层神经网络就是由单层神经网络进行叠加之后得到的&#xff0c;所以就形成了层的概念&#xff0c;常见的多层神经网络有如下结构&#xff1a; 1&#xff09;输入层&#xff08;Input layer&#xff09;&#xff0c;众多神经元&#xff08;Neuron&#xff…

点云处理开发测试题目

点云处理开发测试题目 文件夹中有一个场景的三块点云数据&#xff0c;单位mm。是一个桌子上放了一个纸箱&#xff0c;纸箱上有四个圆孔。需要做的内容是&#xff1a; 1. 绘制出最小外接立方体&#xff0c;得到纸箱的长宽高值。注意高度计算是纸箱平面到桌子平面的距离。 2. 计…

【每日一题】买卖股票的最佳时机 IV

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;动态规划 写在最后 Tag 【动态规划】【数组】【2023-10-04】 题目来源 188. 买卖股票的最佳时机 IV 题目解读 本题与 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 II、123. 买卖股票的最佳时机 III 题意目的一…