MySQL高级11-后台进程

MySQL,进程,高级,后台 · 浏览次数 : 23

小编点评

**MySQL后台线程概括** **Master Thread** * 处理复制和恢复任务。 * 将复制事件写入二进制日志中。 * 与从数据库进行通信,将复制事件传输给从库。 **IO Thread** * 与从库建立连接并处理复制请求。 * 从库读取和处理复制事件。 * 将这些事件发送给SQL Thread处理。 **Purge Thread** * 删除不再需要的二进制日志文件,释放磁盘空间。 * 维护二进制日志的大小,防止文件无限增长。 **Page Cleaner Thread** * 管理和维护脏页刷新工作。 * 在InnoDB存储引擎启动时自动启动,处理脏页的刷新需求。

正文

一、前言

  MySQL的服务实现通过后台多个线程、内存池、文件交互来实现对外服务的,不同线程实现不同的资源操作,各个线程相互协助,共同来完成数据库的服务。MySQL常用的后台线程概括如下,分为Master Thread,IO Thread,Purge Thread,Page Cleaner Thread

二、Master Thread

  在MySQL中,Master Thread(主线程)是一个重要的后台线程,负责处理复制和恢复相关的任务。它是MySQL Replication(MySQL复制)架构中的核心组件之一。
  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复制架构中非常重要的一部分,保证了数据的可靠复制和同步
  对于复制环境中的故障排除和监控,理解和了解Master Thread的运行和行为非常重要。例如,可以通过检查Master Thread的状态和错误日志,来了解复制是否正常工作,以及是否存在任何问题或延迟。
  总结:Master Thread是MySQL中负责处理复制和恢复任务的重要后台线程,它负责将复制事件写入到二进制日志中,并与从数据库进行通信,确保数据的可靠复制和同步。了解Master Thread的运行和行为对于复制环境的故障排除和监控非常重要。

三、IO Thread    

  在MySQL中,IO Thread(输入/输出线程)是复制架构中的一个核心组件。它是负责与复制的从库进行通信的后台线程,负责从从库读取并处理复制请求。在InnoDB存储引擎中大量使用了AIO异步非阻塞来处理IO请求。
  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高级11-后台进程

一、前言 MySQL的服务实现通过后台多个线程、内存池、文件交互来实现对外服务的,不同线程实现不同的资源操作,各个线程相互协助,共同来完成数据库的服务。MySQL常用的后台线程概括如下,分为Master Thread,IO Thread,Purge Thread,Page Cleaner Threa

MySQL高级10-InnoDB引擎存储架构

一、逻辑存储结构 表空间(Tablespace):一个mysql实例,及一个数据库实例,可以对应多个表空间(ibd文件),用于存储记录,索引等数据。 段(Segment):分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollback

MySQL高级1-存储引擎

一、Mysql体系结构 1.1、连接层 最上层是一个客户端和链接服务,主要完成一些类似于链接处理,授权认证,及相关的安全方案,服务器也会为安全接入的而每个客户端验证它所具有的操作权限 1.2、服务层 第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置

MySQL高级3-索引的结构和分类

一、索引概述 1.1 索引的介绍 索引index:是帮助 Mysql 高效获取数据 的 有序的数据结构,在数据之外,数据库系统维护着的满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引 1.2 索引的优缺点 优点1:提

MySQL高级5-SQL优化

一、插入数据优化 1.1 批量插入 如果有多条数据需要同时插入,不要每次插入一条,然后分多次插入,因为每执行一次插入的操作,都要进行数据库的连接,多个操作就会连接多次,而一次批量操作只需要连接1次 1.2 手动提交事务 因为Mysql默认每执行一次操作,就会提交一次事务,这样就会涉及到频繁的事务的开

[转帖]Keepalived如何实现Nginx高可用

https://www.jb51.net/article/266305.htm Keepalived安装可参考Mysql+Keepalived实现双主热备 Master上的keepalived.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

MySQL高级

前言: 本篇文章是本人学习MySQL高级的笔记。 资料:《MySQL是怎样运行的》、《小林Coding-图解MySQL》、《MySQL45讲》、《尚硅谷康师傅MySQL视频》 一、基础篇 1. 什么是关系型数据库? 关系型数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,一系列的

MySQL高级9-锁

一、简介 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除了传统的计算资源(CPU、RAM、i/O)的挣用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素,从这个角度来说,锁对

【转帖】《MySQL高级篇》四、索引的存储结构

1. 为什么使用索引 假如给数据使用 二叉树 这样的数据结构进行存储,如下图所示 2、索引及其优缺点 2.1 索引概述 2.2 优点 类似大学图书馆建书目索引,提高数据检索的效率,降低 数据库的 IO 成本 这也是创建索引的主要的原因。通过创建唯一索引,可以保证数据库表中每一行 数据的唯一性 (唯一

MySQL 高级(进阶) SQL 语句

MySQL 高级(进阶) SQL 语句 use gy; create table location (Region char(20),Store_Name char(20)); insert into location values('East','Boston'); insert into loc