《探测MYSQL运行信息的方法与装置.pdf》由会员分享,可在线阅读,更多相关《探测MYSQL运行信息的方法与装置.pdf(10页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103870377 A (43)申请公布日 2014.06.18 CN 103870377 A (21)申请号 201210532217.8 (22)申请日 2012.12.11 G06F 11/30(2006.01) (71)申请人 深圳市腾讯计算机系统有限公司 地址 518057 广东省深圳市南山区高新区高 新南一路飞亚达大厦 5-10 楼 (72)发明人 李宇 (74)专利代理机构 广州华进联合专利商标代理 有限公司 44224 代理人 何平 邓云鹏 (54) 发明名称 探测 MySQL 运行信息的方法与装置 (57) 摘要 本发明公开了一种探测 MySQL 运。
2、行信息的方 法与装置, 采用长连接的方式, 对 MySQL 进行周期 性探测, 并缓存每个周期的探测结果, 在接到探 测请求时, 从缓存中提取探测结果。从而在待探 测 MySQL 负载高或本装置所在系统网络并发量大 时, 也能保证正常探测, 提高了探测的持续性和稳 定性, 尤其适用于对可靠性要求较高的 MySQL 集 群监控运营。 (51)Int.Cl. 权利要求书 2 页 说明书 5 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书5页 附图2页 (10)申请公布号 CN 103870377 A CN 103870377 A 1/2 页 2。
3、 1. 一种探测 MySQL 运行信息的方法, 其特征在于, 周期性执行以下步骤 : 确认已连接上待探测的 MySQL ; 向待探测的 MySQL 发送基于 MySQL 协议的探测请求 ; 缓存待探测的 MySQL 返回的结果, 周期性执行以上步骤的同时, 监听探测请求, 并在监听到探测请求时, 从缓存中查找并 返回上个周期的探测结果。 2. 根据权利要求 1 所述的探测 MySQL 运行信息的方法, 其特征在于, 为每一个待探测 的 MySQL 建立一个探测任务, 每个探测任务以所对应的 MySQL 为待探测对象周期性执行所 述周期性执行的步骤, 在监听到探测请求时, 从缓存中查找并返回对应。
4、探测任务上个周期 的探测结果。 3.根据权利要求1或2所述的探测MySQL运行信息的方法, 其特征在于, 在执行所述确 认已连接上待探测的 MySQL 的过程中, 若未连接上待探测的 MySQL, 则尝试连接直至成功。 4.根据权利要求3所述的探测MySQL运行信息的方法, 其特征在于, 在执行所述缓存待 探测的MySQL返回的结果的过程中, 若待探测的MySQL超过预定时间仍未返回结果, 则返回 所述确认已连接上待探测的 MySQL ; 若与待探测的 MySQL 的连接被断开, 则返回所述尝试连 接直至成功。 5.根据权利要求1或2所述的探测MySQL运行信息的方法, 其特征在于, 在执行所。
5、述从 缓存中查找并返回上个周期的探测结果的过程中, 若未查找到上个周期的探测结果, 则返 回信息未找到。 6. 一种探测 MySQL 运行信息的装置, 其特征在于, 包括周期探测单元和监听单元, 所述周期探测单元用于对待探测的 MySQL 进行周期性探测, 每个周期的探测过程包 括 : 确认已连接上待探测的 MySQL ; 向待探测的 MySQL 发送基于 MySQL 协议的探测请求 ; 缓存待探测的 MySQL 返回的结果, 所述监听单元用于监听探测请求, 并在监听到探测请求时, 从缓存中查找并返回所述 周期探测单元上个周期的探测结果。 7.根据权利要求6所述的探测MySQL运行信息的装置,。
6、 其特征在于, 所述周期探测单元 还用于为每一个待探测的 MySQL 建立一个探测任务, 每个探测任务以所对应的 MySQL 为待 探测对象进行所述周期性探测, 所述监听单元还用于在监听到探测请求时, 从缓存中查找 并返回对应探测任务上个周期的探测结果。 8.根据权利要求6或7所述的探测MySQL运行信息的装置, 其特征在于, 所述周期探测 单元还用于周期性检测是否已连接上待探测的 MySQL, 若未连接上待探测的 MySQL, 则尝试 连接直至成功。 9.根据权利要求8所述的探测MySQL运行信息的装置, 其特征在于, 所述周期探测单元 还用于检测待探测的 MySQL 是否成功返回结果, 若。
7、待探测的 MySQL 超过预定时间仍未返回 结果, 则重新确认已连接上待探测的 MySQL ; 若与待探测的 MySQL 的连接被断开, 则重新尝 试连接直至成功。 10. 根据权利要求 6 或 7 所述的探测 MySQL 运行信息的装置, 其特征在于, 所述监听单 权 利 要 求 书 CN 103870377 A 2 2/2 页 3 元还用于在从缓存中查找并返回所述周期探测单元上个周期的探测结果的过程中, 若未查 找到上个周期的探测结果, 则返回信息未找到。 权 利 要 求 书 CN 103870377 A 3 1/5 页 4 探测 MySQL 运行信息的方法与装置 技术领域 0001 本发。
8、明涉及计算机技术领域, 特别是涉及一种探测 MySQL 运行信息的方法与装 置。 背景技术 0002 SQL(Structured Query Language, 结构化查询语言)是一种数据库查询和程序设 计语言, 用于存取数据以及管理关系数据库系统。 0003 MySQL 是一个小型关系数据库管理系统, 开发者为瑞典 MySQL AB 公司 (于 2008 年 1 月被 SUN 公司收购, 2009 年 SUN 被 Oracle 收购, 目前属于 Oracle) 。关系数据库基于关系 数据模型将数据保存在不同的表中, 而不是将所有数据放在一个大仓库内, 具有灵活性的 同时保持存取速度。 00。
9、04 传统的探测MySQL运行信息的装置, 包括MySQL标准安装包提供的工具, 都采用基 于短连接的实现方式。这种基于短连接的主要机制如下 : 0005 1) 用户使用该装置, 或者周期性触发该装置时, 先建立与 MySQL 的连接 ; 0006 2) 待连接建立之后触发探测的操作, 例如发送 SQL 语句 ; 0007 3) 待结果返回之后, 或者待超时之后, 断开与 MySQL 的连接 ; 0008 4) 最终返回结果。 0009 由于每次信息探测都需要执行完整的连接、 获取信息、 断开连接过程, 基于短连接 的探测 MySQL 运行信息的装置有如下缺点 : 0010 1) 在目标系统 。
10、MySQL 负载高时, 会无法探测信息。原因在于目标系统 MySQL 负载 高时, 信息探测装置也无法连接上 MySQL, 进而无法探测信息。 0011 2) 在装置安装的系统网络并发量巨大时, 也会无法探测信息。安装装置的计算机 系统可能也会出现并发量巨大的情况 (例如同时运行多种探测工具) , 本地IP端口号可能耗 尽, 造成探测装置无法获得端口号连接目标 MySQL, 进而无法探测信息。 0012 总结来说, 基于短连接的探测 MySQL 运行信息的装置无法保证在任何情况下都探 测到 MySQL 信息。在正常的运营环境中, 高负载的情况下通常最需要及时探测到 MySQL 的 运行信息以供。
11、决策分析和故障处理。因此基于短连接的探测 MySQL 运行信息的装置很难用 于高可靠 MySQL 集群监控运营中。 发明内容 0013 基于上述情况, 本发明实施例提出了一种探测 MySQL 运行信息的方法与装置, 以 提高探测 MySQL 运行信息的可靠性。 0014 一种探测 MySQL 运行信息的方法, 周期性执行以下步骤 : 0015 确认已连接上待探测的 MySQL ; 0016 向待探测的 MySQL 发送基于 MySQL 协议的探测请求 ; 0017 缓存待探测的 MySQL 返回的结果, 说 明 书 CN 103870377 A 4 2/5 页 5 0018 周期性执行以上步骤。
12、的同时, 监听探测请求, 并在监听到探测请求时, 从缓存中查 找并返回上个周期的探测结果。 0019 一种探测 MySQL 运行信息的装置, 包括周期探测单元和监听单元, 0020 所述周期探测单元用于对待探测的 MySQL 进行周期性探测, 每个周期的探测过程 包括 : 0021 确认已连接上待探测的 MySQL ; 0022 向待探测的 MySQL 发送基于 MySQL 协议的探测请求 ; 0023 缓存待探测的 MySQL 返回的结果, 0024 所述监听单元用于监听探测请求, 并在监听到探测请求时, 从缓存中查找并返回 所述周期探测单元上个周期的探测结果。 0025 本发明实施例探测M。
13、ySQL运行信息的方法与装置, 采用长连接的方式, 对MySQL进 行周期性探测, 并缓存每个周期的探测结果, 在接到探测请求时, 从缓存中提取探测结果。 从而在待探测 MySQL 负载高或本装置所在系统网络并发量大时, 也能保证正常探测, 提高 了探测的持续性和稳定性, 尤其适用于对可靠性要求较高的 MySQL 集群监控运营。 附图说明 0026 图 1 为本发明探测 MySQL 运行信息的方法实施例一的流程示意图 ; 0027 图 2 为本发明探测 MySQL 运行信息的方法实施例三的流程示意图 ; 0028 图 3 为本发明探测 MySQL 运行信息的装置实施例一的结构示意图。 具体实施。
14、方式 0029 下面结合附图与实施例详细解释本发明的方案, 首先介绍探测 MySQL 运行信息的 方法的实施例。 0030 实施例一 0031 本实施例探测 MySQL 运行信息的方法, 如图 1 所示, 周期性执行如下步骤 : 0032 步骤 S101、 确认已连接上待探测的 MySQL ; 0033 步骤 S102、 向待探测的 MySQL 发送基于 MySQL 协议的探测请求 ; 0034 步骤 S103、 缓存待探测的 MySQL 返回的结果, 0035 步骤 S104、 周期性执行以上步骤的同时, 监听探测请求, 并在监听到探测请求时, 从缓存中查找并返回上个周期的探测结果。 003。
15、6 为了提高探测可靠性, 本实施例采用长连接的方式来克服传统的短连接方式存在 的缺陷。所谓长连接是指长时间保持会话的 TCP 连接, 在本实施例中具体是指通过 TCP 协 议建立与 MySQL 的连接之后, 不主动关闭连接, 并且周期性不断的进行通讯。 0037 如图 1 所示, 步骤 S101-S103 循环执行, 从而与待探测的 MySQL 保持连接, 在目标 MySQL 负载高或本方法所应用的系统网络并发量大时, 减少因无法连接导致无法探测的可 能, 提高了探测的可靠性。本实施例还采用缓存机制, 缓存每个周期的探测结果, 在客户端 发来探测请求时, 直接从缓存中获取上个周期的探测结果, 。
16、有利于将探测结果快速返回客 户端。 0038 实施例二 说 明 书 CN 103870377 A 5 3/5 页 6 0039 本实施例探测 MySQL 运行信息的方法, 周期性执行如下步骤 : 0040 步骤 S101、 确认已连接上待探测的 MySQL ; 0041 步骤 S102、 向待探测的 MySQL 发送基于 MySQL 协议的探测请求 ; 0042 步骤 S103、 缓存待探测的 MySQL 返回的结果 ; 0043 步骤 S104、 周期性执行以上步骤的同时, 监听探测请求, 并在监听到探测请求时, 从缓存中查找并返回上个周期的探测结果。 0044 待探测的 MySQL 实例有。
17、多个时, 本实施例为每一个待探测的 MySQL 实例建立一个 探测任务, 每个探测任务在时间周期到来时, 负责对所对应的 MySQL 实例进行探测, 并缓存 探测结果。执行步骤 S104 监听到客户端的探测请求时, 从缓存中查找并返回对应探测任务 上个周期的探测结果。 0045 每个探测任务的探测周期可以根据客户端的需求而设定。 0046 实施例三 0047 为了进一步完善探测MySQL运行信息的方法, 如图2所示, 本实施例对执行过程中 可能出现的几种异常情况做出了应对, 下面是本实施例的步骤。 0048 步骤 S101、 确认已连接上待探测的 MySQL ; 0049 步骤 S102、 向。
18、待探测的 MySQL 发送基于 MySQL 协议的探测请求 ; 0050 步骤 S103、 缓存待探测的 MySQL 返回的结果 ; 0051 步骤 S104、 周期性执行以上步骤 S101-S103 的同时, 监听探测请求, 并在监听到探 测请求时, 从缓存中查找并返回上个周期的探测结果 ; 0052 步骤 S105、 在执行步骤 S101 确认已连接上待探测的 MySQL 的过程中, 若发现未连 接上待探测的 MySQL, 则尝试连接直至成功 ; 0053 步骤 S106、 在执行步骤 S103 缓存待探测的 MySQL 返回的结果的过程中, 若待探测 的MySQL超过预定时间仍未返回结果。
19、, 则返回步骤S101确认是否已连接上待探测的MySQL ; 若发现与待探测的 MySQL 的连接被断开, 则尝试连接直至成功 ; 0054 步骤 S107、 在执行步骤 S104 从缓存中查找并返回上个周期的探测结果的过程中, 若未查找到上个周期的探测结果, 则向客户端返回信息未找到。 从而无论探测成功与否, 在 客户端发来请求时, 都给出明确的答复。 0055 下面介绍探测 MySQL 运行信息的装置的实施例。 0056 实施例一 0057 本实施例探测 MySQL 运行信息的装置, 如图 3 所示, 包括周期探测单元 101 和监听 单元 102。 0058 所述周期探测单元用于对待探测。
20、的 MySQL 进行周期性探测, 每个周期的探测过程 包括 : 0059 确认已连接上待探测的 MySQL ; 0060 向待探测的 MySQL 发送基于 MySQL 协议的探测请求 ; 0061 缓存待探测的 MySQL 返回的结果, 0062 所述监听单元用于监听探测请求, 并在监听到探测请求时, 从缓存中查找并返回 所述周期探测单元上个周期的探测结果。 0063 本实施例的装置中, 周期探测单元 101 采用长连接方式对待探测的 MySQL 执行周 说 明 书 CN 103870377 A 6 4/5 页 7 期性探测, 并将探测结果缓存在内存数据缓存中。监听单元 102 在监听到客户端。
21、的探测请 求时, 将周期探测单元缓存的探测结果发给客户端。 0064 由以上描述可知, 本实施例对应上述探测 MySQL 运行信息的方法的实施例一, 具 体地, 周期探测单元 101 对应步骤 S101-S103, 监听单元 102 对应步骤 S104, 本实施例的有 益效果不再赘述。 0065 实施例二 0066 本实施例探测 MySQL 运行信息的装置, 包括周期探测单元 101 和监听单元 102。 0067 所述周期探测单元用于对待探测的 MySQL 进行周期性探测, 每个周期的探测过程 包括 : 0068 确认已连接上待探测的 MySQL ; 0069 向待探测的 MySQL 发送基。
22、于 MySQL 协议的探测请求 ; 0070 缓存待探测的 MySQL 返回的结果。 0071 所述监听单元用于监听探测请求, 并在监听到探测请求时, 从缓存中查找并返回 所述周期探测单元上个周期的探测结果。 0072 本实施例的装置中, 周期探测单元 101 采用长连接方式对待探测的 MySQL 执行周 期性探测, 并缓存探测结果。监听单元 102 在监听到客户端的探测请求时, 将周期探测单元 缓存的探测结果发给客户端。 0073 在本实施例中, 当待探测的MySQL有多个时, 每个待探测的MySQL向本装置进行注 册。本装置的周期探测单元 101 为每一个注册的 MySQL 实例建立一个探。
23、测任务, 每个探测 任务在时间周期到来时, 以所对应的 MySQL 为待探测对象进行周期性探测。所述监听单元 102 则在监听到探测请求时, 从缓存中查找并返回对应探测任务上个周期的探测结果。 0074 每个探测任务的探测周期可以相同或不同, 并均可以根据客户端的需求而设定。 0075 实施例三 0076 本实施例探测 MySQL 运行信息的装置, 包括周期探测单元 101 和监听单元 102。 0077 所述周期探测单元用于对待探测的 MySQL 进行周期性探测, 每个周期的探测过程 包括 : 0078 确认已连接上待探测的 MySQL ; 0079 向待探测的 MySQL 发送基于 MyS。
24、QL 协议的探测请求 ; 0080 缓存待探测的 MySQL 返回的结果。 0081 所述监听单元用于监听探测请求, 并在监听到探测请求时, 从缓存中查找并返回 所述周期探测单元上个周期的探测结果。 0082 本实施例的装置中, 周期探测单元 101 采用长连接方式对待探测的 MySQL 执行周 期性探测, 并缓存探测结果。监听单元 102 在监听到客户端的探测请求时, 将周期探测单元 缓存的探测结果发给客户端。 0083 周期探测单元 101 和监听单元 102 在工作过程中都可能出现异常情况, 本实施例 对以下几种异常情况作出应对。 0084 所述周期探测单元 101 还用于周期性检测是否。
25、已连接上待探测的 MySQL, 若未连 接上待探测的 MySQL, 则尝试连接直至成功 ; 0085 所述周期探测单元 101 还用于检测待探测的 MySQL 是否成功返回结果, 若待探测 说 明 书 CN 103870377 A 7 5/5 页 8 的 MySQL 超过预定时间仍未返回结果, 则重新确认已连接上待探测的 MySQL ; 若与待探测的 MySQL 的连接被断开, 则重新尝试连接直至成功 ; 0086 所述监听单元 102 还用于在从缓存中查找并返回所述周期探测单元上个周期的 探测结果的过程中, 若未查找到上个周期的探测结果, 则返回信息未找到。 0087 综上上述实施例, 本发。
26、明基于长连接的方式实现了一种新型的 MySQL 运行信息探 测方法与装置, 解决了高负载情况下的探测问题, 周期性稳定的探测 MySQL 运行信息, 适用 于高可靠 MySQL 集群监控运营。本发明实施例也通过缓存机制, 缓存探测的结果, 保障客户 端获取信息时总是可以给出确定的结果 : 成功则为运行信息本身, 失败则给出明确答复。 0088 以上所述实施例仅表达了本发明的几种实施方式, 其描述较为具体和详细, 但并 不能因此而理解为对本发明专利范围的限制。应当指出的是, 对于本领域的普通技术人员 来说, 在不脱离本发明构思的前提下, 还可以做出若干变形和改进, 这些都属于本发明的保 护范围。因此, 本发明专利的保护范围应以所附权利要求为准。 说 明 书 CN 103870377 A 8 1/2 页 9 图 1 图 2 说 明 书 附 图 CN 103870377 A 9 2/2 页 10 图 3 说 明 书 附 图 CN 103870377 A 10 。