数据库云服务生成方法、装置、设备及可读存储介质与流程
1.本技术涉及计算机技术领域,更具体地说,涉及一种数据库云服务生成方法、装置、设备及可读存储介质。
背景技术:
2.随着大数据时代下计算机技术的发展,数据库作为拥有庞大的数据存储空间的重要基础软件被广泛应用。数据库是指按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。在大数据时代,为了方便信息的获取和使用,将云计算与数据库结合,为用户提供独立完整的大数据资源管理服务平台。云计算即通过计算机网络形成的计算能力极强的系统,对相关资源进行存储、集合,并向用户提供可按需配置的个性化服务的过程,主要包括以下三种服务模式:iaas(infrastructure as a service,基础设施即服务)、paas(platform as a service,平台即服务)和saas(software as a service,软件即服务),这三种云服务可以通过互联网向用户提供所需服务。
3.数据库通过云服务将应用程序放在云端运行,有效降低了用户的开发成本,同时,将数据存储在云中,能够在个人计算机崩溃时,保护数据不会丢失,提高数据可靠性。但是,由于用户访问云服务时所有数据都共享在云端,如遇黑客恶意攻击,将导致用户的隐私数据泄露、丢失等数据安全问题,因此,目前服务商供应的数据库云服务存在较高的安全风险。
技术实现要素:
4.有鉴于此,本技术提供了一种数据库云服务生成方法、装置、设备及可读存储介质,用于解决现有的生成数据库云服务的方法中,当遇到恶意攻击以获取用户存储在云中的数据的情况时,发生用户数据泄露、丢失等数据安全问题,导致产品的安全风险高的问题。
5.为了实现上述目的,现提出的方案如下:
6.一种数据库云服务生成方法,包括:
7.获取用户输入的数据库云服务生成指令,所述生成指令包括待生成的目标数据库云服务的配置参数,所述配置参数包括基础设施资源配置参数、计算资源配置参数和数据库配置参数;
8.根据所述基础设施资源配置参数,为所述目标数据库云服务分配基础设施资源,所述基础设施资源包括存储空间资源和网络资源,所述存储空间资源通过预先进行的存储隔离得到,所述网络资源通过预先进行的网络隔离得到;
9.获取预先搭建的与所述数据库配置参数对应的数据库镜像;
10.基于所述数据库镜像启动容器,并将所述容器部署到所述基础设施资源中;
11.根据所述计算资源配置参数,为所述容器分配计算资源,所述计算资源包括cpu资
源和内存资源,所述cpu资源通过预先进行的cpu隔离得到,所述内存资源通过预先进行的内存隔离得到;
12.运行所述容器,生成所述目标数据库云服务。
13.可选地,所述存储空间资源通过预先进行的存储隔离得到,包括:
14.扫描宿主机中的全部磁盘;
15.为每块所述磁盘创建对应的物理卷;
16.由一个或多个所述物理卷创建一个卷组;
17.在所述卷组上创建一个逻辑卷;
18.在所述逻辑卷上建立文件系统,得到所述存储空间资源。
19.可选地,所述网络资源通过预先进行的网络隔离得到,包括:
20.将宿主机的物理网卡创建为一个或多个虚拟网卡;
21.为所述目标数据库云服务分配一个目标虚拟网卡,得到所述网络资源,所述目标虚拟网卡为所述一个或多个虚拟网卡中的任意一个。
22.可选地,基于所述数据库镜像启动容器,并将所述容器部署到所述基础设施资源中,包括:
23.通过镜像仓库将所述数据库镜像拉取到宿主机,启动所述容器;
24.通过挂载的方式将所述容器部署到所述存储空间资源中;
25.通过虚拟网桥将所述容器部署到所述网络资源中,并为所述容器分配物理地址。
26.可选地,根据所述计算资源配置参数,为所述容器分配计算资源,所述计算资源包括cpu资源和内存资源,包括:
27.根据所述计算资源配置参数,为所述容器分配对应数量的目标cpu和对应大小的内存空间,所述目标cpu即为所述cpu资源,所述内存空间即为所述内存资源。
28.可选地,还包括:
29.记录所述目标cpu对应的标识符,所述标识符为预先设置的cpu编号。
30.可选地,所述配置参数包括基础设施资源配置参数、计算资源配置参数和数据库配置参数,包括:
31.所述基础设施资源配置参数包括文件系统大小和服务器端口,所述计算资源配置参数包括cpu申请数量和内存申请数量,所述数据库配置参数包括数据库版本、数据库部署模式和数据库用户id。
32.可选地,所述预先搭建的与所述数据库配置参数对应的数据库镜像,包括:
33.所述数据库镜像通过编写dockerfile文件构建,所述数据库配置参数设置在所述dockerfile文件中。
34.一种数据库云服务生成装置,包括:
35.指令获取单元,用于获取用户输入的数据库云服务生成指令,所述生成指令包括待生成的目标数据库云服务的配置参数,所述配置参数包括基础设施资源配置参数、计算资源配置参数和数据库配置参数;
36.基础设施资源分配单元,用于根据所述基础设施资源配置参数,为所述目标数据库云服务分配基础设施资源,所述基础设施资源包括存储空间资源和网络资源,所述存储空间资源通过预先进行的存储隔离得到,所述网络资源通过预先进行的网络隔离得到;
37.数据库镜像获取单元,用于获取预先搭建的与所述数据库配置参数对应的数据库镜像;
38.容器启动单元,用于基于所述数据库镜像启动容器,并将所述容器部署到所述基础设施资源中;
39.计算资源分配单元,用于根据所述计算资源配置参数,为所述容器分配计算资源,所述计算资源包括cpu资源和内存资源,所述cpu资源通过预先进行的cpu隔离得到,所述内存资源通过预先进行的内存隔离得到;
40.数据库云服务生成单元,用于运行所述容器,生成所述目标数据库云服务。
41.一种数据库云服务生成设备,包括:
42.存储器和处理器;
43.所述存储器,用于存储程序;
44.所述处理器,用于执行所述程序,实现前述数据库云服务生成方法的各个步骤。
45.一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现前述数据库云服务生成方法的各个步骤。从上述的技术方案可以看出,本技术实施例提供的数据库云服务生成方法通过获取用户输入的数据库云服务生成指令,生成指令包含待生成的目标数据库云服务的配置参数,根据配置参数为目标数据库云服务分配存储空间资源,并配置网络资源,基于预先搭建的数据库镜像启动容器,并将容器部署到上述存储空间资源和网络资源中,进一步为容器分配cpu资源和内存资源,运行容器生成目标数据库云服务。本技术方案将数据库云服务部署到容器中,基于容器技术实现了物理资源的分配与隔离,其中存储空间隔离和网络隔离属于计算机基础设施隔离,cpu隔离和内存隔离属于计算资源隔离,根据用户申请的数据库云服务的配置参数,通过上述隔离方法将物理资源分配到不同的容器中,利用容器将资源隔离开,使得不同容器之间的资源互不影响,实现物理资源隔离,提高云数据库的安全性,降低用户在使用过程中的安全风险。
46.并且,本技术方案通过构建云计算平台生成数据库云服务,用户可按需配置需求参数,实现数据库个性化定制,同时,由于各容器之间相互隔离,互不影响,因此可实现同时并发生成多套数据库云服务交付多个用户,提高数据库交付效率。
附图说明
47.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
48.图1为本技术实施例提供的数据库云服务生成方法的一种可选流程图;
49.图2-图5示例了本技术实施例公开的对数据库云服务进行资源分配的几种可选的宿主机资源分配示意图;
50.图6为本技术实施例公开的一种数据库云服务生成装置结构示意图;
51.图7为本技术实施例公开的一种数据库云服务生成设备的硬件结构框图。
具体实施方式
52.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
53.经发明人调查发现,随着云计算技术的发展,云服务由于具有高性价比、高灵活性、动态可扩展等优势得到用户广泛使用,用户将数据存储在云端实现数据共享的同时往往会伴随着数据安全问题的发生,由于基础设施中存在大量重要、敏感的数据未被隔离保护,导致信息泄露或恶意攻击篡改等行为发生。
54.发明人研究发现,利用容器技术可以把进程运行在一个容器中,与外界隔离,通过对资源的限制与隔离把资源划分到一个独立的空间,实现进程和资源的隔离,各个容器之间互不影响。
55.有鉴于此,发明人提出了一种数据库云服务生成方法,图1示出了本技术实施例提供的数据库云服务生成方法的一种可选流程图,如图1所示,该流程可以包括:
56.步骤s10、获取用户输入的数据库云服务生成指令,所述生成指令包括待生成的目标数据库云服务的配置参数,所述配置参数包括基础设施资源配置参数、计算资源配置参数和数据库配置参数。
57.具体地,用户输入的数据库云服务生成指令可以通过多种途径获取,例如通过向用户发送包含所需配置参数的提示信息的链接,获取用户输入的信息及信息提交指令,还可以通过获取用户输入的配置数据库云服务的相关信息,从信息中提取配置参数信息。
58.其中,基础设施资源配置参数可以是文件系统大小、服务器端口等计算机基础设施相关资源的配置参数,计算资源配置参数可以是cpu申请数量、内存申请数量等与计算机运算能力相关的配置参数,数据库配置参数可以是数据库版本、数据库部署模式、数据库用户id等与数据库相关的配置参数。
59.步骤s11、根据所述基础设施资源配置参数,为所述目标数据库云服务分配基础设施资源,所述基础设施资源包括存储空间资源和网络资源,所述存储空间资源通过预先进行的存储隔离得到,所述网络资源通过预先进行的网络隔离得到。
60.其中,存储空间资源可以包括磁盘数量、文件目录等,网络资源可以包括网卡、ip地址等。
61.具体地,可以根据上述配置参数中的文件系统大小确定存储空间资源,通过为目标数据库云服务分配存储空间资源可以确定目标数据库云服务所使用的磁盘的数量、大小、目录位置等。
62.进一步地,可以根据上述配置参数中的服务器端口,为目标数据库云服务分配网络资源,通过分配的网络资源可以确定目标数据库云服务网络连接端口。
63.步骤s12、获取预先搭建的与所述数据库配置参数对应的数据库镜像。
64.具体地,需要获取的数据库镜像可以是与用户提交的目标数据库云服务配置参数中的数据库版本参数一致的数据库镜像。进一步地,可以预先制作好各版本数据库镜像,将制作好的全部版本的数据库镜像保存到镜像仓库中,当有需要时,可以从镜像仓库中下载对应版本的数据库镜像进行使用。
65.其中,镜像仓库是镜像的集合,用于存储、管理、部署容器镜像,可以基于应用容器引擎docker官方提供的私有仓库docker registry进行搭建,可以是基础版本的简化公共镜像仓库,也可以在本地搭建私有的镜像仓库。
66.步骤s13、基于所述数据库镜像启动容器,并将所述容器部署到所述基础设施资源中。
67.具体地,通过运行容器docker run命令,可以基于获取的数据库镜像,完成启动容器的操作。其中,可以通过镜像仓库拉取所需的数据库镜像到宿主机,再基于拉取的数据库镜像启动容器。其中,容器即镜像创建的运行实例,一个容器相当于一个计算机进程,可以将容器看做一个轻量级的linux运行环境,利用容器运行应用程序。
68.进一步地,容器启动完成,需要为容器分配文件系统和网络等基础设施资源,可以将容器部署到上述步骤s11中为目标数据库云服务分配好的基础设施资源中。
69.具体地,可以通过将上述步骤s11中为目标数据库云服务分配的存储空间资源挂载到容器中创建的指定目录下,使得上述步骤s11中为目标数据库云服务分配的物理磁盘作为该容器的存储空间。同时,可以通过虚拟网桥将上述步骤s11中为目标数据库云服务分配的网络资源桥接一个虚拟接口到容器中,并从上述网络资源中为容器分配一个物理地址,其中,为容器配置的物理地址为上述网络资源中未被占用的ip地址。
70.步骤s14、根据所述计算资源配置参数,为所述容器分配计算资源,所述计算资源包括cpu资源和内存资源,所述cpu资源通过预先进行的cpu隔离得到,所述内存资源通过预先进行的内存隔离得到。
71.具体地,分配cpu资源可以确定容器具体使用哪些cpu,如果需要进行资源超配,可以对cpu进行重复利用。分配内存资源可以规定容器所占用的内存大小,或者为容器分配规定大小的内存和swap分区(交换分区),如果需要进行内存超配,可以适当规划超过宿主机总内存一定比例的内存空间分配给容器。
72.其中,计算资源超配是指物理主机上所有虚拟机的cpu或内存资源总量超过了物理主机本身的资源限制,计算资源超配的目的是为了使物理主机和虚拟机在极端情况下不会因为硬件资源不足而发生运行状态异常的情况,保证运行的可靠性。swap分区用于在操作系统的物理内存不够用时,把硬盘内存中的一部分空间释放出来,以供当前运行的应用程序使用,被释放的空间临时保存到swap分区中,在为容器规划内存空间大小进行内存超配时,需要用到swap分区,以保证容器有足够的内存空间。
73.步骤s15、运行所述容器,生成所述目标数据库云服务。
74.具体地,可以通过docker命令运行容器中的程序,完成目标数据库云服务的生成。进一步地,可以将生成的目标数据库云服务输出,提交给用户。本技术实施例提供的数据库云服务生成方法,根据用户输入的目标数据库云服务的配置参数,将配置参数对应的基础设施资源和计算资源分配给容器,该容器基于预先搭建的数据库镜像启动,通过运行该容器生成目标数据库云服务。本技术实施例基于容器技术,将数据库部署在容器中,利用容器实现物理资源隔离,使得不同容器之间的资源和进程互不影响,提高云数据库的安全性,降低用户在使用过程中的安全风险。
75.进一步,用户可以根据个人需求提交配置参数,由于目标数据库云服务是根据用户提交的配置参数生成的,因此,本技术能够实现数据库的个性化定制。同时,由于各容器
之间相互隔离、互不影响,因此,本技术可同时并发生成多套数据库云服务,进而能够在保证数据安全的同时并发交付多个用户,提高数据库交付效率。
76.进一步参见图2,图2示出了本技术实施例公开的一种基于存储隔离为数据库云服务分配存储空间资源的宿主机存储空间分配示意图,结合图2,本技术实施例中介绍了上述步骤s11中为目标数据库云服务分配存储空间资源的一种可选实现方式,详细可以包括如下步骤:
77.s1、扫描宿主机中的全部磁盘。
78.其中,宿主机可以是部署了虚拟化环境的专属物理服务器,如一台安装有虚拟机的物理计算机。
79.具体地,如图2所示,图2中扫描到宿主机中共有5块磁盘。进一步,可以为扫描到的磁盘命名作为磁盘的标识符,以供资源分配时能够清楚分配到的是哪几块磁盘。如图2所示,可以通过为磁盘编号的方式为磁盘设置标识符。
80.s2、为每块磁盘创建对应的物理卷。
81.其中,物理卷(physical volume,pv)是指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备,与磁盘相比,物理卷含有与管理磁盘分区相关的管理参数。
82.具体地,一块磁盘对应创建一个物理卷。如图2所示,每块磁盘都对应创建了一个物理卷,并且物理卷的编号与对应磁盘的编号一致。
83.s3、由一个或多个物理卷创建一个卷组。
84.其中,卷组(volume group,vg)可以是由一个或多个物理卷所组成的存储池。
85.具体地,一个卷组可以由一个物理卷创建,也可以由两个及两个以上的多个物理卷创建。如图2所示的两种可选的磁盘分配情况,图2(a)中的卷组由物理卷1和物理卷2创建,图2(b)中的卷组由物理卷3、物理卷4及物理卷5创建。
86.s4、在卷组上创建一个逻辑卷。
87.其中,逻辑卷(logical volume,lv)可以是通过物理存储设备虚拟出来的存储设备,它可以是一个标准的块设备,类似于硬盘分区。可以把逻辑卷建立在卷组之上。
88.具体地,在上述步骤s3创建的指定卷组上创建一个逻辑卷,也可以创建多个逻辑卷,在本实施例中,一个卷组上只创建一个逻辑卷。如图2所示,每个创建的卷组上都对应创建了一个逻辑卷。
89.s5、在逻辑卷上建立文件系统。
90.具体地,逻辑卷相当于存储设备,需要进行格式化,通过格式化建立文件系统后,才可以写入数据。
91.本技术实施例中,上述步骤s1-s4是对宿主机的存储空间进行存储隔离的步骤。在前述实施例中,上述步骤s1-s4是预先完成的,而在前述步骤s11中,只需要根据用户输入的文件系统大小相关参数,确定所需的逻辑卷分配给目标数据库云服务,示例如图2中为每个逻辑卷分配一个docker容器,上述实施例已经说明本技术实施例可以将数据库云服务部署到容器中,可以通过将上述确定所需的逻辑卷分配给待生成的目标数据库云服务所部署到的容器中,完成存储空间资源的分配。进一步,在逻辑卷上创建文件系统就可以使用对应的存储空间资源。
92.本实施例通过“磁盘—物理卷—卷组—逻辑卷”的方式预先完成对宿主机存储空
间进行的存储隔离,根据获取到用户输入的配置参数,在隔离好的存储空间资源中选择与用户配置参数一致的存储空间资源分配给待生成的目标数据库云服务所部署到的容器,使得容器可以独享某一块或几块磁盘,实现磁盘级别的隔离。
93.进一步,逻辑卷还具有可扩展性,可随时按需求改变逻辑卷大小,可以以单块磁盘为单位进行增加,扩展磁盘数量或逻辑卷大小,充分利用存储空间。
94.进一步参见图3,图3示出了本技术实施例公开的一种基于网络隔离为数据库云服务分配网络资源的示意图,结合图3,本技术实施例中介绍了上述步骤s11中为目标数据库云服务分配网络资源的一种可选实现方式。
95.本实施例可以基于虚拟网卡技术,通过将物理网卡创建为一个或多个虚拟网卡,实现网络隔离。
96.进一步地,在前述实施例的步骤s11中,为目标数据库云服务分配网络资源,所述网络资源即为本实施例中在进行网络隔离后得到的虚拟网卡中确定的一个目标虚拟网卡。
97.具体地,前述实施例中已经说明可以根据用户输入的配置参数中的服务器端口参数,为目标数据库云服务分配网络资源,在本实施例中即为根据服务器端口参数确定一个目标虚拟网卡,可以将目标虚拟网卡通过挂载的方式挂载到目标数据库云服务所部属的容器中,更进一步地,可以为该容器分配物理ip地址供该容器使用。
98.其中,创建的虚拟网卡通常是成对创建的,一对虚拟网卡连接两个网络设备,本实施例中,创建的一对虚拟网卡分别连接宿主机和容器。进一步,可以通过虚拟网桥将容器部署到为目标数据库云服务分配的网络资源中,将容器连接到桥接网络中。
99.本实施例中,网络隔离的步骤是预先完成的,即虚拟网卡是预先创建好的,在生成目标数据库云服务时,只需要确定一个目标虚拟网卡作为分配给目标数据库云服务的网络资源,并将目标虚拟网卡连接至目标数据库云服务所部署的容器,为容器配置物理地址,完成目标数据库云服务的网络配置。本实施例通过虚拟网卡技术实现了各容器之间的网卡流量相互隔离,实现网络级别的隔离。
100.进一步参见图4,图4示出了本技术实施例公开的一种为数据库云服务分配cpu资源的示意图,结合图4,本技术实施例中介绍了上述步骤s14中为容器分配cpu资源的一种可选实现方式。
101.本实施例将详细说明通过确定供目标数据库云服务使用的目标cpu,实现为容器分配cpu资源的过程,示例如图4,详细过程可以包括以下步骤:
102.s1、预先为宿主机全部cpu设置标识符。
103.其中,标识符可以是数字编号,也可以是字符串,用于标记cpu便于区分。如图4所示,示例中cpu标识符的形式为数字编号,共有cpu0-cpu3四个cpu。
104.s2、根据用户输入的计算资源配置参数,确定目标cpu。
105.具体地,根据计算资源配置参数中的cpu申请数量,在上述步骤s1中设置好标识符的全部cpu中选择对应数量的cpu,得到目标cpu。其中目标cpu即为分配给容器的cpu资源。
106.如图4所示,图4中示出了两种为容器分配cpu的情况。若cpu申请数量为1,那么对应选择任意一个cpu,可以是cpu0,作为目标cpu分配给容器;若cpu申请数量为3,那么对应选择任意3个cpu,可以是cpu1、cpu2和cpu3,作为目标cpu分配给容器。
107.s3、将目标cpu分配容器。
108.具体地,记录目标cpu对应的标识符,将记录的标识符作为参数
“‑‑
cpuset-cpus参数”输入docker命令语句,通过运行docker命令,完成cpu资源分配容器的操作。
109.例如,图4中当cpu申请数量为3时,确定的目标cpu为cpu1、cpu2和cpu3,运行如下命令:
110.docker run-it
‑‑
rm
‑‑
cpuset-cpus=”1-3”mysql:latest
111.上述docker语句表示容器利用cpu1、cpu2和cpu3,即为容器分配的cpu资源为cpu1、cpu2和cpu3。
112.进一步地,如果需要进行cpu超配,可以重复利用cpu编号。
113.本实施例为cpu设置标识符,根据cpu申请数量配置参数,确定目标cpu,并通过运行docker命令,将目标cpu分配给容器,实现各容器之间的cpu隔离。
114.进一步参见图5,图5示出了本技术实施例公开的一种为数据库云服务分配内存资源的示意图,结合图5,本技术实施例中介绍了上述步骤s14中为容器分配内存资源的一种可选实现方式。
115.其中,为容器分配内存资源可以是规定容器所能占用的内存大小。具体地,本实施例中,根据用户输入的计算资源配置参数中的内存申请数量,为容器规划出对应大小的内存空间,分配给容器。
116.进一步地,将上述为容器分配的内存空间大小作为参数
“‑‑
memory参数”输入docker命令语句,通过运行docker命令,完成为容器分配内存资源的操作。
117.例如,当内存申请数量为1g时,在宿主机内存中规划出容量大小为1g的内存空间,如图5所示的内存空间1,运行如下命令:
118.docker run
‑‑
memory 1g mysql:latest
119.上述docker语句表示容器能够使用的内存大小为1g,即为容器分配的内存资源为1g的内存空间1。
120.更进一步地,如果需要进行内存超配,可以为容器规划超过宿主机总内存一定比例的内存空间。具体地,可以使用swap分区释放出一定大小的内存空间供容器使用。需要注意的是,内存大小与swap分区大小的总和不得超过宿主机总内存的大小。
121.例如,当内存申请数量为2g时,在宿主机内存中规划出容量大小为1g的内存空间,并释放1g大小的swap分区,如图5所示的内存空间2,运行如下命令:
122.docker run
‑‑
memory 1g
–
memory-swap 2g mysql:latest
123.上述docker语句表示容器能够使用的内存大小为1g,内存+swap分区大小不超过2g,即为容器分配的内存资源为不超过2g的内存空间2。
124.本实施例为容器分配内存空间,将各个容器所占用的内存隔离开,实现内存隔离。
125.接下来,本技术实施例针对上述步骤s12中预先搭建数据库镜像的过程做进一步介绍。
126.一种可选的方式下,本实施例可以通过编写dockerfile文件实现数据库镜像的制作,详细数据库镜像搭建过程可以包括如下步骤:
127.s1、创建dockerfile目录。
128.s2、下载mysql介质包至dockerfile目录。
129.s3、创建dockerfile文件。
130.s4、运行dockerfile文件,构建mysql镜像。
131.下面以centos环境下编写dockerfile文件为例,对上述s1-s4步骤进行详细说明。
132.s1、创建dockerfile目录。
133.mkdir
–
p/root/dockerfile
134.s2、下载mysql介质包至dockerfile目录。
135.mv mysql-8.0.23-linux-glibc2.12-x86_64.tar.gz/root/dockerfile
136.其中,下载的数据库版本为mysql8.0.23。
137.s3、创建dockerfile文件。
138.vidockerfile
139.其中,创建dockerfile文件可以包括:
140.1)设置环境变量:
141.workdir/root
142.env mysql_data_dir=/mydata/data
143.env mysql_user=mysql
144.env mysql_extract_dir=/usr/local
145.env mysql_port=3306
146.2)数据库安装:
147.run mkdir
–
p$mysql_data_dir&&cd$mysql_extract_dir&&tar xf mysql-8.0.23-linux-glibc2.12-x86_64.tar.gz
148.run chown-r mysql:mysql/mydata/data
149.run cd/usr/local/mysql/scripts&&mysql_install_db
‑‑
user=mysql
–
datadir=/mydata/data
‑‑
socket=/tmp/mysql.sock
‑‑
pid-file=/mydata/data/mysqld.pid
‑‑
log-er ror=/mydata/data/mysqld.log
‑‑
basedir=/usr/local/mysql
150.run cd/usr/local/mysql/bin&&mysqld_safe
‑‑
user=mysql
‑‑
basedir=/usr/local/mysql
‑‑
datadir=/mydata/data
‑‑
socket=/mydata/data/mysql.sock
151.s4、运行dockerfile文件,构建mysql镜像。
152.docker build-t docker-user/mysql:v1/root/dockerfile
153.本实施例通过编写dockerfile文件完成数据库镜像的构建,可以预先构建好数据库各个版本对应的数据库镜像,保存在镜像仓库中,在生成某个版本的数据库云服务时,可以直接从镜像仓库中下载对应版本的数据库镜像来使用,节省生成数据库云服务的时间,提高效率。
154.进一步地,完成前述实施例中为目标数据库云服务进行基础设施资源分配的各个步骤,可以通过镜像仓库拉取数据库镜像到宿主机,启动容器。具体地,可以通过以下docker命令实现容器的拉起:
155.docker run-d-p 13306:3306-v/db/mysql:/mydata/data docker-user/mysql:v1
156.其中,docker run
–
d用于在后台创建并启动容器,-p参数用于指定端口映射,将容器内mysql暴露的3306端口映射至本地主机的13306端口,-v参数用于指定数据目录的挂载路径,将容器中mysql的数据目录挂载至本地主机的/db/mysql目录。
157.更进一步地,在启动容器后,将容器部署到分配好的基础设施资源中,包括部署到存储空间资源以及网络资源。
158.具体地,将容器部署到存储空间资源可以通过将逻辑卷上建立的文件系统挂载到容器内,使得容器可以使用该逻辑卷对应的磁盘存储空间进行数据存储。进一步,将容器部署到网络资源可以通过虚拟网桥或挂载的方式将虚拟网卡连接到容器,并为容器分配单独的ip地址,使得容器能够连接到桥接网络中,独自使用网卡流量,完成容器部署。
159.结合上述各实施例,本技术基于容器技术,实现了底层物理资源的隔离,从而提高了通过生成的数据库云服务进行数据存储和数据管理的安全性,降低了用户访问数据库云服务过程中存在的安全风险,进一步保护了用户的数据信息和用户隐私。
160.下面对本技术实施例提供的数据库云服务生成装置进行描述,下文描述的数据库云服务生成装置与上文描述的数据库云服务生成方法可相互对应参照。
161.结合图6,对本技术实施例公开的一种数据库云服务生成装置进行介绍,如图6所示,该数据库云服务生成装置可以包括:
162.指令获取单元100,用于获取用户输入的数据库云服务生成指令,所述生成指令包括待生成的目标数据库云服务的配置参数,所述配置参数包括基础设施资源配置参数、计算资源配置参数和数据库配置参数;
163.基础设施资源分配单元110,用于根据所述基础设施资源配置参数,为所述目标数据库云服务分配基础设施资源,所述基础设施资源包括存储空间资源和网络资源,所述存储空间资源通过预先进行的存储隔离得到,所述网络资源通过预先进行的网络隔离得到;
164.数据库镜像获取单元120,用于获取预先搭建的与所述数据库配置参数对应的数据库镜像;
165.容器启动单元130,用于基于所述数据库镜像启动容器,并将所述容器部署到所述基础设施资源中;
166.计算资源分配单元140,用于根据所述计算资源配置参数,为所述容器分配计算资源,所述计算资源包括cpu资源和内存资源,所述cpu资源通过预先进行的cpu隔离得到,所述内存资源通过预先进行的内存隔离得到;
167.数据库云服务生成单元150,用于运行所述容器,生成所述目标数据库云服务。
168.可选地,所述基础设施资源分配单元110可以包括:
169.存储空间资源分配单元,用于为所述目标数据库云服务分配存储空间资源;
170.网络资源分配单元,用于为所述目标数据库云服务分配网络资源。
171.可选地,所述存储空间资源分配单元可以包括:
172.磁盘扫描单元,用于扫描宿主机中的全部磁盘;
173.物理卷创建单元,用于为每块所述磁盘创建对应的物理卷;
174.卷组创建单元,用于由一个或多个所述物理卷创建一个卷组;
175.逻辑卷创建单元,用于在所述卷组上创建一个逻辑卷;
176.文件系统创建单元,用于在所述逻辑卷上建立文件系统,得到所述存储空间资源。
177.可选地,所述网络资源分配单元可以包括:
178.虚拟网卡创建单元,用于将宿主机的物理网卡创建为一个或多个虚拟网卡;
179.虚拟网卡分配单元,用于为所述目标数据库云服务分配一个目标虚拟网卡,得到
所述网络资源,所述目标虚拟网卡为所述一个或多个虚拟网卡中的任意一个。
180.可选地,所述容器启动单元130可以包括:
181.镜像拉取单元,用于通过镜像仓库将所述数据库镜像拉取到宿主机,启动所述容器;
182.存储空间资源部署单元,用于通过挂载的方式将所述容器部署到所述存储空间资源中;
183.网络资源部署单元,用于通过虚拟网桥将所述容器部署到所述网络资源中,并为所述容器分配物理地址。
184.可选地,所述计算资源分配单元140可以包括:
185.cpu资源分配单元,用于根据所述计算资源配置参数,为所述容器分配对应数量的目标cpu,所述目标cpu即为所述cpu资源;
186.内存资源分配单元,用于根据所述计算资源配置参数,为所述容器分配对应大小的内存空间,所述内存空间即为所述内存资源。
187.可选地,所述计算资源分配单元140还可以包括:
188.cpu标记符记录单元,用于记录所述目标cpu对应的标记符,所述标记符为预先设置的cpu编号。
189.本技术实施例提供的数据库云服务生成装置可应用于数据库云服务生成设备。数据库云服务生成设备可以是计算机。图7示出了数据库云服务生成设备的硬件结构框图,如图7所示,数据库云服务生成设备的硬件结构可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4。
190.在本技术实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信。
191.其中,处理器1可能是一个中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit,专用集成电路),或者是被配置成实施本发明实施例的一个或多个集成电路等。
192.存储器3可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器。
193.其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于实现前述数据库云服务生成方案中的各个处理流程。
194.本技术实施例还提供一种可读存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于实现前述数据库云服务生成方案中的各个处理流程。
195.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
196.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他
实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
197.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
技术特征:
1.一种数据库云服务生成方法,其特征在于,包括:获取用户输入的数据库云服务生成指令,所述生成指令包括待生成的目标数据库云服务的配置参数,所述配置参数包括基础设施资源配置参数、计算资源配置参数和数据库配置参数;根据所述基础设施资源配置参数,为所述目标数据库云服务分配基础设施资源,所述基础设施资源包括存储空间资源和网络资源,所述存储空间资源通过预先进行的存储隔离得到,所述网络资源通过预先进行的网络隔离得到;获取预先搭建的与所述数据库配置参数对应的数据库镜像;基于所述数据库镜像启动容器,并将所述容器部署到所述基础设施资源中;根据所述计算资源配置参数,为所述容器分配计算资源,所述计算资源包括cpu资源和内存资源,所述cpu资源通过预先进行的cpu隔离得到,所述内存资源通过预先进行的内存隔离得到;运行所述容器,生成所述目标数据库云服务。2.根据权利要求1所述的方法,其特征在于,所述存储空间资源通过预先进行的存储隔离得到,包括:扫描宿主机中的全部磁盘;为每块所述磁盘创建对应的物理卷;由一个或多个所述物理卷创建一个卷组;在所述卷组上创建一个逻辑卷;在所述逻辑卷上建立文件系统,得到所述存储空间资源。3.根据权利要求1所述的方法,其特征在于,所述网络资源通过预先进行的网络隔离得到,包括:将宿主机的物理网卡创建为一个或多个虚拟网卡;为所述目标数据库云服务分配一个目标虚拟网卡,得到所述网络资源,所述目标虚拟网卡为所述一个或多个虚拟网卡中的任意一个。4.根据权利要求1所述的方法,其特征在于,基于所述数据库镜像启动容器,并将所述容器部署到所述基础设施资源中,包括:通过镜像仓库将所述数据库镜像拉取到宿主机,启动所述容器;通过挂载的方式将所述容器部署到所述存储空间资源中;通过虚拟网桥将所述容器部署到所述网络资源中,并为所述容器分配物理地址。5.根据权利要求1所述的方法,其特征在于,根据所述计算资源配置参数,为所述容器分配计算资源,所述计算资源包括cpu资源和内存资源,包括:根据所述计算资源配置参数,为所述容器分配对应数量的目标cpu和对应大小的内存空间,所述目标cpu即为所述cpu资源,所述内存空间即为所述内存资源。6.根据权利要求5所述的方法,其特征在于,还包括:记录所述目标cpu对应的标识符,所述标识符为预先设置的cpu编号。7.根据权利要求1所述的方法,其特征在于,所述配置参数包括基础设施资源配置参数、计算资源配置参数和数据库配置参数,包括:所述基础设施资源配置参数包括文件系统大小和服务器端口,所述计算资源配置参数
包括cpu申请数量和内存申请数量,所述数据库配置参数包括数据库版本、数据库部署模式和数据库用户id。8.一种数据库云服务生成装置,其特征在于,包括:指令获取单元,用于获取用户输入的数据库云服务生成指令,所述生成指令包括待生成的目标数据库云服务的配置参数,所述配置参数包括基础设施资源配置参数、计算资源配置参数和数据库配置参数;基础设施资源分配单元,用于根据所述基础设施资源配置参数,为所述目标数据库云服务分配基础设施资源,所述基础设施资源包括存储空间资源和网络资源,所述存储空间资源通过预先进行的存储隔离得到,所述网络资源通过预先进行的网络隔离得到;数据库镜像获取单元,用于获取预先搭建的与所述数据库配置参数对应的数据库镜像;容器启动单元,用于基于所述数据库镜像启动容器,并将所述容器部署到所述基础设施资源中;计算资源分配单元,用于根据所述计算资源配置参数,为所述容器分配计算资源,所述计算资源包括cpu资源和内存资源,所述cpu资源通过预先进行的cpu隔离得到,所述内存资源通过预先进行的内存隔离得到;数据库云服务生成单元,用于运行所述容器,生成所述目标数据库云服务。9.一种数据库云服务生成设备,其特征在于,包括:存储器和处理器;所述存储器,用于存储程序;所述处理器,用于执行所述程序,实现如权利要求1-7任一项的数据库云服务生成方法的各个步骤。10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-7任一项的数据库云服务生成方法的各个步骤。
技术总结
本申请公开了一种数据库云服务生成方法、装置、设备及可读存储介质,通过获取用户输入的数据库云服务生成指令,生成指令包含待生成的目标数据库云服务的配置参数,根据配置参数为目标数据库云服务分配存储空间资源,并配置网络资源,基于预先搭建的数据库镜像启动容器,并将容器部署到存储空间资源和网络资源中,进一步为容器分配CPU资源和内存资源,运行容器生成目标数据库云服务。由于本申请方案通过构建云计算平台生成数据库云服务,将数据库云服务部署到容器中,利用容器能够将底层的物理资源隔离开,使得不同容器之间的资源互不影响,通过Docker容器实现数据库云服务的物理资源分配与隔离,从而提高数据库云服务的安全性,保护用户的数据信息。保护用户的数据信息。保护用户的数据信息。
