CN115167971A - 一种基于云平台的高可用MySQL部署方法及系统 - Google Patents
一种基于云平台的高可用MySQL部署方法及系统 Download PDFInfo
- Publication number
- CN115167971A CN115167971A CN202210506975.6A CN202210506975A CN115167971A CN 115167971 A CN115167971 A CN 115167971A CN 202210506975 A CN202210506975 A CN 202210506975A CN 115167971 A CN115167971 A CN 115167971A
- Authority
- CN
- China
- Prior art keywords
- mysql
- cluster
- module
- node
- availability
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于云平台的高可用MySQL部署方法及系统,属于云计算领域;所述的方法具体步骤如下:S1向Kubernetes集群提交MySQL高可用集群的的CRD资源声明;S2提供mysql高可用集群部署逻辑的组件mysql‑operator watch到所述资源声明,从chart仓库中获取mysql高可用集群的chart部署到kubernetes集群中;S3mysql高可用集群搭建完成,通过kubernetes系统提供的service服务对外提供服务;本发明方法能够实现集群动态水平扩展,在Kubernetes系统中自动调整部署脚本的副本数量,可以根据副本数来创建MySQL集群,用户可以根据业务量和业务峰值来动态的调整副本数,增加减少集群节点数量,来达到满足不同业务场景的需求,相较于传统的数据库系统减少了人工运维成本,减少人为出错概率,不但提高了数据库系统的可用性也增大了资源利用率。
Description
技术领域
本发明公开一种基于云平台的高可用MySQL部署方法及系统,涉及云计算技术领域。
背景技术
随着信息技术的广泛应用和快速发展,云计算作为一种新兴的计算模型日益受到人们的广泛关注,科研、生产、商业、政府工作职能等多个领域开始越来越多地应用云计算技术,云计算技术日渐成熟,不断完善,不管是云平台自身的支持平台运行的服务组件还是云计算平台上面向用户部署的服务组件数量与日俱增。
Kubernetes是容器集群管理系统,是云计算时代新型的技术和产物,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。具体来说,通过Kubernetes可以快速部署应用、快速扩展应用、无缝对接新的应用功能、节省资源并优化硬件资源的使用。
基于Kubernetes技术部署和管理MySQL主从集群,从节点(slave)可以动态的监听主节点(master)变化,并且可以水平扩展slave节点数量,从而提高服务的可用性。针对传统MySQL主从模式中,如果想增加数据库的读能力,需要手动部署服务器进行数据同步然后接入到MySQL主从集群当中。这样做效率低下,而且出错率较高,并且安全性较低。
传统的数据库集群一般都是由多个虚拟机或者物理机,由运维人员手动搭建完成,不仅搭建过程费时费力,当业务多样化需要数据库集群水平扩展时,数据库集群节点数增加或者减少极不灵活。为了解决传统主从数据库集群的水平扩展不灵活问题,以及在Kubernetes系统下如何让数据库集群进行安全的通信的问题,现发明一种基于云平台的高可用MySQL部署方法及系统。
发明内容
本发明针对现有技术的问题,提供一种基于云平台的高可用MySQL部署方法及系统,所采用的技术方案为:一种基于云平台的高可用MySQL部署方法,所述的方法具体步骤如下:
S1向Kubernetes集群提交MySQL高可用集群的的CRD资源声明;
S2提供mysql高可用集群部署逻辑的组件mysql-operator watch到所述资源声明,从chart仓库中获取mysql高可用集群的chart部署到kubernetes集群中;
S3mysql高可用集群搭建完成,通过kubernetes系统提供的service服务对外提供服务。
所述S1的具体步骤如下:
S101使用Operator-sdk创建项目工程,并添加CRD资源;
S102定义所述CRD资源的status结构体和spec结构体;
S103针对所述CRD资源的status结构体和spec结构体的定义生成框架代码。
所述status结构体包括:mysql集群的状态。
所述spec结构体包括:mysql节点cpu规格、mysql节点memory规格、mysql节点存储类型、mysql节点存储规格、mysql集群配置文件、mysql集群的root密码、部署mysql集群所需chart包名称、mysql节点副本数。
所述S2的具体步骤如下:
S201创建0节点为主节点,每个节点分别创建mysql服务容器和用于备份数据的xtrabackup容器,将备份数据写入3307端口;
S202初始化从节点,监听上一个节点的3307端口,将接收到的数据放在指定的目录下;并且xtrabackup容器恢复从上一节点接收到的数据文件;
S203创建从节点,创建从节点的mysql容器,并接入主节点,从主节点同步数据;创建从节点的xtrabackup容器,将数据文件写入3307端口,提供下一个从节点接收;
S204判断节点数目,若节点数目小于设定节点数,重复步骤S202和S203,否则结束。
所述S3的具体步骤如下:
S301在Kubernetes环境下部署mysql集群CR资源;
S302mysql-operator监听到CR资源创建,根据mysql集群CR资源,从指定chart包部署到Kubernetes环境中;
S303mySql集群部署完成后,mysql-operator更新mysql集群CR资源状态为RUNNING。
一种基于云平台的高可用MySQL部署系统,所述的系统具体包括声明提交模块、集群部署模块和服务部署模块:
声明提交模块:向Kubernetes集群提交MySQL高可用集群的的CRD资源声明;
集群部署模块:提供mysql高可用集群部署逻辑的组件mysql-operator watch到所述资源声明,从chart仓库中获取mysql高可用集群的chart部署到kubernetes集群中;
服务部署模块:mysql高可用集群搭建完成,通过kubernetes系统提供的service服务对外提供服务。
所述声明提交模块具体包括工程创建模块、结构定义模块和代码生成模块:
工程创建模块:使用Operator-sdk创建项目工程,并添加CRD资源;
结构定义模块:定义所述CRD资源的status结构体和spec结构体;
代码生成模块:针对所述CRD资源的status结构体和spec结构体的定义生成框架代码。
所述集群部署模块具体包括节点处理模块、从节点初始化模块、从节点创建模块和节点判断模块:
节点处理模块:创建0节点为主节点,每个节点分别创建mysql服务容器和用于备份数据的xtrabackup容器,将备份数据写入3307端口;
从节点初始化模块:初始化从节点,监听上一个节点的3307端口,将接收到的数据放在指定的目录下;并且xtrabackup容器恢复从上一节点接收到的数据文件;
从节点创建模块:创建从节点,创建从节点的mysql容器,并接入主节点,从主节点同步数据;创建从节点的xtrabackup容器,将数据文件写入3307端口,提供下一个从节点接收;
节点判断模块:判断节点数目,若节点数目小于设定节点数,重复从节点初始化模块和从节点创建模块操作。
所述服务部署模块具体包括资源部署模块、环境部署模块和状态更新模块:
资源部署模块:在Kubernetes环境下部署mysql集群CR资源;
环境部署模块:mysql-operator监听到CR资源创建,根据mysql集群CR资源,从指定chart包部署到Kubernetes环境中;
状态更新模块:mySql集群部署完成后,mysql-operator更新mysql集群CR资源状态为RUNNING。
本发明的有益效果为:本发明方法能够实现集群动态水平扩展,在Kubernetes系统中自动调整部署脚本的副本数量,可以根据副本数来创建MySQL集群,用户可以根据业务量和业务峰值来动态的调整副本数,增加减少集群节点数量,来达到满足不同业务场景的需求,在业务高峰期保证服务的稳定性,在业务低峰期释放资源,相较于传统的数据库系统减少了人工运维成本,减少人为出错概率,不但提高了数据库系统的可用性也增大了资源利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明方法实施例中高可用集群的资源声明mysqlCluster内容示意图;图2是本发明方法实施例中部署mysql集群CR资源流程图;图3是本发明方法实施例中部署mysql高可用集群流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
实施例一:
一种基于云平台的高可用MySQL部署方法,所述的方法具体步骤如下:
S1向Kubernetes集群提交MySQL高可用集群的的CRD资源声明;
S2提供mysql高可用集群部署逻辑的组件mysql-operator watch到所述资源声明,从chart仓库中获取mysql高可用集群的chart部署到kubernetes集群中;
S3mysql高可用集群搭建完成,通过kubernetes系统提供的service服务对外提供服务;
首先用户按照S1向Kubernetes集群提交mysql高可用集群的资源声明mysqlCluster,内容如图1所示,
S2提供mysql高可用集群部署逻辑的组件mysql-operator watch到所述资源声明,从chart仓库中获取mysql高可用集群的chart部署到kubernetes集群中;
进一步的,所述S1的具体步骤如下:
S101使用Operator-sdk创建项目工程,并添加CRD资源;
S102定义所述CRD资源的status结构体和spec结构体;
S103针对所述CRD资源的status结构体和spec结构体的定义生成框架代码;
进一步的,所述status结构体包括:mysql集群的状态;
进一步的,所述spec结构体包括:mysql节点cpu规格、mysql节点memory规格、mysql节点存储类型、mysql节点存储规格、mysql集群配置文件、mysql集群的root密码、部署mysql集群所需chart包名称、mysql节点副本数;
进一步的,所述S2的具体步骤如下:
S201创建0节点为主节点,每个节点分别创建mysql服务容器和用于备份数据的xtrabackup容器,将备份数据写入3307端口;
S202初始化从节点,监听上一个节点的3307端口,将接收到的数据放在指定的目录下;并且xtrabackup容器恢复从上一节点接收到的数据文件;
S203创建从节点,创建从节点的mysql容器,并接入主节点,从主节点同步数据;创建从节点的xtrabackup容器,将数据文件写入3307端口,提供下一个从节点接收;
S204判断节点数目,若节点数目小于设定节点数,重复步骤S202和S203,否则结束;
当所述mysql高可用集群部署完成,并且正常运行能够提供服务之后,需要增加集群读业务的能力时,可增加mysql高可用集群的资源声明中副本数(即集群节点数),mysql-operator检测到副本数变化时自动更改mysql高可用集群相应配置,利用kubernetes创建从节点,重复上述流程中的步骤S202~S204,直到集群的节点数达到配置的副本数量;
当业务减少,不需要大量从节点提供服务时,减少mysql高可用集群的资源声明中副本数,mysql-operator检测到副本数变化时,自动更改mysql高可用集群相应配置,通过kubernetes使得mysql高可用集群从最后一个从节点开始删除(即最后一个创建的节点最先被删除),依次进行,直到集群节点数达到副本数;
再进一步的,所述S3的具体步骤如下:
S301在Kubernetes环境下部署mysql集群CR资源;
S302mysql-operator监听到CR资源创建,根据mysql集群CR资源,从指定chart包部署到Kubernetes环境中;
S303mySql集群部署完成后,mysql-operator更新mysql集群CR资源状态为RUNNING。
实施例二:
一种基于云平台的高可用MySQL部署系统,所述的系统具体包括声明提交模块、集群部署模块和服务部署模块:
声明提交模块:向Kubernetes集群提交MySQL高可用集群的的CRD资源声明;
集群部署模块:提供mysql高可用集群部署逻辑的组件mysql-operator watch到所述资源声明,从chart仓库中获取mysql高可用集群的chart部署到kubernetes集群中;
服务部署模块:mysql高可用集群搭建完成,通过kubernetes系统提供的service服务对外提供服务;
进一步的,所述声明提交模块具体包括工程创建模块、结构定义模块和代码生成模块:
工程创建模块:使用Operator-sdk创建项目工程,并添加CRD资源;
结构定义模块:定义所述CRD资源的status结构体和spec结构体;
代码生成模块:针对所述CRD资源的status结构体和spec结构体的定义生成框架代码;
进一步的,所述集群部署模块具体包括节点处理模块、从节点初始化模块、从节点创建模块和节点判断模块:
节点处理模块:创建0节点为主节点,每个节点分别创建mysql服务容器和用于备份数据的xtrabackup容器,将备份数据写入3307端口;
从节点初始化模块:初始化从节点,监听上一个节点的3307端口,将接收到的数据放在指定的目录下;并且xtrabackup容器恢复从上一节点接收到的数据文件;
从节点创建模块:创建从节点,创建从节点的mysql容器,并接入主节点,从主节点同步数据;创建从节点的xtrabackup容器,将数据文件写入3307端口,提供下一个从节点接收;
节点判断模块:判断节点数目,若节点数目小于设定节点数,重复从节点初始化模块和从节点创建模块操作;
再进一步的,所述服务部署模块具体包括资源部署模块、环境部署模块和状态更新模块:
资源部署模块:在Kubernetes环境下部署mysql集群CR资源;
环境部署模块:mysql-operator监听到CR资源创建,根据mysql集群CR资源,从指定chart包部署到Kubernetes环境中;
状态更新模块:mySql集群部署完成后,mysql-operator更新mysql集群CR资源状态为RUNNING。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种基于云平台的高可用MySQL部署方法,其特征是所述的方法具体步骤如下:
S1向Kubernetes集群提交MySQL高可用集群的的CRD资源声明;
S2提供mysql高可用集群部署逻辑的组件mysql-operator watch到所述资源声明,从chart仓库中获取mysql高可用集群的chart部署到kubernetes集群中;
S3mysql高可用集群搭建完成,通过kubernetes系统提供的service服务对外提供服务。
2.根据权利要求1所述的方法,其特征是所述S1的具体步骤如下:
S101使用Operator-sdk创建项目工程,并添加CRD资源;
S102定义所述CRD资源的status结构体和spec结构体;
S103针对所述CRD资源的status结构体和spec结构体的定义生成框架代码。
3.根据权利要求2所述的方法,其特征是所述S2的具体步骤如下:
S201创建0节点为主节点,每个节点分别创建mysql服务容器和用于备份数据的xtrabackup容器,将备份数据写入3307端口;
S202初始化从节点,监听上一个节点的3307端口,将接收到的数据放在指定的目录下;并且xtrabackup容器恢复从上一节点接收到的数据文件;
S203创建从节点,创建从节点的mysql容器,并接入主节点,从主节点同步数据;创建从节点的xtrabackup容器,将数据文件写入3307端口,提供下一个从节点接收;
S204判断节点数目,若节点数目小于设定节点数,重复步骤S202和S203,否则结束。
4.根据权利要求3所述的方法,其特征是所述S3的具体步骤如下:
S301在Kubernetes环境下部署mysql集群CR资源;
S302mysql-operator监听到CR资源创建,根据mysql集群CR资源,从指定chart包部署到Kubernetes环境中;
S303mySql集群部署完成后,mysql-operator更新mysql集群CR资源状态为RUNNING。
5.一种基于云平台的高可用MySQL部署系统,其特征是所述的系统具体包括声明提交模块、集群部署模块和服务部署模块:
声明提交模块:向Kubernetes集群提交MySQL高可用集群的的CRD资源声明;
集群部署模块:提供mysql高可用集群部署逻辑的组件mysql-operator watch到所述资源声明,从chart仓库中获取mysql高可用集群的chart部署到kubernetes集群中;
服务部署模块:mysql高可用集群搭建完成,通过kubernetes系统提供的service服务对外提供服务。
6.根据权利要求5所述的系统,其特征是所述声明提交模块具体包括工程创建模块、结构定义模块和代码生成模块:
工程创建模块:使用Operator-sdk创建项目工程,并添加CRD资源;
结构定义模块:定义所述CRD资源的status结构体和spec结构体;
代码生成模块:针对所述CRD资源的status结构体和spec结构体的定义生成框架代码。
7.根据权利要求6所述的系统,其特征是所述集群部署模块具体包括节点处理模块、从节点初始化模块、从节点创建模块和节点判断模块:
节点处理模块:创建0节点为主节点,每个节点分别创建mysql服务容器和用于备份数据的xtrabackup容器,将备份数据写入3307端口;
从节点初始化模块:初始化从节点,监听上一个节点的3307端口,将接收到的数据放在指定的目录下;并且xtrabackup容器恢复从上一节点接收到的数据文件;
从节点创建模块:创建从节点,创建从节点的mysql容器,并接入主节点,从主节点同步数据;创建从节点的xtrabackup容器,将数据文件写入3307端口,提供下一个从节点接收;
节点判断模块:判断节点数目,若节点数目小于设定节点数,重复从节点初始化模块和从节点创建模块操作,否则结束。
8.根据权利要求7所述的系统,其特征是所述服务部署模块具体包括资源部署模块、环境部署模块和状态更新模块:
资源部署模块:在Kubernetes环境下部署mysql集群CR资源;
环境部署模块:mysql-operator监听到CR资源创建,根据mysql集群CR资源,从指定chart包部署到Kubernetes环境中;
状态更新模块:mySql集群部署完成后,mysql-operator更新mysql集群CR资源状态为RUNNING。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210506975.6A CN115167971A (zh) | 2022-05-11 | 2022-05-11 | 一种基于云平台的高可用MySQL部署方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210506975.6A CN115167971A (zh) | 2022-05-11 | 2022-05-11 | 一种基于云平台的高可用MySQL部署方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115167971A true CN115167971A (zh) | 2022-10-11 |
Family
ID=83483603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210506975.6A Pending CN115167971A (zh) | 2022-05-11 | 2022-05-11 | 一种基于云平台的高可用MySQL部署方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115167971A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116049136A (zh) * | 2022-12-21 | 2023-05-02 | 广东天耘科技有限公司 | 基于云计算平台的MySQL集群部署方法和系统 |
-
2022
- 2022-05-11 CN CN202210506975.6A patent/CN115167971A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116049136A (zh) * | 2022-12-21 | 2023-05-02 | 广东天耘科技有限公司 | 基于云计算平台的MySQL集群部署方法和系统 |
CN116049136B (zh) * | 2022-12-21 | 2023-07-28 | 广东天耘科技有限公司 | 基于云计算平台的MySQL集群部署方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11360854B2 (en) | Storage cluster configuration change method, storage cluster, and computer system | |
CN111651275A (zh) | 一种MySQL集群自动化部署系统及方法 | |
CN112261135A (zh) | 基于一致性协议的节点选举方法、系统、装置及设备 | |
CN110795503A (zh) | 分布式存储系统的多集群数据同步方法及相关装置 | |
CN109245908B (zh) | 一种主从集群切换的方法和装置 | |
CN103647830A (zh) | 一种集群管理系统中多层次配置文件的动态管理方法 | |
CN105740248B (zh) | 一种数据同步方法、装置及系统 | |
US11720593B2 (en) | Managing identifiers for multinodal master systems of unknown or changing size | |
CN103428288B (zh) | 基于分区状态表和协调节点的副本同步方法 | |
CN111857977B (zh) | 弹性伸缩方法、装置、服务器和存储介质 | |
WO2023245985A1 (zh) | 一种基于物模型的智慧网关适配系统及其运行方法 | |
CN112000735A (zh) | 一种数据处理方法、装置、系统 | |
CN115167971A (zh) | 一种基于云平台的高可用MySQL部署方法及系统 | |
CN116192961A (zh) | 一种多中心异构多云环境高效适配方法 | |
CN112363815B (zh) | Redis集群处理方法、装置、电子设备及计算机可读存储介质 | |
CN112181724A (zh) | 大数据容灾方法、装置和电子设备 | |
CN105354332A (zh) | 基于bcp实现数据库和中间件互备的方法及系统 | |
Riabko et al. | Cluster fault tolerance model with migration of virtual machines | |
CN115964436A (zh) | 一种数据库集群管理的方法和装置 | |
CN111797166B (zh) | 准实时简历数据同步方法和装置、电子设备及介质 | |
CN111857960A (zh) | 一种计算资源的统一管理方法及系统 | |
CN114036099A (zh) | 一种多处理机系统创建方法、装置、设备及存储介质 | |
CN112751789A (zh) | 一种非对称sdn控制器集群的实现方法及系统 | |
CN113157550A (zh) | 基于容器的漏洞环境管理方法、系统 | |
CN102833098A (zh) | 一种电力通信资源管理系统的gis集成方法 |
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 |