你真的知道Show Master Status吗?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 你真的知道Show Master Status吗?

前言

数据库的世界里,每一个字段都像是一个谜团,它们隐藏着无数的故事和秘密。而今天,就让我们一起来揭开MySQL中SHOW MASTER STATUS命令返回的字段所代表的秘密,探索这些字段背后的故事吧!从此,让我们更加深入地了解数据库的神秘世界!

输出字段展示

file详解

File: 这一列显示了当前正在写入的二进制日志文件的文件名。二进制日志文件包含了MySQL服务器接收到的所有更改操作,这些操作将被用于数据复制和恢复。文件名通常是一个基于数字的字符串,例如mysql-bin.000001,其中mysql-bin是二进制日志文件的前缀,而.000001是文件的序列号。MySQL会自动创建新的二进制日志文件,并在文件大小达到一定阈值或者MySQL服务器重启时自动切换到新文件。

Position详解

在MySQL中,二进制日志(Binary Log)是用于记录数据库中发生的更改操作的一种日志文件。Position(位置)是SHOW MASTER STATUS命令输出中的一列,它表示当前二进制日志文件中正在写入的位置。

下面是对Position(位置)的解释:

  • Position(位置):这一列显示了当前正在写入的二进制日志文件中的位置。位置表示了二进制日志文件中的一个特定点,即MySQL服务器已经写入的字节数。在进行数据复制或者恢复操作时,从指定位置开始读取二进制日志文件,以确保在从主服务器到从服务器的数据传输中不会丢失任何更改操作。位置的值是一个非负整数,通常表示从二进制日志文件的开头到指定位置之间的字节数。

举个例子,如果SHOW MASTER STATUS命令的输出如下所示:

+------------------+-----------+--------------+------------------+
| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000003 | 337       | test         |                  |
+------------------+-----------+--------------+------------------+

在这个例子中,Position列显示的位置值为337。这表示当前正在写入的二进制日志文件(文件名mysql-bin.000003)已经写入了337个字节的数据。如果需要从这个位置开始进行数据复制或者恢复操作,可以将这个位置作为起始点。

Binlog_Do_DB

Binlog_Do_DB 是 MySQL 中用于配置二进制日志(Binary Log)的一个选项之一。它用于指定哪些数据库的更改操作会被记录在二进制日志中。

当设置了 Binlog_Do_DB 选项时,只有被列出的数据库的更改操作才会被写入二进制日志。其他数据库的更改操作则会被忽略,不会记录在二进制日志中。

这个选项通常在主从复制(Replication)和数据恢复的场景中使用。通过限制二进制日志中记录的数据库,可以减少生成的二进制日志文件的大小,从而减少磁盘空间的使用量和网络传输的数据量。

举例来说,如果设置了 Binlog_Do_DB = mydatabase,那么只有名为 mydatabase 的数据库中的更改操作才会被记录在二进制日志中。其他数据库的更改操作会被忽略,不会记录在二进制日志中。

这个选项的设置通常通过在 MySQL 配置文件中进行配置,也可以通过动态修改系统变量来实现。

Binlog_Ignore_DB

Binlog_Ignore_DB 是 MySQL 中用于配置二进制日志(Binary Log)的另一个选项。与 Binlog_Do_DB 相反,Binlog_Ignore_DB 用于指定哪些数据库的更改操作不会被记录在二进制日志中。

当设置了 Binlog_Ignore_DB 选项时,被列出的数据库的更改操作将被忽略,不会被写入二进制日志。其他数据库的更改操作仍然会被记录在二进制日志中。

这个选项也通常用于主从复制(Replication)和数据恢复的场景中。通过忽略指定的数据库,可以确保不会记录这些数据库的更改操作,从而避免在复制过程中传输这些数据,减少网络传输的数据量和从服务器上的磁盘空间占用。

举例来说,如果设置了 Binlog_Ignore_DB = temp_database,那么名为 temp_database 的数据库中的更改操作将不会被记录在二进制日志中。其他数据库的更改操作仍会被记录在二进制日志中。

这个选项的设置同样可以通过在 MySQL 配置文件中进行配置,也可以通过动态修改系统变量来实现。

Executed_Gtid_Set

Executed_Gtid_Set 是 MySQL 中的一个属性,用于记录已经在当前服务器上执行的全局事务标识(GTID)。GTID 是全局事务标识符的缩写,它是一个唯一的标识符,用于标识数据库中的每个事务。

MySQL 5.6 引入了 GTID 来简化复制拓扑和管理。在具有 GTID 复制的环境中,每个事务都有一个唯一的 GTID,该 GTID 标识了事务在整个复制拓扑中的位置。当一个事务在主服务器上被提交时,它会生成一个 GTID,并且在从服务器上执行相同的事务时,也会使用相同的 GTID。

Executed_Gtid_Set 记录了当前服务器上已经执行的所有事务的 GTID。这个属性对于确保主从服务器之间的数据一致性非常重要。当从服务器需要与主服务器同步时,它可以使用 Executed_Gtid_Set 来确定从哪个 GTID 开始应用日志。

在 MySQL 中,您可以使用 SHOW MASTER STATUSSHOW SLAVE STATUS 命令来查看当前服务器上的 Executed_Gtid_Set。这个值通常以一串形如 b7fa4ae2-3aa4-11ec-8eb9-0242ac110002:1-4 的格式表示,其中包含了一个或多个 GTID 范围。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
负载均衡 Java 应用服务中间件
Client not connected, current status:STARTING
Client not connected, current status:STARTING
575 1
|
SQL 关系型数据库 MySQL
活久见,为什么SHOW TABLE STATUS总是不更新2
活久见,为什么SHOW TABLE STATUS总是不更新
122 0
|
SQL 关系型数据库 MySQL
活久见,为什么SHOW TABLE STATUS总是不更新1
活久见,为什么SHOW TABLE STATUS总是不更新
104 0
|
存储 监控 关系型数据库