Mysql高级11-后台进程
一、前言
二、Master Thread
- 复制事件的写入:当有新的事务被提交到主数据库时,Master Thread负责将复制事件写入到二进制日志(Binary Log)中。这些复制事件是描述对主数据库进行的数据修改操作的逻辑记录。
- 二进制日志文件的轮询:Master Thread负责轮询二进制日志文件,以确定是否有新的复制事件添加到日志中。它会定期检查是否需要创建新的二进制日志文件,以限制单个日志文件的大小。
- 与从数据库进行通信:Master Thread与从数据库进行网络通信,将复制事件传输给从库。它将复制事件以事件流的形式发送给从数据库,确保从数据库可以获取到主库上所有的数据更改操作。
- 复制相关的线程管理:Master Thread管理其他复制相关的线程,如IO Thread和SQL Thread。IO Thread负责从从库读取和处理复制请求,SQL Thread负责执行复制事件。
- Master Thread在MySQL启动时启动,并一直运行在后台,直到MySQL关闭。它是MySQL复制架构中非常重要的一部分,保证了数据的可靠复制和同步
三、IO Thread
- 与从库建立连接:IO Thread负责与一个或多个从库建立连接,并保持与从库的持久连接。通过这些连接,从库可以向主库发送复制请求,请求复制主库中的数据。
- 从从库读取复制事件:一旦与从库建立了连接,IO Thread会定期从从库读取复制事件。这些复制事件是由Master Thread将主库上的数据更改操作以二进制格式写入到二进制日志中,并通过IO Thread传输给从库的。
- 处理复制事件:IO Thread读取复制事件后,会将这些事件发送给SQL Thread处理。SQL Thread将复制事件解析并执行相应的数据更改操作,保证从库中的数据与主库保持同步。
IO Thread是在MySQL启动时启动的,并一直运行在后台,直到MySQL关闭。它与Master Thread紧密合作,共同完成复制架构中主从之间的数据传输和同步。通过IO Thread,从库能够从主库获取数据更改并进行复制,确保从库和主库之间的数据保持一致性。
IO Thread 主要负责下面IO请求的回调
使用指令: show engine innodb status; 可以查看
总结:IO Thread是MySQL复制架构中的核心组件,负责与从库建立连接,并处理从库的复制请求。它从主库读取复制事件,并将这些事件发送给SQL Thread进行处理。IO Thread在MySQL启动时启动,与Master Thread紧密合作,实现主从数据库之间的数据传输和同步。了解IO Thread的运行和行为对于复制环境的监控和故障排除非常重要。
四、Purge Thread
在MySQL中,Purge Thread(清理线程)是复制架构中的一个重要组件。它负责删除不再需要的二进制日志文件,以释放磁盘空间并维护二进制日志的大小。
Purge Thread的主要任务包括:
- 删除过期的二进制日志:当从库成功复制了主库上的数据更改后,它会通知主库上的Purge Thread,以删除已经不再需要的二进制日志。这些已经复制到从库并且不再需要的二进制日志会占用宝贵的磁盘空间。Purge Thread会根据从库的状态信息,删除这些过期的二进制日志,并释放磁盘空间。
- 维护二进制日志的大小:Purge Thread还负责维护和管理二进制日志的大小。它会检查当前的二进制日志文件是否已经达到了指定的大小限制。如果已经达到了限制,Purge Thread会关闭当前的二进制日志文件,并开始写入新的日志文件。旧的日志文件将被重命名和压缩,以节省磁盘空间。
Purge Thread是在MySQL启动时启动的,并一直运行在后台,直到MySQL关闭。它会定期检查并删除不再需要的二进制日志文件,以及维护二进制日志的大小。通过这些操作,在复制过程中保持磁盘空间的有效利用,并防止二进制日志文件无限增长。
总结:Purge Thread是MySQL复制架构中的一个组件,负责删除不再需要的二进制日志文件,并维护二进制日志的大小。它会根据从库的状态信息,删除已经复制到从库并且不再需要的二进制日志,并释放磁盘空间。此外,Purge Thread还会检查并维护二进制日志的大小,以防止它们无限增长。了解Purge Thread的运行和行为对于复制环境的监控和故障排除非常重要。
五、Page cleaner thread
在MySQL中,Page Cleaner Thread是InnoDB存储引擎的一个重要后台线程,用于管理和维护脏页(已被修改但尚未写入磁盘的页)的刷新工作。它在InnoDB存储引擎启动时自动启动,并持续运行以处理脏页的刷新需求。
Page cleaner thread的主要职责包括:
- 扫描脏页:Page Cleaner Thread周期性地扫描InnoDB缓冲池,检查其中的脏页。脏页是指已被修改的页面,它们的内容需要被刷新到磁盘上的数据文件中,以确保数据的持久性。
- 脏页刷新:当找到脏页时,Page Cleaner Thread会将这些脏页的数据写回到对应的数据文件中,使其变成干净页。这个过程称为脏页刷新。
- 决定刷新速率:根据系统的负载情况和磁盘IO能力,Page Cleaner Thread会根据需要自动调整脏页刷新的速率,以避免对系统性能造成过大的负担。
Page Cleaner Thread的存在和正常运行对于保证数据库的数据持久性和性能起着重要作用。如果Page Cleaner Thread无法及时刷新脏页,会导致脏页积压在内存中,可能导致缓冲池不足,影响数据库性能。因此,在监控和优化MySQL性能时,需要关注Page Cleaner Thread的运行状况以及相关配置参数的调整。
Mysql高级11-后台进程的更多相关文章
- MySQL高级知识(十四)——行锁
前言:前面学习了表锁的相关知识,本篇主要介绍行锁的相关知识.行锁偏向InnoDB存储引擎,开销大,加锁慢,会出现死锁,锁定粒度小,发生锁冲突的概率低,但并发度高. 0.准备 #1.创建相关测试表tb_ ...
- MySQL高级知识(六)——索引优化
前言:索引优化的目的主要是让索引不失效,本篇通过相关案例对索引优化进行讲解. 0.准备 创建经典的tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABL ...
- MySQL高级知识(五)——索引分析
前言:前面已经学习了explain(执行计划)的相关知识,这里利用explain对索引进行优化分析. 0.准备 首先创建三张表:tb_emp(职工表).tb_dept(部门表)和tb_desc(描述表 ...
- MySQL高级知识(四)——Explain
前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句.explain主要用于分析查询语句或表结构的性能瓶颈. 注:本系列随 ...
- MySQL高级知识(二)——Join查询
前言:该篇主要对MySQL中join语句的七种情况进行总结. 0.准备 join主要根据两表或多表之间列的关系,从这些表中进行数据的查询. 首先创建两张表:tb_emp(员工表)和tb_dept(部门 ...
- 【MySQL 高级】索引优化分析
MySQL高级 索引优化分析 SQL 的效率问题 出现性能下降,SQL 执行慢,执行时间长,等待时间长等情况,可能的原因有: 查询语句写的不好 索引失效 单值索引:在 user 表中给 name 属性 ...
- mysql高级day4
Mysql高级-day04 1. MySql中常用工具 1.1 mysql 该mysql不是指mysql服务,而是指mysql的客户端工具. 语法 : mysql [options] [databas ...
- mysql高级day3
Mysql高级-day03 1. 应用优化 前面章节,我们介绍了很多数据库的优化措施.但是在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力. 1.1 ...
- mysql高级day2
Mysql高级-day02 1. Mysql的体系结构概览 整个MySQL Server由以下组成 Connection Pool : 连接池组件 Management Services & ...
- mysql高级day1
Mysql高级-day01 MySQL高级课程简介 序号 Day01 Day02 Day03 Day04 1 Linux系统安装MySQL 体系结构 应用优化 MySQL 常用工具 2 索引 存储引擎 ...
随机推荐
- 生物信息培训之WGCNA-权重基因共表达网络分析
本文分享自微信公众号 - 生信科技爱好者(bioitee).如有侵权,请联系 support@oschina.cn 删除.本文参与"OSC源创计划",欢迎正在阅读的你也加入,一起分 ...
- Python自动化测试面试题精选(一)
Python自动化测试面试题精选 今天由勇哥给你介绍一些Python自动化测试中常见的面试题,涵盖了Python基础.测试框架.测试工具.测试方法等方面的内容,希望能够帮助你提升自己的水平和信心. 项 ...
- K8S 证书详解(认证)
K8S 证书介绍 在 Kube-apiserver 中提供了很多认证方式,其中最常用的就是 TLS 认证,当然也有 BootstrapToken,BasicAuth 认证等,只要有一个认证通过,那么 ...
- 从2PC和容错共识算法讨论zookeeper中的Create请求
最近在读<数据密集型应用系统设计>,其中谈到了zookeeper对容错共识算法的应用.这让我想到之前参考的zookeeper学习资料中,误将容错共识算法写成了2PC(两阶段提交协议),所以 ...
- 无法将“Ethernet0”连接到虚拟网络“VMnet8”。
出现这个问题的解决办法,请参考右侧链接:https://blog.csdn.net/big_bigwolf/article/details/79147388
- Taurus .Net Core 微服务开源框架:Admin 插件【1】 - 微服务节点管理
前言: 最近发现 NetCore 的文章有点少,特来补几篇. 上一篇:Taurus.mvc .Net Core 微服务开源框架发布V3.1.7:让分布式应用更高效. 自上篇之后,期间更新了4个小版本, ...
- C# - DTO 的字符串表达
第一阶段 重写 DTO 的 ToString() 方法.利用 Newtonsoft.Json 序列化 DTO 对象. 第二阶段 为 DTO 设置基类,重写基类的 ToString() 方法.利用 Sy ...
- 在linux上启动arthas报“Can not find java process”
发生背景 完整报错信息: [***@localhost ~]$ java -jar arthas-boot.jar [INFO] JAVA_HOME: /usr/lib/jvm/java-1.8.0- ...
- 【Docker】离线安装
离线安装Docker 1.下载docker 离线安装包 下载地址如下:Index of linux/static/stable/x86_64/ 2.将下载的包上传至服务器上 我这里下载的是20.1 ...
- Struts2 小知识点
配置struts.xml文件,选择开发模式 在实际应用开发或者是产品部署的时候,对应着两种模式: 开发模式(devMode):此时 DevMode=ture: 产品模式(proMode):此时 Dev ...