MySQL 8.0中的监控内容
Bart Oles 【hudson 译】
2020年1月29日

监控在所有环境中都是必须的,数据库也不例外。一旦数据库基础架构启动并运行起来,您就需要密切关注正在发生的事情。如果您想确保一切正常,并且在系统增长和发展过程中进行必要的调整,那么监控是必须的。这将使您能够确定趋势、计划升级或改进,或对新版本、不同用途等可能出现的任何问题或错误做出充分的反应。
对于每种数据库技术,都有不同的东西需要监视。其中一些特定于数据库引擎、供应商,甚至您使用的特定版本。数据库集群在很大程度上依赖于底层基础设施,因此数据库管理员也很想看到网络和操作状态。
当运行多个数据库系统时,监视这些系统可能会成为一项繁琐的工作。
在这篇博客中,我们将看看对MySQL 8.0 环境,需要监视什么。我们还将了解[cluster control]的监控功能,它可以帮助您免费跟踪数据库的运行状况。
操作系统和数据库系统监控
观察数据库集群或节点时,需要考虑两个要点:操作系统和MySQL实例本身。您需要定义监控二者的哪些指标,以及如何监控。您需要始终遵循系统意义上的参数,并且应该查找行为模型上的更改。
请记住,当您的一个参数受到影响时,它也会影响其他参数,从而使问题的故障排除更加复杂。要使这项任务尽可能简单,必须有一个适当的监测和警报系统。
在大多数情况下,您需要使用一些工具,因为很难找到一个涵盖所有所需指标的工具。
操作系统监控
一件主要的事情(对所有数据库引擎甚至所有系统都是通用的)是监视操作系统的行为。这里有一些要点需要检查。在下面,您可以找到数据库服务器上要监视的最重要系统资源。 实际开始的第一件事:检查清单。
CPU使用率
高CPU使用率并不是一件坏事,只要你没有达到极限。CPU使用率过高可能是一个问题,如果这不是通常的行为。在这种情况下,必须确定产生此问题的一个或多个进程。如果问题是数据库进程,则需要检查数据库内部发生了什么。
RAM内存或SWAP使用
理想情况下,整个数据库应该存储在内存中,但这并不总是可能的。尽可能多地提供给MySQL,但也要其他进程留足够的空间。
如果您看到这个指标的值很高,并且系统中没有任何变化,那么您可能需要检查数据库配置。shared_buffers和work_mem等参数可以直接影响这一点,因为它们定义了MySQL数据库可以使用的内存量。Swap仅用于紧急情况,不应使用,还应确保操作系统设置为让MySQL决定如何使用Swap。
磁盘使用情况
磁盘使用率是监视和警报的关键指标之一。确保始终有可用空间用于新数据、临时文件、快照或备份。
监视硬指标是不够的。磁盘空间使用的异常增加或磁盘访问消耗过多是必须注意的,因为MySQL日志文件中可能会记录大量错误,或者缓存配置糟糕,可能会产生致命的磁盘访问消耗,而不是使用内存来处理查询。确保您能够捕捉到异常行为,即使您的警告和关键指标尚未达到。
除了监视磁盘空间之外,我们还应该监视磁盘活动。要监视的最重要的值为:
- 读/写请求
- IO队列长度
- 平均IO等待
- 平均读/写时间
- 读/写带宽
您可以使用Percona中的iostat或pt_diskstats查看所有这些详细信息。
影响磁盘性能的因素通常与磁盘之间的数据传输有关,因此可以监视从其他用户启动的异常进程。
平均负载
平均负载是一个总体性能指标,了解Linux负载是监视操作系统和数据库相关系统的关键。 平均负载与上述三点相关。CPU、RAM或磁盘使用过度可能会产生较高的平均负载。
网络
除非进行备份或传输大量数据,否则不应成为瓶颈。
网络问题会影响所有系统,因为应用程序无法连接(或连接丢失的包)到数据库,所以这确实是一个需要监控的重要指标。您可以监视延迟或数据包丢失,主要问题可能是网络饱和、硬件问题,或者只是网络配置不佳。
数据库监视
虽然监控是必须的,但它通常不是免费的。数据库性能总是有成本的,这取决于您监视的程度,所以您应该避免监视不使用的内容。
通常,有两种方法监视数据库,通过日志或者查询数据库一侧。
对于日志,为了能够使用它们,您需要具有较高的日志记录级别,这会产生较高的磁盘访问,并且会影响数据库的性能。
对于查询模式,每个到数据库的连接都使用资源,因此取决于数据库的活动和分配的资源,它也可能影响性能。
当然,MySQL中有许多度量标准。在这里,我们将重点关注最重要的指标。
监视活动会话
您还应该跟踪活动会话的数量和数据库的启动和关闭状态。通常为了理解问题,您需要查看数据库运行的时间。
下一件事将是一些会话。如果接近极限,则需要检查是否有问题,或者是否只需要增加max_connections值。数量上的差异可能是连接的增加或减少。连接池使用不当、锁或网络问题是与连接数相关的最常见问题。 这里的关键值是
- 正常运行时间
- 连接的线索数量
- 最大已用连接数
- 中止的连接数
数据库锁定
如果有一个查询正在等待另一个查询,则需要检查另一个询问是正常的进程还是新的进程。在某些情况下,如果有人正在更新一个大表,例如,此操作可能会影响数据库的正常行为,从而生成大量锁。
监视复制
监视复制的关键指标是滞后和复制状态。不仅是启动状态,而且是滞后状态,因为该值的持续增加不是一个很好的迹象,因为这意味着从库无法赶上主库。
最常见的问题是网络问题、硬件资源问题。如果您面临复制问题,您需要尽快了解这一点,因为您需要修复它以确保高可用性环境。 最好通过检查SLAVE STATUS和以下参数来监控复制:
- SLAVE_RUNNING
- SLAVE_IO_Running
- SLAVE_SQL_RUNNING
- LAST_SQL_ERRNO
- SECONDS_BEHIND_MASTER
备份
不幸的是,普通社区版没有附带备份管理器。您应该知道备份是否完成,以及是否可用。通常不考虑最后一点,但它可能是备份过程中最关键的检查。在这里,我们必须使用外部工具,如percona xtrabackup或ClusterControl .
数据库日志
您应该监视数据库日志中的错误,如致命错误或死锁,甚至常见错误,如身份验证问题或长时间运行的查询。大多数错误都写在日志文件中,其中包含修复错误的详细有用信息。您需要注意的常见故障点是错误、日志文件大小。错误日志的位置可以在log_error变量下找到。
外部工具
最后不能不提,您可以找到一系列有用的工具来监视数据库活动。
Percona Toolkit–是Percona提供的一组Linux工具,用于分析MySQL和OS活动。你可以在这里找到它。它支持最流行的64位Linux发行版,如Debian、Ubuntu和Redhat。
mysqladmin – mysqladmin是MySQL守护程序的管理程序。它可以用于检查服务器运行状况(ping)、列出进程、查看变量值,还可以执行一些管理工作,如创建/删除数据库、刷新(重置)日志、统计信息和表、终止正在运行的查询、停止服务器和控制复制。
innotop – 提供SHOW语句的扩展视图。它非常强大,可以显著减少调查时间。在普通的MySQL支持中,您可以看到Galera视图和主从复制详细信息。
mtop – 监视MySQL服务器,显示完成所需时间最长的查询。功能包括“放大”进程以显示完整的查询、“解释”查询优化器信息和“终止”查询。此外,还提供了服务器性能统计信息、配置信息和调优提示。
Mytop – 在终端中运行,并以表格格式显示有关线程、查询、慢速查询、正常运行时间、负载等的统计信息,与Linux非常相似。
结论
本博客并不是一个关于如何增强数据库监控的详尽指南,但它希望能更清楚地描述什么是最重要的,以及可以观察的一些基本参数。