一种MySQL只读实例管理方法及系统技术方案

技术编号:28129885 阅读:8 留言:0更新日期:2021-04-19 11:50
本发明专利技术公开了一种MySQL只读实例管理方法及系统,属于互联网技术领域,该方法通过扩展只读实例节点,将写请求接入到数据库主实例,读请求接入只读实例;所述实例节点安装有HAProxy和Keepalived,通过HAProxy和Keepalived管理只读实例组中只读实例的状态,保持只读实例的高可用,包括创建只读实例组、创建只读实例、更新HAProx配置管理只读实例负载、删除只读实例和删除只读实例组。本发明专利技术能够实现云数据库自动管理只读实例,提高部署运维效率,减少误操作风险。减少误操作风险。减少误操作风险。

【技术实现步骤摘要】
一种MySQL只读实例管理方法及系统


[0001]本专利技术涉及互联网
,具体地说是一种MySQL只读实例管理方法及系统。

技术介绍

[0002]在互联网的应用场景中,数据库的读请求数据量大、并发量要求高,需要读写分离的数据库架构满足其需求。其中,只读实例组即是读写分离的一种实现方式。
[0003]在对数据库有少量写请求,但有大量读请求的应用场景下,数据库的读请求成为数据库的瓶颈,现有数据库实例无法同时满足读请求和写操作的快速响应。

技术实现思路

[0004]本专利技术的技术任务是针对以上不足之处,提供一种MySQL只读实例管理方法及系统,能够实现云数据库自动管理只读实例,提高部署运维效率,减少误操作风险。
[0005]本专利技术解决其技术问题所采用的技术方案是:
[0006]一种MySQL只读实例管理方法,通过扩展只读实例节点,将写请求接入到数据库主实例,读请求接入只读实例;
[0007]所述实例节点安装有HAProxy和Keepalived,通过HAProxy和Keepalived管理只读实例组中只读实例的状态,保持只读实例的高可用,包括创建只读实例组、创建只读实例、更新HAProx配置管理只读实例负载、删除只读实例和删除只读实例组。
[0008]创建一个或多个只读实例,组成只读实例组,在应用程序中配置主实例地址和只读实例地址的虚拟IP(即VIP),实现写请求转发到主实例,读请求转发到只读实例,实现读写分离。
[0009]进一步的,利用Terraform工具管理创建和销毁只读实例节点,Ansible工具编排管理HAProxy和Keepalived部署运维脚本。
[0010]优选的,所述创建只读实例组和创建只读实例,
[0011]创建只读实例,为新的只读实例分配只读实例组;
[0012]只读实例作为主实例的从节点,与主实例组成主从集群;
[0013]只读实例的主实例节点既可以是高可用的主从数据库集群,也可以是单个节点的单实例数据库;
[0014]只读实例组是由多个只读实例组成的HAProxy负载均衡组,由HAProxy负责读请求负载的转发。
[0015]优选的,在前端页面请求主MySQL实例创建第一个只读实例时,先创建只读实例组,再创建只读实例、更新HAProxy配置管理只读实例负载;删除只读实例时,如果是只读实例组仅有一个只读实例,则先删除只读实例、更新HAProxy配置管理只读实例负载,再删除只读实例组。
[0016]优选的,在创建只读实例和删除只读实例的过程中,会更新只读实例节点上HAProxy的配置,包括只读实例组内已有实例的配置和创建的只读实例的配置,参数包括端
口、负载均衡权重及健康检查失败次数。
[0017]具体的,创建只读实例的步骤如下:
[0018]1)、判断正在运行的主实例是否存在只读实例组;
[0019]2)、如果存在只读实例组,说明已经存在只读实例,执行步骤3);如果不存在只读实例组,创建只读实例组,为只读实例组分配VIP;
[0020]3)、Terraform执行器调用Terraform脚本创建MySQL实例节点;
[0021]4)、Ansible执行器调用Ansible脚本初始化只读实例。
[0022]具体的,创建只读实例成功后初始化只读实例,配置HAProxy的步骤如下:
[0023]1)、判断只读实例组中只读实例是否为空,如果为空,则为只读实例组第一个实例,说明是新只读实例,则走分支一流程;
[0024]如果不为空,则说明只读实例组已有只读实例,新创建的只读实例走分支二;
[0025]如果不为空,已有只读实例需要添加新创建只读实例的配置,则走分支流程三;
[0026]所述分支一流程:依次执行以下步骤2)、3)、4)、5)、6)、7);分支二流程:依次执行以下步骤2)、3)、4)、8)、6)、7);分支三流程:依次执行以下步骤9)、10):
[0027]2)、初始化HAProxy和Keepalived配置,将HAProxy和Keepalived初始配置文件和健康检查脚本拷贝到创建的只读实例节点;
[0028]3)、调用xtrabackup命令在只读实例上远程备份主实例,主实例如果是主从集群,则远程备份从节点实例的数据;继续步骤4);
[0029]4)、调用xtrabackup命令恢复主实例内容到当前只读实例,将当前只读实例作为主实例的从节点接入主从集群;
[0030]5)、HAProxy配置中增加创建的MySQL只读实例的配置,确定参数包括端口、负载均衡权重及健康检查失败次数;
[0031]6)、调用启动HAProxy命令,由HAProxy提供访问MySQL只读实例上读请求的负载转发;
[0032]7)、调用启动Keepalived命令,开始Keepalived的状态检测功能;
[0033]8)、获取只读实例组内已有只读实例HAProxy的配置,增加新创建只读实例节点的配置,确定参数包括端口、负载均衡权重及健康检查失败次数;
[0034]9)、新的只读实例创建后,原只读实例组内已有的只读实例,增加新创建的只读实例HAProxy配置,确定参数包括端口、负载均衡权重及健康检查失败次数;
[0035]10)、调用重新加载HAProxy命令,已有只读实例在创建时已经执行过启动HAProxy命令,这里重新加载配置即可。
[0036]具体的,当读请求业务量下降时,删除只读实例节点,其步骤如下:
[0037]1)、前端请求删除只读实例节点,Terraform执行器调用Terraform脚本删除只读实例节点;
[0038]2)、如果删除失败,记录异常信息,返回结束;
[0039]3)、如果删除成功,进入更新HAProxy配置流程4)、5)、6);更新失败,执行步骤2);
[0040]4)、判断只读实例组中是否存在已有只读实例,如果存在已有只读实例,执行步骤5)、6);如果不存已有只读实例,不进行任何操作;
[0041]5)、更新已有的只读实例组中的只读实例的HAProxy的配置,确定参数包括端口、
负载均衡权重及健康检查失败次数;
[0042]6)、已有只读实例调用重新加载HAProxy命令,已有只读实例在创建时已经执行过启动HAProxy命令,这里重新加载配置即可;
[0043]7)、更新HAProxy配置成功后,判断只读实例组是否为空,如果为空,说明不存在说明此只读实例组不存在只读实例,则执行步骤8);如果不为空,不进行任何操作结束本流程返回;
[0044]8)、删除空只读实例组,进行VIP地址的回收。
[0045]通过扩展只读实例节点的方式,将写请求接入到数据库主实例,读请求接入只读实例,实现了MySQL实例的水平扩展,满足大量的数据库读业务请求。
[0046]通本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种MySQL只读实例管理方法,其特征在于,通过扩展只读实例节点,将写请求接入到数据库主实例,读请求接入只读实例;所述实例节点安装有HAProxy和Keepalived,通过HAProxy和Keepalived管理只读实例组中只读实例的状态,保持只读实例的高可用,包括创建只读实例组、创建只读实例、更新HAProx配置管理只读实例负载、删除只读实例和删除只读实例组。2.根据权利要求1所述的一种MySQL只读实例管理方法,其特征在于,利用Terraform工具管理创建和销毁只读实例节点,Ansible工具编排管理HAProxy和Keepalived部署运维脚本。3.根据权利要求2所述的一种MySQL只读实例管理方法,其特征在于,所述创建只读实例组和创建只读实例,创建只读实例,为新的只读实例分配只读实例组;只读实例作为主实例的从节点,与主实例组成主从集群;只读实例的主实例节点既可以是高可用的主从数据库集群,也可以是单个节点的单实例数据库;只读实例组是由多个只读实例组成的HAProxy负载均衡组,由HAProxy负责读请求负载的转发。4.根据权利要求1或2或3所述的一种MySQL只读实例管理方法,其特征在于,在前端页面请求主MySQL实例创建第一个只读实例时,先创建只读实例组,再创建只读实例、更新HAProxy配置管理只读实例负载;删除只读实例时,如果是只读实例组仅有一个只读实例,则先删除只读实例、更新HAProxy配置管理只读实例负载,再删除只读实例组。5.根据权利要求4所述的一种MySQL只读实例管理方法,其特征在于,在创建只读实例和删除只读实例的过程中,会更新只读实例节点上HAProxy的配置,包括只读实例组内已有实例的配置和创建的只读实例的配置,参数包括端口、负载均衡权重及健康检查失败次数。6.根据权利要求4所述的一种MySQL只读实例管理方法,其特征在于,创建只读实例的步骤如下:1)、判断正在运行的主实例是否存在只读实例组;2)、如果存在只读实例组,说明已经存在只读实例,执行步骤3);如果不存在只读实例组,创建只读实例组,为只读实例组分配VIP;3)、Terraform执行器调用Terraform脚本创建MySQL实例节点;4)、Ansible执行器调用Ansible脚本初始化只读实例。7.根据权利要求5所述的一种MySQL只读实例管理方法,其特征在于,创建只读实例成功后初始化只读实例,配置HAProxy的步骤如下:1)、判断只读实例组中只读实例是否为空,如果为空,则为只读实例组第一个实例,说明是新只读实例,则走分支一流程;如果不为空,则说明只读实例组已有只读实例,新创建的只读实例走分支二;如果不为空,已有只读实例需要添加新创建只读实例的配置,则走分支流程三;所述分支一流程:依次执行以下步骤2)、3)、4)、5)、6)、7);分支二流程:依次执行以下步骤2)、3)、4)、8)、6)...

【专利技术属性】
技术研发人员:厉颖赵山王阳
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1