作者:赵珣 腾讯云监控工程师
简介
云数据库 MySQL(TencentDB for MySQL)是腾讯云基于开源数据库 MySQL 专业打造的一种高性能分布式数据存储服务,提供了备份恢复、监控、容灾、快速扩容、数据传输等全套解决方案,简化数据库运维工作,让用户专注于业务发展。
云数据库 MySQL 的优势:
快速便捷的数据库服务交付能力,在几分钟内部署可扩展的 MySQL,并可按需弹性升降配置;
真正 100% 的 MySQL 兼容能力,主流 MySQL 分支完全兼容;
提供热备、冷备、binlog 三重灾备体系,可用性达到 99.95%,可靠性达到 99.9996%,确保服务可用,数据不丢失;
提供一系列数据库管理服务:监控、备份、回档、扩容、性能诊断、数据迁移等;
实例最高 QPS 可达 245509 次 / 秒,极大的简化业务开发,减少业务架构复杂度;
卓越的高可用,支持多可用区部署,跨城容灾的能力。
技术架构
01
云数据库 MySQL 技术架构
云数据库 MySQL 高可用版完全兼容 MySQL,并且采用一主 N 从的高可用模式,实时热备,提供宕机自动检测和故障自动转移。
数据节点部署在强大的硬件之上,底层存储使用本地 PCI-e SSD 硬盘,提供强大的 IO 性能。
可以覆盖游戏、互联网、金融、物联网、零售电商、物流、保险、证券等行业应用。
技术特征
01
多实例
只读实例:只开放读能力,分担主实例读压力,实现读写分离;
主实例:可读写,主从实时热备,保证高可用,支持一主两从强同步,零误差,无错乱;
异地灾备实例:满足跨地域容灾金融级需求。
02
数据迁移
无需停机迁移,数据迁移时对业务无影响;
数据完成同步后,仅需切换数据库读写 IP 到云数据库 MySQL,即可完成迁移任务。
03
异地灾备 -- 金融行业
两地三中心部署架构 —— 同城节点直线距离大于 10KM,异地节点直线距离大于 100KM;
同城多可用区网络互通,且网络延迟低于 5ms;
多地域间使用多地域之间使用腾讯云专线连接,广州 - 上海同步延迟仅三十余毫秒。
04
备份和回档机制
云数据库 MySQL 每日自动冷备,备份于业务低峰期在备机上完成,不影响现网业务;
每份冷备数据保存 3 份副本,实现数据强一致性,保证数据不丢;
支持逻辑备份和物理备份两种备份方式:
逻辑备份支持导出 SQL 文件,可仅针对部分库表回档,适合需要细粒度回档的场景;
物理备份速度极快,支持增量备份,但需对整个实例回档,适合需要频繁备份数据的场景。
作为云监控,我们在努力
云监控为用户提供了统一监控云数据库 MySQL 的平台,可以通过使用云监控全面了解云数据库 MySQL 的资源使用、引擎性能和运行状况,提供指标分类、预设常用告警指标、预设核心指标的 Dashboard 面板。帮助用户更轻松的理解云数据库 MySQL 的指标,更方便、快捷的掌控云数据库 MySQL 出现的突发情况,提升运维效率,减少运维成本。
01
监控指标及其分类
1.1 监控实例分析
对云数据库 MySQL 实例的架构进行分析,其主要分为三个部分:网络连接层、服务层、存储引擎层。
网络连接层
客户端连接器:提供与 MySQL 服务器监理连接的支持。各个语言使用各自的 API 技术与 MySQL 建立连接。
服务层
服务层是 MySQL 的核心,主要包含以下五个部分:
连接器:管理缓冲用户连接,线程处理,权限验证等需要缓存的需求;
查询缓存:将客户端提交 给 MySQL 的 Select 类 query 请求的返回结果集 cache 到内存中,与该 query 的一个 hash 值做一个对应。缓存机制是由一系列小缓存组成,比如表缓存、记录缓存、权限缓存、引擎缓存等;
分析器:将客户端发送的 SQL 进行语义和语法的分析,分解成数据结构,生成 "解析树"。预处理器根据规则进一步检查 “解析树” 是否合法,最终生成新的 “解析树”;
优化器:当 “解析树” 通过解析器语法检查后,交由优化器对查询进行优化,将其转换成执行计划;
执行器:执行优化器给出的执行计划,然后存储引擎交互。
存储引擎层
存储引擎负责 MySQL 中数据的存储和提取,与底层系统文件进行交互,云数据库 MySQL 主要使用 InnoDB 引擎和 MyISAM 引擎。
1.2 指标分类
腾讯云监控对云数据库 MySQL 的每一部分进行相应指标的监控,并将指标进行分类,以便用户理解和使用,详细指标见附录。
02
预设专家建议核心告警指标
腾讯云监控与云数据库 MySQL 业务侧经过讨论,根据多年运维经验,提供常用告警指标和阈值的专家建议。用户配置告警时,页面将默认显示预设的指标及阈值建议,支持修改,方便用户快速配置告警策略。
磁盘利用率 > 80%
MySQL 实例可能因长时间运行,未进行磁盘及数据管理等原因,导致磁盘使用率升高,从而影响业务正常运行。尤其当实例显示 “磁盘空间满” 状态,数据库不可进行写入操作,会有实例异常、数据库备份失败、数据库实例只读状态等潜在风险。
为避免业务因磁盘利用率过高而受影响,设置磁盘利用率 > 80% 告警,当接收到告警后,建议根据实际情况采用磁盘容量扩容、迁移冷数据等解决方案确保磁盘有一定的冗余度,保证数据库的正常使用。
CPU 利用率 > 80%
系统执行应用来进行提交查询(包括数据修改操作)时需要大量的逻辑读(逻辑 IO,执行查询所需访问的表的数据行数),所以系统需要消耗大量的 CPU 资源以维护从存储系统读取到内存中的数据一致性。若 MySQL CPU 的利用率长时间处于 100%,会严重影响数据库的整体性能,极端情况下可能会出现实例 HANG 住的情况。
为避免业务因 CPU 资源不足而受影响,设置 CPU 使用率 > 80% 告警,当接收到告警后,建议从应用架构、实例规格等方面来解决,例如:
升级实例规格,增加 CPU 资源;
增加只读实例,将对数据一致性不敏感的查询转移到只读实例上,分担主实例压力。
内存利用率 > 80%
MySQL 的内存是重要的性能参数,常出现由于低效 SQL 请求以及待优化的数据库导致内存利用率过高甚至超过 100% 的情况。内存利用率过高容易引起服务响应速度变慢,严重时还会触发内存 OOM 进而发生主备切换。
为避免业务因内存利用率过高而受影响,设置内存利用率 > 80% 告警,当接收到告警后,建议对内存利用率过高的实例进行业务优化或者升级内存空间。
连接数利用率 > 90%
监控服务的连接情况相当重要,因为一旦可用连接耗尽,新的连接就会遭到拒绝,故而云数据库 MySQL 提供了指标:连接数利用率 = 当前打开的连接数 / 最大连接数。
为避免业务因可用连接耗尽而受影响,设置连接数利用率 > 90% 告警,当收到告警后,建议根据实际情况释放无效连接、优化有用连接或者增大连接数限制。
03
预设核心指标 Dashboard 面板
为了让用户更快捷、更方便的监控云数据库 MySQL 的资源使用、运行等状况,腾讯云监控将核心指标配置成预设 Dashboard 面板,用户可直接进入云监控的 Dashboard 页面,无需进行其他配置,即可看到如图所示的云数据库 MySQL 的 Dashboard 预设面板。
当用户选择自己已有的实例后,便可自动展示预设的资源、引擎连接和引擎访问等核心指标的监控 Dashboard,提升用户体验,降低使用成本。
监控 CPU 利用率、磁盘利用率、内存利用率、内网入流量、内网出流量等资源,配合告警,当监控值超过某一值时,要关注是否需要扩容;
监控 QPS、TPS、当前打开的连接数的量,提前感知数据库的状态。如果发现监控值突增,可能是业务出现了问题,需要根据实际情况定位问题,提前做好数据库的扩容和优化;
监控慢查询数和全表扫描数,如果出现,及时查看哪些 SQL 语句引起的慢查询,然后可能需要对这些 SQL 或者服务做优化。
附录:
欢迎联系云监控小助手微信号, 加群讨论 : )