CN114048068A - Mysql数据库的运维方法、装置、设备和存储介质 - Google Patents

Mysql数据库的运维方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN114048068A
CN114048068A CN202111263411.6A CN202111263411A CN114048068A CN 114048068 A CN114048068 A CN 114048068A CN 202111263411 A CN202111263411 A CN 202111263411A CN 114048068 A CN114048068 A CN 114048068A
Authority
CN
China
Prior art keywords
database
database instance
instance
request
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111263411.6A
Other languages
English (en)
Inventor
廖明礼
高保庆
崔伟
王刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi Shilian Technology Co ltd
Original Assignee
Tianyi Digital Life Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianyi Digital Life Technology Co Ltd filed Critical Tianyi Digital Life Technology Co Ltd
Priority to CN202111263411.6A priority Critical patent/CN114048068A/zh
Publication of CN114048068A publication Critical patent/CN114048068A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种MYSQL数据库的运维方法、装置、设备和存储介质,方法包括获取数据库实例和数据库实例信息,根据数据库实例信息将数据库实例生成实例拓扑结构;其中实例拓扑结构包括一个主数据库实例和多个从数据库实例;主数据库实例用于处理写请求和部分读请求,从数据库实例用于处理读请求;当主数据库实例发生故障时,从数据库实例转换成主数据库实例;接收数据库请求,当数据库请求为写请求时,将写请求路由至主数据库实例;当数据库请求为读请求时,将读请求路由至从数据库实例。该方法构建实例拓扑结构设置主从数据库实例,在故障时,可以将从数据库实例切换成主数据库实例,使得系统具有高可用性。并且实现了读写分离。

Description

MYSQL数据库的运维方法、装置、设备和存储介质
技术领域
本申请涉及数据库运维技术领域,具体涉及一种MYSQL数据库的运维方法、装置、设备和存储介质。
背景技术
随着信息化技术的飞速发展,互联网技术广泛地应用于各个领域,MYSQL作为开源数据库中的佼佼者,以其低成本,易部署,高性能等特点,正逐步成为互联网领域的主流数据库解决方案。
数据库作为应用系统的重要组成部分,直接决定了系统的整体性能及可用性。通常系统的设计、开发、部署等多个环节都与数据库强相关,数据库是否存在性能瓶颈,是否具备高可用对整个系统的运行起着至关重要的作用。数据库运维领域目前主要实现方式是具备读写分离,不具备高可用;具备高可用,不具备读写分离,即目前数据库无法实现读写分离与高可用性同时兼顾。这种方式会存在以下问题:(1)高可用的缺失,将导致系统可用性降低,故障发生只能人工干预,需要依赖数据库维护人员的维护经验;(2)不具备读写分离,主库资源开销大,会导致系统性能、稳定性下降甚至故障;(3)人工干预需要跨团队的协调,沟通,导致沟通成本增加,故障解决时间延长。
申请内容
有鉴于此,本申请实施例中提供了一种MYSQL数据库的运维方法、装置、设备和存储介质。
第一方面,本申请实施例提供了一种MYSQL数据库的运维方法,该方法包括:
获取数据库实例和数据库实例信息,根据所述数据库实例信息将所述数据库实例生成实例拓扑结构;其中所述实例拓扑结构中包括一个主数据库实例和多个从数据库实例;所述主数据库实例用于处理写请求和部分读请求,所述从数据库实例用于处理读请求;当所述主数据库实例发生故障时,所述从数据库实例转换成所述主数据库实例;
接收数据库请求,当所述数据库请求为写请求时,将所述写请求路由至所述主数据库实例;
当所述数据库请求为读请求时,将所述读请求路由至所述从数据库实例。
第二方面,本申请实施例提供了一种MYSQL数据库的运维装置,该装置包括:
获取模块,用于获取数据库实例和数据库实例信息,根据所述数据库实例信息将所述数据库实例生成实例拓扑结构;其中所述实例拓扑结构中包括一个主数据库实例和多个从数据库实例;所述主数据库实例用于处理写请求和部分读请求,所述从数据库实例用于处理读请求;当所述主数据库实例发生故障时,所述从数据库实例转换成所述主数据库实例;
请求接收模块,用于接收数据库请求;
请求路由模块,用于当所述数据库请求为写请求时,将所述写请求路由至所述主数据库实例;当所述数据库请求为读请求时,将所述读请求路由至所述从数据库实例。
第三方面,本申请实施例提供了一种终端设备,包括:存储器;一个或多个处理器,与所述存储器耦接;一个或多个应用程序,其中,一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个应用程序配置用于执行上述第一方面提供的MYSQL数据库的运维方法。
第四方面,本申请实施例提供了一种计算机可读取存储介质,计算机可读取存储介质中存储有程序代码,程序代码可被处理器调用执行上述第一方面提供的MYSQL数据库的运维方法。
本申请实施例提供的MYSQL数据库的运维方法、装置、设备和存储介质,获取数据库实例和数据库实例信息,根据数据库实例信息将数据库实例生成实例拓扑结构;其中实例拓扑结构中包括一个主数据库实例和多个从数据库实例;主数据库实例用于处理写请求和部分读请求,从数据库实例用于处理读请求;当主数据库实例发生故障时,从数据库实例转换成主数据库实例;接收数据库请求,当数据库请求为写请求时,将写请求路由至主数据库实例;当数据库请求为读请求时,将读请求路由至从数据库实例。
上述的MYSQL数据库的运维方法,将数据库实例根据其相互关系(即拓扑关系)构成实例拓扑结构,并设置主数据库实例和从数据库实例,当在主数据库实例发生故障时,可以将从数据库实例切换成主数据库实例,并不需要人工干预,一方面提高了故障处理速度,另一方面提高了系统的可用性,使得系统具有高可用性。并且将数据库的读请求和写请求进行分开处理,从而实现了读写分离。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的MYSQL数据库的运维方法的应用场景示意图;
图2为本申请一个实施例提供的终端设备或服务器的结构示意图;
图3为本申请一个实施例提供的MYSQL数据库的运维方法的流程示意图;
图4为本申请一个实施例提供的数据库请求访问数据库的流程示意图;
图5为本申请一个实施例提供的MYSQL数据库的运维装置的结构图;
图6为本申请一个实施例中提供的终端设备的结构示意图;
图7为本申请一个实施例中提供的计算机可读存储介质的结构示意图。
具体实施方式
下面将对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了更详细说明本申请,下面结合附图对本申请提供的一种MYSQL数据库的运维方法、装置、终端设备和计算机存储介质,进行具体地描述。
请参考图1,图1示出了本申请实施例提供的MYSQL数据库的运维方法的应用场景的示意图,该应用场景包括本申请实施例提供的终端设备100,终端设备100可以是具有显示屏的各种电子设备(如102、104、106和108的结构图),包括但不限于智能手机和计算机设备,其中计算机设备可以是台式计算机、便携式计算机、膝上型计算机、平板电脑等设备中的至少一种。用户对终端设备100进行操作,发出MYSQL数据库的运维操作指示,终端设备100执行本申请的MYSQL数据库的运维方法,具体过程请参照MYSQL数据库的运维方法实施例。
其次,终端设备100可以泛指多个终端设备中的一个,本实施例仅以终端设备100来举例说明。本领域技术人员可以知晓,上述终端设备的数量可以更多或更少。比如上述终端设备可以仅为几个,或者上述终端设备为几十个或几百个,或者更多数量,本申请实施例对终端设备的数量和类型不加以限定。终端设备100可以用来执行本申请实施例中提供的一种MYSQL数据库的运维方法。
在一种可选的实施方式中,该应用场景包括本申请实施例提供的终端设备100之外,还可以包括服务器,其中服务器与终端设备之间设置有网络。网络用于在终端设备和服务器之间提供通信链路的介质。网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
应该理解,终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器可以是多个服务器组成的服务器集群等。其中,终端设备通过网络与服务器交互,以接收或发送消息等。服务器可以是提供各种服务的服务器。其中服务器可以用来执行本申请实施例中提供的一种MYSQL数据库的运维方法的步骤。此外,终端设备在执行本申请实施例中提供的一种MYSQL数据库的运维方法时,可以将一部分步骤在终端设备执行,一部分步骤在服务器执行,在这里不进行限定。
进一步地,如图2所示,终端设备或服务器包括应用层、负载均衡器、数据库代理层、数据存储层以及路由器,路由器包括路由管理模块、监控模块、拓扑管理模块、统计模块、告警模块。其中,应用层用于供终端通过APP、WEB等发起数据库请求(即SQL请求);负载均衡器用于接收数据库请求并将数据库请求转发至数据库代理层,数据库代理层通过路由器路由至相应的数据库实例,并通过数据库实例向数据存储层(即数据库)读写数据,完成后依次返回,最终终端可以看到想要的数据,这是一次完整的数据库请求。
路由管理模块用于录入或获取需要管理的数据库实例和数据库实例信息,其中数据库实例信息包括IP、Port(端口)、监控账号、应用账号、连接数(即Connection)、最大连接数(即Max_Connection)、路由规则(即query_rules)、单位时间内的监控频率、监控开关(monitor_enable)开关状态(例如ture状态)等信息。
监控模块用于根据配置的监控用户(可以通过监控账号确定)通过ping(即MYSQL协议中的一个命令,用于检测数据库实例是否存活,连接是否空闲)和连接数(即Connection)对数据库实例进行联通性检测,检测频率可根据参数mysql-monitor_connect_interval,mysql-monitor_ping_interval设置,ping和连接数的日志可以存储于mysql_server_ping_log,mysql_server_connect_log数据表。数据库实例的ping和connection正常,监控模块连接数据库实例,读取数据库实例的read_only值,判断当前数据库实例分配读组还是写组,进行读写组分配,如果实例的read_only发生变化,监控读取到变化后自动进行读写组变更,无需人工干预。当应用层的数据库请求通过代理层后进入路由器时,路由器读取配置的路由规则,进行读写分离路由,读请求路由至所属读组的实例,写请求路由至所属写组的实例。完成读写分离后,监控模块将数据库实例根据拓扑关系形成实例拓扑结构,并将实例拓扑结构写入拓扑管理模块,由拓扑管理模块管理实例拓扑结构。
拓扑管理模块用于实例拓扑结构的发现,实例拓扑结构可以支持自动发现与手动发现模式,自动发现依赖于监控模块发现,手动发现可通过web管理界面的Discover按钮或client工具命令行输入数据库实例的IP、Port信息发现拓扑关系,以形成实例拓扑结构,支持实例拓扑结构展示,实例拓扑结构变更,实例拓扑结构异常修复等功能。其中,实例拓扑结构包括主数据库实例和从数据库实例。拓扑管理模块还用于在监控模块的单位监控频率下进行实例拓扑结构的扫描监控,当发现主数据库实例故障,如主数据库实例宕机,主数据库实例进程挂死,拓扑管理模块通过安全可靠的判别机制进行故障鉴别,(1)先通过服务器连接主数据库实例,如发现主数据库实例失联,此时并不能判定主数据库实例故障;(2)通过服务器连接从数据库实例,在从数据库实例查看复制状态show slave status,确认复制线程是否正常。进行多次(例如3-5次)重试,直至完全确认主数据库实例故障,拓扑管理模块执行故障恢复,自动切换,断开主从复制关系,重新选择更优的从数据库实例成为主数据库实例。完成自动切换后,通知路由管理模块进行故障主数据库实例下线,自动将MYSQL服务器(即mysql_server)中故障的主数据库实例设置为OFFLINE_HARD状态,不接收新连接路由至该主数据库实例,同时对已建立的连接强制断开。
安全模块用于在应用层下发的数据库请求(即SQL请求)通过路由器进入路由模块后,对异常SQL,异常IP,如慢SQL达到阀值5s,IP恶意请求进行拦截封堵,自动加入黑名单,保障数据库的性能及可用性,同时可在研发阶段实现SQL质量的优化。
统计模块用于对SQL请求拦截情况进行统计分析,如异常SQL的次数,IP次数,SQL执行时间,读路由次数,写路由次数等,可进行分析并生成天/周/月度报表。
告警模块用于在监控模块,拓扑管理模块,安全模块,统计模块实现自定义的告警,如数据库实例ping、connection异常告警,拓扑变更告警,异常SQL拦截告警,按天/周/月统计报表告警等。
基于此,本申请实施例中提供了一种MYSQL数据库的运维方法。请参阅图3,图3示出了本申请实施例提供的一种MYSQL数据库的运维方法的流程示意图,以该方法应用于图1中的终端设备为例进行说明,包括以下步骤:
步骤S110,获取数据库实例和数据库实例信息,根据数据库实例信息将数据库实例生成实例拓扑结构。
其中实例拓扑结构中包括一个主数据库实例和多个从数据库实例;主数据库实例用于处理写请求和部分读请求,从数据库实例用于处理读请求;当主数据库实例发生故障时,从数据库实例转换成主数据库实例。
具体而言,数据库其实质是磁盘上的一系列物理文件。数据库实例是位于物理内存里的数据结构,由线程和内存池组成,数据库实例才是真正用于操作数据库文件的(即一系列物理文件)。共享的内存池可以被所有进程访问,当用户如果要存取数据库里的数据,必须通过数据库实例才能实现,而不能直接读取硬盘上的文件。实际上,正常的数据库读入内存的过程是由数据库实例中一组后台进程从磁盘上将数据文件读入到数据库实例的内存中,然后经过在内存中对数据的操作再从数据库实例的内存中经过一组后台进程写到数据库中。在MYSQL中,一般情况下一个数据库实例操作一个或多个数据库;集群情况下多个数据库实例操作一个或多个数据库。
首先,数据库实例的数量可以是多个的,每一个数据库实例都有其对应的信息(即数据量实例信息)。数据库实例信息包括但不限于IP、Port(端口)、监控账号、应用账号、连接数(即Connection)、最大连接数(即Max_Connection)、路由规则(即query_rules)、单位时间内的监控频率、监控开关(monitor_enable)开关状态(例如ture状态)等。
其次,当数据库实例为多个时,各数据库实例之间可能存在互相关系(即拓扑关系),可以以各数据库实例为节点,以数据库实例之间的相互关系构建拓扑图,从而形成实例拓扑结构。
在一种可选的实施方式中,可以根据数据库实例的IP、Port(即端口)等信息来确定两两数据库实例之间的拓扑关系。
此外,在实例拓扑结构中有多个数据库实例,在这些数据库实例中可以将一个设置为主数据库实例,其他的为从数据库实例。主数据库实例主要用于处理写请求和部分读请求;例如主数据库实例可以用来处理全部的写请求和10%的读请求。从数据库实例用于处理读请求。
另外,当主数据库实例发生故障时,从数据库实例转换成主数据库实例。可选地,可以选择任一个从数据库实例转换成主数据库实例。
在一种优选的实施方式中,从数据库实例转换成主数据库实例,包括:择性能最优的一个从数据库实例转换成主数据库实例。
具体地,当需要在多个从数据库实例中选择可以转换成主数据库实例时,可以根据从数据库实例的性能来选择,即可以选择性能优的从数据库实例转换成主数据库实例,从而保证主数据库实例的性能和使用时长。
步骤S120,接收数据库请求。
步骤S130,当数据库请求为写请求时,将写请求路由至主数据库实例。当数据库请求为读请求时,将读请求路由至从数据库实例。
其中,数据库请求,又称为SQL请求。请求一般包括读请求和写请求,其中读请求用于从数据库中读取数据,而写请求用于向数据库中写入数据。
在本实施例中,在接收数据库请求后,对其进行判断,当数据库请求为读请求时将读请求发送至从数据库实例,从而将需要写入的数据写入相应的数据库。当数据库请求为写请求时,将写请求发送至主数据库实例,从未将需要获取的数据从相应的数据库中读取。
上述的MYSQL数据库的运维方法,将数据库实例根据其相互关系(即拓扑关系)构成实例拓扑结构,并设置主数据库实例和从数据库实例,当在主数据库实例发生故障时,可以将从数据库实例切换成主数据库实例,并不需要人工干预,一方面提高了故障处理速度,另一方面提高了系统的可用性,使得系统具有高可用性。并且将数据库的读请求和写请求进行分开处理,从而实现了读写分离。
在一个实施例中,在执行步骤S110,根据数据库实例信息生成实例拓扑结构之前,还包括:根据数据库实例信息对每一个数据库实例依次进行联通性检测和读写分组,以形成读组数据库实例和写组数据库实例;其中读组数据库实例只能处理读请求,写组数据库实例能处理读请求或写请求。
其中,联通性是指数据库实例与数据库之间是否能正常连接,以及数据库、数据库实例是否都存活,以便数据能正常的读出以及写入。
读写分组是指确定数据库实例是属于读组还是写组,以便后期读写分离。其中读组数据库实例只能处理读请求,写组数据库实例能处理读请求或写请求。
需要说明的是,主数据库实例只能是写组数据库实例;从数据库实例通常是读组数据库实例,也可以是写组数据库实例。
读组数据库实例与写组数据库实例之间可以相互转换。
在本实施例中,对数据库实例进行联通性检测可以排除异常的数据库实例,以便于能处理数据库请求。对数据库实例进行读写分组便于对数据库请求进行处理时能实现读写分离。
进一步地,给出了一种对数据库实例进行联通性检测和读写分组的具体实施方式,描述如下:
在一个实施例中,数据库实例信息包括监控账号和连接数;根据数据库实例信息对每一个数据库实例依次进行联通性检测,包括:根据监控账号和连接数并通过心跳检测方法对数据库实例进行联通性检测。
具体地,可以对监控用户(即可以通过监控账号确定)通过ping和连接数(即Connection)对数据库实例进行联通性检测,检测频率可根据参数mysql-monitor_connect_interval,mysql-monitor_ping_interval设置,ping和连接数的日志可以存储于mysql_server_ping_log,mysql_server_connect_log数据表。
其中,ping是指MYSQL协议中的一个命令,是一种用于检测数据库实例是否存活,连接是否空闲的心跳检测方法。
采用该方式可以快速且方便地确定数据库实例的联通性,从而排除异常的数据库实例。
在一个实施例中,数据库实例信息包括读写标识;根据数据库实例信息对每一个数据库实例进行读写分组,以形成读组数据库实例和写组数据库实例,包括:对于每一个数据库实例,判断数据库实例的读写标识;当读写标识为只读标识时,将数据库实例分为读组数据库实例;否则,将数据库实例分为写组数据库实例。
具体的,读写标识可以是数据库实例中的read_only,其中read_only可以取两个值。当read_only为0时,表示数据库实例可读可写,属于写组。当read_only为1时,表示数据库实例只能读不能写,属于读组。
需要说明的read_only的取值是可以切换的(例如可以从0切换到1,也可以从1切换到0),如果数据库实例的read_only发生变化,监控读取到变化后自动进行读写组变更,无需人工干预。
进一步地,提供了一种主数据库实例的故障判断实施方式,下面对该实施方式进行详细描述。
在一个实施例中,主数据库实例的故障通过以下方法判定:当主数据库实例失联时,查看实例拓扑结构中从数据库实例的主从复制状态;根据主从复制状态确定复制线程是否正常;当复制线程异常时,重复执行查看主从复制状态以及确定复制线程是否正常的步骤,直至达到预设重复次数;统计复制线程异常的次数,当次数大于预设阈值时,判定主数据库实例发生故障。
具体而言,可以先连接主数据库实例,当发现主数据实例失联时,并不能直接判定主数据库实例故障;此时需要去连接实例拓扑结构中从数据库实例,从从数据库实例中查看主从复制状态,以此来确认复制线程是否正常。当复制线程不正常时,进行多次重试(例如可以重复3-5次),当复制线异常的次数大于预设阈值时,可以判定主数据库实例发生故障。
其中,主从复制状态可以通过show slave status命令查看。
预设阈值是一个预先设置的值,可以根据实际需求进行设置。
采用该方式能迅速且准确地判断主数据库实例是否发生故障。
在一个实施例中,接收数据库请求之后,还包括:对数据库请求进行判断,当数据库请求为异常请求时,拦截异常请求。
具体地,接收到数据库请求后,可以对数据库请求进行判断,看其是否为异常请求,当为异常请求时可以拦截异常请求。具体地,可以通过数据库请求的IP来判断数据库请求是否异常,例如当数据库请求的IP异常,且IP异常次数在一段时间内(例如一个小时或一天等)超过预设次数(例如10次或50次等),可以判定数据库请求为异常请求。
拦截异常请求的方式可以是加入黑名单,可以保障数据库的性能及可用性,同时可在研发阶段实现数据库请求质量的优化。
在一个实施例中,方法还包括统计异常请求拦截请求,例如异常请求的数量、IP次数,数据库请求执行时间,读路由次数,写路由次数等,可进行分析并生成天/周/月度报表。
在一个实施例中,方法还包括:在出现异常时,发出告警信息。例如数据库实例联通性异常告警,主数据库实例故障告警,异常请求拦截告警,并按天/周/月生成告警统计报表等。
为了理解本申请方案,给出了一个数据库详细的工作流程。请参照图4,并结合图2,应用层(终端通过APP、WEB等)发起SQL(即数据库请求),数据库请求由负载均衡器接收,负载均衡器将数据库请求转发至数据库代理层,数据库代理层接收到数据库请求后,进入路由器,路由器检测该数据库请求是否为异常请求,如果是异常请求则被拦截,即通过图中SQL拦截器来实现的拦截,被拦截的数据库请求将无法进入数据存储层,由路由器返回给数据库代理层,逐层返回至应用层;若数据库请求未被拦截过,路由器通过路由管理模块将数据库请求自动匹配到读组或写组,然后将数据库请求路由至数据存储层,数据存储层完成读/写完数据,逐层返回至应用层,应用层就可以看到想要的数据。另外,当数据库请求进入路由器,如果此时主数据库实例发生故障(即主库故障),路由器中的监控模块发现主库故障,拓扑管理模块收到主库故障消息后,自动进行数据库主从切换,并将数据库请求正确路由至切换后的主数据库实例,完成故障自动恢复,逐级返回数据至应用层。
应该理解的是,虽然图图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
上述本申请公开的实施例中详细描述了一种MYSQL数据库的运维方法,对于本申请公开的上述方法可采用多种形式的设备实现,因此本申请还公开了对应上述方法的MYSQL数据库的运维装置,下面给出具体的实施例进行详细说明。
请参阅图5,为本申请实施例公开的一种MYSQL数据库的运维装置,主要包括:
获取模块510,用于获取数据库实例和数据库实例信息,根据数据库实例信息将数据库实例生成实例拓扑结构;其中实例拓扑结构中包括一个主数据库实例和多个从数据库实例;主数据库实例用于处理写请求和部分读请求,从数据库实例用于处理读请求;当主数据库实例发生故障时,从数据库实例转换成主数据库实例。
请求接收模块520,用于接收数据库请求。
请求路由模块530,用于当数据库请求为写请求时,将写请求路由至主数据库实例;当数据库请求为读请求时,将读请求路由至从数据库实例。
在一个实施例中,装置还包括:
检测及分组模块,用于根据数据库实例信息对每一个数据库实例依次进行联通性检测和读写分组,以形成读组数据库实例和写组数据库实例;其中读组数据库实例只能处理读请求,写组数据库实例能处理读请求或写请求。
在一个实施例中,检测及分组模块,用于根据监控账号和连接数并通过心跳检测方法对数据库实例进行联通性检测。
在一个实施例中,数据库实例信息包括读写标识;检测及分组模块,用于对于每一个数据库实例,判断数据库实例的读写标识;当读写标识为只读标识时,将数据库实例分为读组数据库实例;否则,将数据库实例分为写组数据库实例。
在一个实施例中,装置还包括:
复制状态查看模块,用于当主数据库实例失联时,查看实例拓扑结构中从数据库实例的主从复制状态。
复制线程异常确定模块,用于根据主从复制状态确定复制线程是否正常;
重新执行模块,用于当复制线程异常时,重复执行查看主从复制状态以及确定复制线程是否正常的步骤,直至达到预设重复次数;
故障判定模块,用于统计复制线程异常的次数,当次数大于预设阈值时,判定主数据库实例发生故障。
在一个实施例中,装置还包括:
异常拦截模块,用于对数据库请求进行判断,当数据库请求为异常请求时,拦截异常请求。
在一个实施例中,装置还包括:
数据库实例转换模块,用于选择性能最优的一个从数据库实例转换成主数据实例。
关于MYSQL数据库的运维装置的具体限定可以参见上文中对于方法的限定,在此不再赘述。上述装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于终端设备中的处理器中,也可以以软件形式存储于终端设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
请参考图6,图6其示出了本申请实施例提供的一种终端设备的结构框图。该终端设备60可以是计算机设备。本申请中的终端设备60可以包括一个或多个如下部件:处理器62、存储器64以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器64中并被配置为由一个或多个处理器62执行,一个或多个应用程序配置用于执行上述MYSQL数据库的运维方法实施例中所描述的方法。
处理器62可以包括一个或者多个处理核。处理器62利用各种接口和线路连接整个终端设备60内的各个部分,通过运行或执行存储在存储器64内的指令、程序、代码集或指令集,以及调用存储在存储器64内的数据,执行终端设备60的各种功能和处理数据。可选地,处理器62可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器62可集成中央处理器(Cen tralProcessingUnit,CPU)、埋点数据的上报验证器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器62中,单独通过一块通信芯片进行实现。
存储器64可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器64可用于存储指令、程序、代码、代码集或指令集。存储器64可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端设备60在使用中所创建的数据等。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端设备的限定,具体的终端设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
综上,本申请实施例提供的终端设备用于实现前述方法实施例中相应的MYSQL数据库的运维方法,并具有相应的方法实施例的有益效果,在此不再赘述。
请参阅图7,其示出了本申请实施例提供的一种计算机可读取存储介质的结构框图。该计算机可读取存储介质70中存储有程序代码,程序代码可被处理器调用执行上述MYSQL数据库的运维方法实施例中所描述的方法。
计算机可读取存储介质70可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读取存储介质70包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读取存储介质70具有执行上述方法中的任何方法步骤的程序代码72的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码72可以例如以适当形式进行压缩。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种MYSQL数据库的运维方法,其特征在于,所述方法包括:
获取数据库实例和数据库实例信息,根据所述数据库实例信息将所述数据库实例生成实例拓扑结构;其中所述实例拓扑结构中包括一个主数据库实例和多个从数据库实例;所述主数据库实例用于处理写请求和部分读请求,所述从数据库实例用于处理读请求;当所述主数据库实例发生故障时,所述从数据库实例转换成所述主数据库实例;
接收数据库请求;
当所述数据库请求为写请求时,将所述写请求路由至所述主数据库实例;当所述数据库请求为读请求时,将所述读请求路由至所述从数据库实例。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据库实例信息生成实例拓扑结构之前,还包括:
根据所述数据库实例信息对每一个数据库实例依次进行联通性检测和读写分组,以形成读组数据库实例和写组数据库实例;其中所述读组数据库实例只能处理读请求,所述写组数据库实例能处理读请求或写请求。
3.根据权利要求2所述的方法,其特征在于,所述数据库实例信息包括监控账号和连接数;所述根据所述数据库实例信息对每一个数据库实例依次进行联通性检测,包括:
根据所述监控账号和所述连接数并通过心跳检测方法对所述数据库实例进行联通性检测。
4.根据权利要求2所述的方法,其特征在于,所述数据库实例信息包括读写标识;所述根据所述数据库实例信息对每一个数据库实例进行读写分组,以形成读组数据库实例和写组数据库实例,包括:
对于每一个所述数据库实例,判断所述数据库实例的读写标识;
当所述读写标识为只读标识时,将所述数据库实例分为所述读组数据库实例;否则,将所述数据库实例分为所述写组数据库实例。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述主数据库实例的故障通过以下方法判定:
当所述主数据库实例失联时,查看所述实例拓扑结构中所述从数据库实例的主从复制状态;
根据所述主从复制状态确定复制线程是否正常;
当复制线程异常时,重复执行查看所述主从复制状态以及确定复制线程是否正常的步骤,直至达到预设重复次数;
统计复制线程异常的次数,当所述次数大于预设阈值时,判定所述主数据库实例发生故障。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述接收数据库请求之后,还包括:
对所述数据库请求进行判断,当所述数据库请求为异常请求时,拦截所述异常请求。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述从数据库实例转换成所述主数据库实例,包括:
选择性能最优的一个所述从数据库实例转换成所述主数据实例。
8.一种MYSQL数据库的运维装置,其特征在于,所述装置包括:
获取模块,用于获取数据库实例和数据库实例信息,根据所述数据库实例信息将所述数据库实例生成实例拓扑结构;其中所述实例拓扑结构中包括一个主数据库实例和多个从数据库实例;所述主数据库实例用于处理写请求和部分读请求,所述从数据库实例用于处理读请求;当所述主数据库实例发生故障时,所述从数据库实例转换成所述主数据库实例;
请求接收模块,用于接收数据库请求;
请求路由模块,用于当所述数据库请求为写请求时,将所述写请求路由至所述主数据库实例;当所述数据库请求为读请求时,将所述读请求路由至所述从数据库实例。
9.一种终端设备,其特征在于,包括:
存储器;一个或多个处理器,与所述存储器耦接;一个或多个应用程序,其中,一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个应用程序配置用于执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-7任一项所述的方法。
CN202111263411.6A 2021-10-28 2021-10-28 Mysql数据库的运维方法、装置、设备和存储介质 Pending CN114048068A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111263411.6A CN114048068A (zh) 2021-10-28 2021-10-28 Mysql数据库的运维方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111263411.6A CN114048068A (zh) 2021-10-28 2021-10-28 Mysql数据库的运维方法、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN114048068A true CN114048068A (zh) 2022-02-15

Family

ID=80206287

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111263411.6A Pending CN114048068A (zh) 2021-10-28 2021-10-28 Mysql数据库的运维方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN114048068A (zh)

Similar Documents

Publication Publication Date Title
US10389596B2 (en) Discovering application topologies
WO2021129367A1 (zh) 一种监控分布式存储系统的方法及装置
US20170249199A1 (en) Correlation-Based Monitoring and Events for a Unified Storage Manager
US20230370500A1 (en) Distributed interface for data capture from multiple sources
US10944655B2 (en) Data verification based upgrades in time series system
WO2022127504A1 (zh) 网元管理方法、装置及存储介质
CN103501237A (zh) 设备管理方法、管理平台、设备及系统
JP2006134164A (ja) ストレージシステムの管理方法
CN111865632A (zh) 分布式数据存储集群的切换方法及切换指令发送方法和装置
JP2017069895A (ja) 障害切り分け方法および障害切り分けを行う管理サーバ
CN112202746A (zh) Rpc成员信息获取方法、装置、电子设备和存储介质
CN107870852B (zh) 一种测试方法及装置
CN114172785A (zh) 告警信息处理方法、装置、设备和存储介质
CN113079059A (zh) 网络状态监测方法、装置、电子设备及可读存储介质
CN114048068A (zh) Mysql数据库的运维方法、装置、设备和存储介质
CN116302716A (zh) 一种集群部署方法、装置、电子设备及计算机可读介质
JP2015114952A (ja) ネットワークシステム、監視制御装置およびソフトウェア検証方法
CN114816914A (zh) 基于Kubernetes的数据处理方法、设备及介质
CN112711466B (zh) 悬挂事务巡检方法和装置、电子设备和存储介质
CN114756301A (zh) 日志处理方法、装置和系统
CN113157475A (zh) 日志处理方法、装置、存储介质及电子设备
CN109088921B (zh) 一种写操作处理方法、装置和计算机可读存储介质
US10949232B2 (en) Managing virtualized computing resources in a cloud computing environment
CN112685486A (zh) 数据库集群的数据管理方法、装置、电子设备及存储介质
CN110569231A (zh) 数据迁移方法、装置、设备和介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240320

Address after: Unit 1, Building 1, China Telecom Zhejiang Innovation Park, No. 8 Xiqin Street, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province, 311100

Applicant after: Tianyi Shilian Technology Co.,Ltd.

Country or region after: Zhong Guo

Address before: Room 1423, No. 1256 and 1258, Wanrong Road, Jing'an District, Shanghai 200040

Applicant before: Tianyi Digital Life Technology Co.,Ltd.

Country or region before: Zhong Guo