MySQL学习-非事务相关的六大日志、InnoDB的三大特性以及主从复制架构

一. 六大日志

  • 慢查询日志:记录所有执行时间超过long_query_time的查询,方便定位并优化。
# 查询当前慢查询日志状态
SHOW VARIABLES LIKE 'slow_query_log';
#启用慢查询日志
SET GLOBAL slow_query_log = 'ON';
#设置慢查询文件位置
SET GLOBAL slow_query_log_file = '/path/to/your/slow-query.log';
#设置慢查询的阈值 ,单位秒
SET GLOBAL long_query_time = 2
#记录所有未走索引的查询到慢查询日志
SET GLOBAL log_queries_not_using_indexes = 'ON';
  • 通用查询日志:记录用户的所有操作,包括启动和关闭MySQL服务、所有用户的连接开始时间和截止时间、发给MySQL数据库服务器的所有SQL指令等,如select、show等,无论SQL的语法正确还是错误、也无论SQL执行成功还是失败,MySQL都会将其记录下来。通用查询日志用来还原操作时的具体场景,可以帮助我们准确定位一些疑难问题,比如重复支付等问题。
# 查询通用查询日志状态
show variables like '%general_log%';
# 打开通用查询日志
SET GLOBAL general_log=on;
# 设置通用查询日志文件位置
SET GLOBAL general_log_file='/path/to/your/general.log';

3.错误日志:记录了数据库启动和停止,以及运行过程中发生任何严重错误时的相
关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。
在MySQL数据库中,错误日志功能是默认开启的,而且无法被关闭。

# 查看错误日志存放位置
show variables like '%log_error%';

4.二进制日志:即binlog日志,记录了所有执行过的修改操作语句,不保存查询语句。可用于数据库灾备和主从复制。

# 查看binlog相关参数
show variables like '%log_bin%';

打开或关闭binlog文件需要在mysql配置文件中修改(Mysql5.7默认关闭,Mysql8.0默认开启),然后重启数据库

# log‐bin设置binlog的存放位置,可以是绝对路径,也可以是相对路径,这里写的相对路径,则binlog文件默认会放在data数据目录下
log‐bin=mysql‐binlog
# Server Id是数据库服务器id,随便写一个数都可以,这个id用来在mysql集群环境中标记唯一mysql服务器,集群环境中每台mysql服务器的id不能一样,不加启动会报错
server‐id=1
# 其他配置
binlog_format = row # 日志文件格式
expire_logs_days = 15 # 执行自动删除binlog日志文件的天数, 默认为0, 表示不自动删除
max_binlog_size = 200M # 单个binlog日志文件的大小限制,默认为 1GB

binlog日志格式
在Mysql配置文件中可以设置binlog_format不同的参数来设置不同的binlog日志记录格式,MySQL支持三种binlog日志格式:

  • statement:基于sql语句的复制,每一条修改语句都会记录到binlog日志中,这样的记录方式数据量小,节省I/O开销,但是遇到一直执行时才能确定结果的函数,例如:UUID(),RAND(),SYSDATE()等函数,如果使用binlog恢复数据或者从机通过binlog同步数据,则会出现不一致的问题。
  • row:基于行的复制,日志中会记录成每一条记录的修改语句,可以解决函数、存储过程等问题,但是日志里较大,没有statement性能好。假设update语句更新10行数据,statement方式就记录这条update语句,row方式会记录被修改的10行数据。
  • mixed:混合模式,两种方式的结合,MySQL会根据执行语句的不同来选择不同的记录方式,也就是statement和row中选一种,如果sql里有需要执行才能确定的函数,那么就用row的形式记录,其他情况就用statement。推荐用这种方式。

binlog写入磁盘的机制
binlog写入磁盘的方式由sync_binlog参数控制,默认是0

  • 为0的时候,表示每次提交事务都只 write 到page cache,由系统自行判断什么时候执行 fsync 写入磁盘。虽然性能得到提升,但是机器宕机,page cache里面的 binlog 会丢失。
  • 也可以设置为1,表示每次提交事务都会执行 fsync 写入磁盘,这种方式最安全。
  • 还有一种折中方式,可以设置为N(N>1),表示每次提交事务都write 到page cache,但累积N个事务后才 fsync 写入磁盘,这种如果机器宕机会丢失N个事务的binlog。
  1. 中继日志:MySQL8.0加入的日志,用于主从服务器架构中,从服务器存放主服务器二进制日志的一个中间文件,从服务器通过读取中继日志,来同步主服务器的操作。
  2. 数据定义语句日志:MySQL8.0加入的日志,记录数据定义语句执行的元数据操作。

InnoDB的三大特性

双写缓冲区

innodb的基本操作单位是数据页,一个页是16KB,而系统和磁盘间的数据操作是以4KB为操作单位进行的,这样一个数据页写入对应到磁盘可能需要执行多次,极端情况下,可能会出现数据页只写前面一部分,然后发生系统宕机的问题。
对于这样的极端情况就可以使用双写缓冲区来恢复

  • 在执行脏页刷盘时MySQL实际会写两份,一份通过顺序写写到双写缓冲区文件,一份随机写写到磁盘也就是数据的实际落盘
  • 通过fsync多写一次数据到双写缓冲区,虽然顺序写大概还是会造成5%-10%的性能消耗,但是能保证数据的安全
  • 数据写入双写缓冲区成功,真实落盘失败时,会通过双写缓冲区拿到写入的数据重新落盘
  • 数据写入双写缓冲区如果失败,MySQL会通过B+树载入原始数据,通过redoLog恢复原始数据

自适应的hash索引

Innodb存储引擎会监控对表上二级索引的查找,如果发现某二级索引被频繁访问,这个二级索引建立对应的哈希索引提高性能(这个hash索引时存在BufferPool的)

BufferPool

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

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

相关文章

Linux(磁盘管理与文件系统)

目录 1. 磁盘基础 1.1 磁盘结构 1.2 MBR 1.3 磁盘分区结构 2. 文件系统类型 2.1 XFS文件系统 2.2 SWAP 2.3 fdisk命令 2.4 创建新硬盘 3.创建文件系统 3.1 mkfs 3.2 挂载、卸载文件系统 3.3 查看磁盘使用情况 1. 磁盘基础 1.1 磁盘结构 磁盘的物理结构 盘片:硬…

工业相机曝光、增益、自动曝光、自动增益参数功能介绍和设置指南

工业相机曝光、增益、自动曝光、自动增益参数功能介绍和设置指南 工业相机基本参数介绍工业相机曝光、增益、亮度等介绍工业相机如何设置曝光参数工业相机如何设置增益参数 工业相机基本参数介绍 在使用工业相机时,曝光、增益、亮度和信噪比之间有密切的相互关系。…

大数据:【学习笔记系列】flink和spark的区别

Apache Flink 和 Apache Spark 是两种流行的大数据处理框架,它们在架构、性能和使用场景等方面都有各自的特点和优势。下面是对 Flink 和 Spark 主要区别的详细对比: 1. 处理方式:流处理 vs 微批处理 Apache Flink: Flink 被设计…

35. UE5 RPG制作火球术技能

接下来,我们将制作技能了,总算迈进了一大步。首先回顾一下之前是如何实现技能触发的,然后再进入正题。 如果想实现我之前的触发方式的,请看此栏目的31-33篇文章,讲解了实现逻辑,这里总结一下: …

微服务拆分:打造高性能、高扩展的未来架构

目录 一、微服务介绍 二、主链路规划 2.1 业务完整性 2.2 转化率重因子 2.3 流量端占比 2.4 现金水库 三、如何识别主链路 3.1 导流端 3.2 转化端 3.3 漏斗中部:订单转化 3.4 漏斗底部:下单 四、总结 一、微服务介绍 单体应用将所有的功能都…

微服务架构与Dubbo

一、微服务架构 微服务架构是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。 分布式系统式若干独立系统的集合,但是用户使用起来好像是在使用一套系统。 和微服务对应的是单体式开发,即所有的功能打包在一个WAR…

静默拷贝U盘里的ppt/pptx

专门用于拷贝老师讲课的课件!!!本程序需要编译,运行后无界面,如果需要关闭的话,请从任务管理器里关闭 附上代码: import os import shutil import time import psutil# 获取本机硬盘盘符列表 …

搭建Zookeeper完全分布式集群(CentOS 9 )

ZooKeeper是一个开源的分布式协调服务,它为分布式应用提供了高效且可靠的分布式协调服务,并且是分布式应用保证数据一致性的解决方案。该项目由雅虎公司创建,是Google Chubby的开源实现。 分布式应用可以基于ZooKeeper实现诸如数据发布/订阅…

Vue的生命周期的详解

Vue的生命周期是每个使用Vue框架的前端人员都需要掌握的知识,以此作为记录。 Vue的生命周期就是vue实例从创建到销毁的全过程,也就是new Vue() 开始就是vue生命周期的开始。Vue 实例有⼀个完整的⽣命周期,也就是从开始创建、初始化数据、编译…

算法|最大堆、最小堆和堆排序的实现(JavaScript)

一些概念 堆&#xff1a;特殊的完全二叉树&#xff0c;具有特定性质的完全二叉树。大根堆&#xff1a;父节点 > 子节点小根堆&#xff1a;父节点 < 子节点 二叉堆也属于完全二叉树&#xff0c;所以可以用数组表示。 若下标从1开始&#xff0c;左节点为 2*i &#xff0…

树莓派4B+Debian(Raspbian)+开机自启动Python文件

非系统全面的教程&#xff0c;只是记录操作过程中的问题和解决方案。 说明1&#xff1a;树莓派的不同版本&#xff0c;要查看CPU的位数、内存大小&#xff1b;从而确定安装的raspbian的对应版本 若是对应64位的OS&#xff0c;安装成了32位的OS&#xff0c;可能会对系统中安装…

ChatGPT助手:写作无忧

ChatGPT无限次数:点击直达 ChatGPT助手&#xff1a;写作无忧 在当今信息爆炸的时代&#xff0c;写作已经成为了各行各业不可或缺的技能。无论是学术论文、技术博客还是市场推广文案&#xff0c;文字的质量往往决定了一篇作品的成败。然而&#xff0c;对于许多人来说&#xff0…

5、JVM-G1详解

G1收集器 -XX:UseG1GC G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征. G1将Java堆划分为多个大小相等的独立区域&#xff08;Region&#xff09;&#xff0c;JVM目标…

Qt中定时器的3种实现方法

一.使用QTimer定时器类&#xff08;首选&#xff09; 1.示例代码&#xff1a; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); ui->setupUi(this); time1 new QTimer(); time1->setInterval(1000…

SQL书写顺序与执行顺序

1、书写顺序 sql语句的书写顺序: select >> from >> where >> group by >> having >> order by >> limit select [ALL | DISTINCT | DISTINCTROW | TOP] 字段 from 表 [inner join right join | left join 表2] [on 连接条件] [where …

代码学习记录25---单调栈

随想录日记part45 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.04.17 主要内容&#xff1a;今天开始要学习单调栈的相关知识了&#xff0c;今天的内容主要涉及&#xff1a;每日温度 &#xff1b;下一个更大元素 I 739. 每日温度 496.下一个更大元素 I Topic…

pytorch中unsqueeze用法说明

在指定的位置插入一个维度&#xff0c;有两个参数&#xff0c;input是输入的tensor&#xff0c;dim是要插到的维度 需要注意的是dim的范围是[-input.dim()-1, input.dim()1)&#xff0c;是一个左闭右开的区间&#xff0c;当dim为负值时&#xff0c;会自动转换为dim diminput.…

书生·浦语大模型全链路开源体系-第4课

书生浦语大模型全链路开源体系-第4课 书生浦语大模型全链路开源体系-第4课相关资源XTuner 微调 LLMXTuner 微调小助手认知环境安装前期准备启动微调模型格式转换模型合并微调结果验证 将认知助手上传至OpenXLab将认知助手应用部署到OpenXLab使用XTuner微调多模态LLM前期准备启动…

Mac电脑上有什么好玩的格斗游戏 《真人快打1》可以在苹果电脑上玩吗

你是不是喜欢玩格斗游戏&#xff1f;你是不是想在你的Mac电脑上体验一些刺激和激烈的对战&#xff1f;在这篇文章中&#xff0c;我们将介绍Mac电脑上有什么好玩的格斗游戏&#xff0c;以及《真人快打1》可以在苹果电脑上玩吗。 一、Mac电脑上有什么好玩的格斗游戏 格斗游戏是…

HTML优化SEO

在网站开发中&#xff0c;除了关注设计和用户体验&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;也是提升网站流量和可见度的关键。合理的HTML结构和元素运用能够帮助搜索引擎更好地理解页面内容&#xff0c;从而提高搜索排名。以下是一些基于HTML的SEO优化技巧&#xf…