查看性能捕获日志

性能捕获功能会收集实例指标数据,并将其发送到 mysql-performance-capture.log 文件中的 Cloud Logging。

如需详细了解如何在 Cloud Logging 中查看日志,请参阅使用 Logs Explorer 查看日志

准备工作

如需查看性能捕获日志,您必须拥有适当的权限,才能在 Cloud Logging 中查看项目和实例的日志。

所需的角色和权限

如需获得查看性能捕获日志所需的权限,请让您的管理员为您授予实例所在项目的 Logs Viewer (roles/logging.viewer) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

查看性能捕获日志

如需查看性能捕获日志,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Cloud Logging 页面。

    转到 Cloud Logging

  2. 点击所有资源,然后选择 Cloud SQL 数据库
  3. 选择您的 Cloud SQL 实例。
  4. 按日志名称过滤:

    logName="projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql-performance-capture.log"

    PROJECT_ID 替换为您的项目 ID。

    日志载荷采用字符串格式,包含捕获的命令(例如 SHOW ENGINE INNODB STATUS)的输出,跨多个日志行。

查看性能捕获日志中的数据

每个性能捕获日志都由您为实例定义的性能事件触发。下表将性能捕获日志条目与配置阈值相关联,并提供了您可以在条目日志中查看的性能数据报告的说明。

性能捕获日志条目 说明 阈值触发器 报告名称
活跃查询数 捕获数据库负载指标,包括按状态分组的连接数和事务数、按运行时长(<2 秒、2 到 10 秒、≥10 秒)分桶的活跃查询数,以及运行时间最长的 50 个事务或查询的详细信息。此报告有助于确定高负载时段,并精确定位特定的慢查询。

如需详细了解如何解读有关 InnoDB 事务和进程的数据,请参阅 MySQL 文档中的INFORMATION_SCHEMA INNODB_TRXprocesslist 表
  • runningThreadsThreshold (Cloud SQL Admin API)
  • running-threads-threshold (gcloud CLI)
activequeries
InnoDB 状态 提供有关性能事件发生时 InnoDB 存储引擎状态的信息。 这对于诊断锁争用、事务问题、缓冲池问题和历史记录列表长度增长至关重要。要查找的关键字:
  • TRANSACTIONS(长时间运行的事务、锁等待)
  • SEMAPHORES(互斥锁争用)
  • LATEST DETECTED DEADLOCK
  • BUFFER POOL AND MEMORY
  • HISTORY LIST LENGTH
如需详细了解 InnoDB 标准监控输出,请参阅 MySQL 文档中的 InnoDB 标准监控和锁监控输出
  • runningThreadsThreshold (Cloud SQL Admin API)
  • running-threads-threshold (gcloud CLI)
innodbstatus
复制分析 包含复制诊断信息,包括 SHOW REPLICA STATUS 的输出、GTID 集以及性能架构工具的详细信息。该报告还包含性能事件发生时执行位置之后的接力日志中的前五个事件。此报告可用于诊断复制错误或延迟。

如需详细了解 SHOW REPLICA STATUS 输出和副本应用器线程,请参阅 MySQL 文档中的 SHOW REPLICA STATUS 语句 监控复制应用器工作线程
  • secondsBehindSourceThreshold (Cloud SQL Admin API)
  • seconds-behind-source-threshold (gcloud CLI)
replicastatus
交易监听器数据 有关正在跟踪的长时间运行的交易的详细信息。

如需详细了解如何解读有关 InnoDB 事务的数据,请参阅 MySQL 文档中的 INFORMATION_SCHEMA INNODB_TRX
  • transactionDurationThreshold (Cloud SQL Admin API)
  • transaction-duration-threshold (gcloud CLI)
LongRunningTransactions

过滤性能捕获日志中的数据

当性能捕获功能根据为 Cloud SQL 实例配置的阈值检测到问题时,监控代理会将与实例和报告类型关联的带标签的日志条目发送到 Cloud Logging。

为了帮助您整理日志并将日志条目与实例中观察到的性能问题相关联,您可以按标签过滤性能捕获日志条目。

每个日志条目都带有以下两个标签:

  • 事件发生的时间,或 labels.EVENT_TIME:表示性能捕获条目日志的时间。 格式为唯一的时间戳字符串 YYYY-MM-DDTHH:MM:SSZ。 例如 2025-10-16T13:12:07Z

  • 文件名或 labels.FILE_NAME:用于标识报告类型以及由性能事件触发的性能捕获日志条目的序列号。格式为 INSTANCE_TYPE_SEQUENCE_NUMBER_REPORT_TYPE。例如,primary_1_activequeries 是活跃查询报告的第一个性能捕获日志条目。

过滤条件示例

本部分提供了示例,说明如何过滤 mysql-performance-capture.log 文件以获取特定的日志条目进行分析。

在以下示例中,替换以下内容:

  • PROJECT_ID:Cloud SQL 实例的项目 ID
  • TIMESTAMP:触发性能事件的时间戳,格式为 YYYY-MM-DDTHH:MM:SSZ。例如 2025-10-16T13:12:07Z

按特定效果事件过滤

如需按特定性能事件进行过滤,请使用 labels.EVENT_TIME 标签查找相关日志条目。

例如,如需获取特定性能事件的报告,请在 Logging 日志浏览器查询构建器中使用以下查询。

获取特定活动的所有报告

logName="projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql-performance-capture.log"
labels.EVENT_TIME="TIMESTAMP"

获取特定事件的 InnoDB 报告

logName="projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql-performance-capture.log"
labels.EVENT_TIME="TIMESTAMP"
labels.FILE_NAME=~"innodbstatus"

仅获取特定事件的所有报告类型的第一个日志条目

logName="projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql-performance-capture.log"
labels.EVENT_TIME="TIMESTAMP"
labels.FILE_NAME=~"_1_"

跨文件名过滤

获取所有活动的所有 activequeries 报告

此常规查询有助于了解在任何性能事件期间活跃查询的显示方式。

logName="projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql-performance-capture.log"
labels.FILE_NAME=~"activequeries"

替换以下内容:

  • PROJECT_ID:Cloud SQL 实例的项目 ID

比较特定事件的第 1 天和第 3 天的innodbstatus报告

logName="projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql-performance-capture.log"
labels.EVENT_TIME="TIMESTAMP"
(labels.FILE_NAME="primary_1_innodbstatus" OR labels.FILE_NAME="primary_3_innodbstatus")

替换以下内容:

  • PROJECT_ID:Cloud SQL 实例的项目 ID
  • TIMESTAMP:触发性能事件的时间戳,格式为 YYYY-MM-DDTHH:MM:SSZ。例如 2025-10-16T13:12:07Z

查找在特定时间之后发生的任何事件的第一个 activequeries 报告

logName="projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql-performance-capture.log"
labels.FILE_NAME="primary_1_activequeries"
timestamp > "TIMESTAMP"

替换以下内容:

  • PROJECT_ID:Cloud SQL 实例的项目 ID
  • TIMESTAMP:格式为 YYYY-MM-DDTHH:MM:SSZ 的时间戳。 例如 2025-10-16T13:12:07Z

在任何 InnoDB 状态报告中搜索特定文本

logName="projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql-performance-capture.log"
labels.FILE_NAME=~"innodbstatus"
textPayload:"SEARCH_TEXT"

替换以下内容:

  • PROJECT_ID:Cloud SQL 实例的项目 ID
  • SEARCH_TEXT:要搜索的文本。例如 SEMAPHORE WAITS