CN104252485B - 一种数据库管理平台 - Google Patents
一种数据库管理平台 Download PDFInfo
- Publication number
- CN104252485B CN104252485B CN201310268144.0A CN201310268144A CN104252485B CN 104252485 B CN104252485 B CN 104252485B CN 201310268144 A CN201310268144 A CN 201310268144A CN 104252485 B CN104252485 B CN 104252485B
- Authority
- CN
- China
- Prior art keywords
- database
- instance
- record
- management module
- database instance
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
Abstract
本发明公开了一种数据库管理平台。该数据库管理平台包括:主机管理模块,用于将MySQL数据库的主机安装至数据库管理平台中,以由该主机承载数据库实例;组管理模块,用于设置实例组,以及,将运行相同数据的数据库实例划分在同一实例组中,建立实例组与域名的逻辑对应关系,根据该逻辑对应关系为每个实例组分配一个独有的域名,并为每个实例组生成一条实例组记录;智能名系统DNS管理模块,用于为管理的每个域名维护一个动态DNS记录;实例管理模块,用于为管理的每个数据库实例维护一条实例记录,根据需要上线的数据库实例归属实例组的实例组记录、该数据库实例的实例记录和动态DNS记录,实现数据库实例的上线操作和下线操作。
Description
技术领域
本发明涉及数据库应用技术领域,特别涉及一种数据库管理平台。
背景技术
MySQL数据库服务于互联网企业已有十年之久,其拥有很好的可扩展性,从仅有1MB的深度嵌入式应用到高达千兆的大型数据仓库,MySQL数据库都能够应对自如。MySQL还支持各种Linux、UNIX和Windows平台,在众多关系型数据库产品当中MySQL的存储引擎特点使得其逐渐成为各种业务模型选择的数据存储介质。
然而,随着业务量、数据量的不断攀升,数据库服务器相关的硬件量也快速增长,现有对MySQL数据库的管理方案至少存在如下缺陷:
现有方案对MySQL数据库的控制和维护主要依赖于人力干预,管理具有较大随意性,且存在大量重复性的劳动,人工操作的复杂度较高,导致出错率高、成本高、效率低。
发明内容
本发明实施例提供了一种数据库管理平台,能够自动实现对MySQL数据库的管理,避免依赖人力干预进行管理时造成的问题,降低了管理成本和出错率,提高了管理效率。
为达到上述目的,本发明实施例采用了如下技术方案:
本发明实施例提供了一种数据库管理平台,所述平台包括:
主机管理模块,用于将MySQL数据库的主机安装至数据库管理平台中,以由该主机承载数据库实例;
组管理模块,用于设置实例组,以及,将运行相同数据的数据库实例划分在同一实例组中,建立实例组与域名的逻辑对应关系,根据该逻辑对应关系为每个实例组分配一个独有的域名,并为每个实例组生成一条实例组记录;
智能域名系统DNS管理模块,用于为管理的每个域名维护一个动态DNS记录,该动态DNS记录中的信息包括域名所属实例组标识、域名所属实例标识、域名类型和存活标识;
实例管理模块,用于为管理的每个数据库实例维护一条实例记录,根据需要上线的数据库实例归属实例组的实例组记录、该数据库实例的实例记录和动态DNS记录,实现数据库实例的上线操作;以及,根据已上线的数据库实例归属的实例组的实例组记录、该数据库实例的实例记录和动态DNS记录,实现数据库实例的下线操作。
本发明实施例的有益效果是:
本发明实施例提供的数据库管理平台利用主机管理模块能够自动实现MySQL数据库的安装,并利用组管理模块和实例管理模块实现对数据库实例的创建、上线和下线等操作,从而避免了依赖人力管理数据库时造成的出错率高、成本高、效率低以及随意性较大的问题等,能够实现对MySQL数据库自动控制和维护,并使对数据库的管理更加规范化和统一化。
附图说明
图1示出了本发明一个实施例的数据库管理平台的架构示意图。
图2示出了本发明另一个实施例中的组管理模块增加新的实例组时的流程图;
图3示出了本发明另一个实施例中实例管理模块创建数据库实例的方法流程示意图;
图4示出了本发明另一个实施例中实例管理模块启动数据库实例的方法流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明提供的数据库管理平台或称之为DBOP(DataBase Operation P1atform,数据库操作平台)可以自动化安装指定版本的MySQL数据库、配置数据库实例、分配业务账号权限、自动建立主从关系、同步集数据库实例、对平台中的目录、权限规范进行统一性管理;可以立体化的监控和展示各业务数据库、数据库实例、主机的运行状况;使用智能DNS,支持域名访问,读写分离;及时通报数据库实例及数据库服务器故障,自动化处理数据库实例故障修复。本数据库平台为用户提供了更稳定的数据平台支撑,为数据库管理员进行故障维护和故障分析节省了时间;可以轻松配置各种类型、不同周期的备份任务,展现备份情况的报告等。
参见图1,示出了本发明一个实施例提供的一种数据库管理平台的架构示意图。该架构中主要包括六个逻辑层:MySQL实例池、操作层、数据层、API(ApplicationProgramming Interface,应用程序编程接口)层、DNS(Domain Name System,域名系统)层和监控层。
其中,MySQL实例池通过安装在数据库管理平台中的一台或多台主机,承载了数据库管理平台中的数据库实例的运行。
API层支持用于数据库管理平台与外部交互及信息展示的UI(User Interface,用户界面),例如,数据库管理员可以使用富媒体访问API实现对数据库管理平台的操作。但不限于此,API还可以承担更多的工作,比如提供数据收集接口,更丰富的数据类型等等。为了有更好的兼容性与扩展性API可以采用REST(Representational State Transfer,表述性状态转移)形式实现,可提供JSON(JavaScript Object Notation)形式的数据包。
数据层中设置有数据库服务器和缓存(memcache)服务器,用以对数据库管理平台运行中所需的信息进行存储,例如主机表、实例组表、实例表、动态DNS表和切换记录表以日志和备份数据等等。在读取数据时,可以先将数据从数据库服务器中读取到缓存服务器中,然后再提供给操作层使用。
操作层中设置有各种功能模块,如主机管理模块、组管理模块、实例管理模块、智能DNS(Domain Name System,域名系统)管理模块、监控管理模块、业务账号管理模块、轮询管理模块、故障修复模块、平滑迁移模块、备份管理模块和日志管理模块等,通过这些模块实现数据库管理平台的各种功能。
DNS层中设置有DNS服务器,主要为应用访问数据库实例进行导航。
监控层中设置有监控服务器,主要执行数据库管理平台的监控功能。
本发明另一个实施例对主机管理模块、组管理模块、实例管理模块、智能DNS(Domain Name System,域名系统)管理模块、监控管理模块、业务账号管理模块、轮询管理模块、故障修复模块、平滑迁移模块、备份管理模块和日志管理模块分别进行说明。
主机管理模块
主机管理模块主要解决了日常运维中MySQL数据库安装的重复性操作问题,主机管理模块用于将MySQL数据库的主机安装至数据库管理平台中,以承载数据库实例。在安装数据库时,主机管理模块会按照统一的平台目录、权限规范执行各数据库的安装。
主机管理模块成功安装主机后,会为安装的主机生成一条主机记录,将各条主机记录保存在主机表中,主机表的一个示例,参见下述表1:
表1、主机表
字段Field | 数据类型Type | 描述Comment |
id | int(10)unsigned NOT NULL | 主机ID |
name | varchar(16)NOT NULL | 主机名 |
ip | varchar(16)NOT NULL | 主机IP |
isLive | tinyint(4)NOT NULL | 主机是否存活 |
healith | int(10)NOT NULL | 主机健康度 |
上述主机表中记载了管理平台中各主机的主机记录,例如,对每一台主机,主机记录可以包括主机ID(标识)、主机名、主机IP、主机存活标志、主机健康度等。
主机管理模块通过如下操作自动执行MySQL数据库主机的安装:
(1)、根据主机名和主机IP定位到需要安装的主机。该主机名和主机IP可以由通过交互界面输入的参数中获知。
(2)、对该主机进行初始化操作。该初始化操作主要设置一些平台运行需要的初始参数,如安全参数、多数据库实例运行时所需的参数、账号信息等。
(3)、在该主机上安装MySQL软件,以实现将MySQL数据库的主机安装至数据库管理平台中。
组管理模块
组管理模块负责建立实例组与域名之间的逻辑关系,平台中的智能DNS管理模块、业务账号管理模块、轮询管理模块、备份管理模块和日志管理模块等均基于实例组进行管理操作。
组管理模块设置实例组,将运行相同数据的数据库实例划分在同一实例组中,建立实例组与域名的对应关系,根据该对应关系为每个实例组分配一个域名和一个端口,其中,为每个实例组设置的域名和端口都是独有的,即不同实例组的域名和端口是不同的。
组管理模块会为生成的每个实例组生成一条实例组记录,将该记录保存在实例组表中,实例组表中一条实例组记录的示例可以参见下述表2:
表2、实例组表
字段Field | 数据类型Type | 描述Comment |
id | int(10)unsigned NOT NULL | 实例组ID |
name | varchar(32)NOT NULL | 实例组名 |
port | int(10)unsigned NOT NULL | 实例组端口 |
dbName | varchar(128)NULL | 数据库名,多个库之间以“,”分隔 |
zone | varchar(255)NOT NULL | 实例组使用域 |
masterIsRead | tinyint(4)NOT NULL | 主库读标识:实例组中主实例是否可读 |
cfgTemplate | text NOT NULL | 实例组配置模板 |
extInfo | text NOT NULL | 扩展信息,由JSON序列化存储 |
isRobin | tinyint(4)NOT NULL | 轮询开关1:参加轮询0:不参加轮询 |
上述实例组表中记载了管理平台中各实例组的信息,例如,对于每一实例组,实例组表中记录的相应实例组信息可以包括实例组ID(标识)、实例组名、实例组独有的端口、实例组关联的数据库名、实例组使用域、主库读标识、实例组配置模板、扩展信息和轮询开关等。
其中,“主库读标识”可以设置主实例具有可读功能,即主实例可以同时进行读写操作。例如,对从实例的读数据的压力过大的场景,通过该字段允许主实例具有可读功能,以提高数据库的性能。
“轮询开关”设置为参加轮询时,轮询脚本对执行对该实例组的轮询操作,其设置为不参加轮询时,轮询脚本不对该实例组进行轮询。
“实例组配置模板”的功能主要在于生成或修改实例组的配置文件,并以此配置模板设置实例配置模板。
需要说明的是,本方案中为每个实例组中的所有数据库实例具有相同的域名和端口。
参见图2,示出了本实施例中的组管理模块增加新的实例组时的流程图,主要包括如下操作:
1)、操作层中的组管理模块接收UI层传递来的新的实例组的信息,如实例组名、实例组端口、实例组的配置模板等。
2)组管理模块根据新的实例组的信息创建实例组,为创建的实例组维护一条实例组记录,该实例组记录中包括实例组ID、实例组名、实例组端口、实例组的配置模板等信。
3)组管理模块将新实例组的实例组记录写入数据库中,进行保存,例如,保存在数据库中实例组数据对应的存储空间中,完成实例组的建立。
4)数据库管理平台还可以将新实例组的信息从数据库中提取出来,在UI界面上进行显示,以便于对实例组的管理。
实例管理模块
实例管理模块执行基于实例组的数据库实例的上线和下线,实例组中主从关系的建立等,数据库管理平台可提供的数据库服务均可由实例管理模块实现。
实例管理模块会维护一个实例表,实例表中保存了为每个数据库实例维护的实例记录。通过实例表中的信息将主机与数据库实例的物理关系、实例组和数据库实例的逻辑关系、域名和数据库实例的逻辑关系自动化完成,避免人工重复性启动停止实例,避免人工操作平台表带来的误操作。
主机与数据库实例是一对多的关系,实例组和数据库实例是一对多的关系,通过该两步对应关系的间接实现了主机与实例组的逻辑关系,主机与实例组是多对多的关系。
示例性的,本平台使用Linux Bash Shell实现实例管理模块的功能,并将实例管理模块每一步的操作写入执行日志,反馈执行结果到前台页面。
实例管理模块维护的实例表的一个示例可以参见下述表3:
表3、实例表
字段Field | 数据类型Type | 描述Comment |
id | int(10)unsigned NOT NULL | 实例ID |
dbInstanceGroupID | int(10)unsigned NOT NULL | 所属实例组ID |
hostID | int(10)unsigned NOT NULL | 所在主机ID |
ip | varchar(16)NOT NULL | IP地址 |
name | varchar(32)NOT NULL | 实例名 |
port | int(10)unsigned NOT NULL | 端口 |
isLive | tinyint(4)NOT NULL | 实例是否存活 |
dbName | varchar(32)NULL | 数据库名,多个库之间以“,”分隔 |
user | varchar(16)NOT NULL | 管理用户名 |
password | varchar(64)NOT NULL | 管理用户密码 |
isMaster | tinyint(4)NOT NULL | 角色标识:是否是主实例1=真0=假 |
level | tinyint(4)NOT NULL | 切换优先级 |
state | tinyint(4)NOT NULL | 实例状态 |
slaveStatus | varchar(64)NOT NULL | 数据同步状态 |
cfgTemplate | text NOT NULL | 配置模板 |
上述实例表中记载了管理平台中各数据库实例的实例记录,例如,对于每一数据库实例,实例表中对应的实例记录可以包括实例ID、所属实例组ID、所在主机ID、IP地址、实例名、端口、实例存活标志、实例关联的数据库名、管理用户名、管理用户密码、角色标识、切换优先级、实例状态、数据同步状态、配置模板。
其中,“管理用户名”和“管理用户密码”供轮询脚本使用,即轮询该实例的脚本需要具有与实例表中相一致的管理用户名和管理用户密码,才能对该数据库实例进行轮询;
“切换优先级”应用于数据库实例出现故障、需要执行主机切换的场景,例如,当数据库管理平台中设置了3台主机,主机0、主机1和主机2,切换优先级指示主机2的级别大于主机1的级别,主机1的级别大于主机0的级别时,则当运行在主机0的数据库实例出现故障,首先根据该故障数据库实例的各从库的同步状态,选取同步状态较佳的从库作为目标数据库实例,当多个从库的同步状态相同时,利用切换优先级指示的级别信息,将故障数据库实例切换至优先级较高的主机上。
“实例状态”指示实例的状态可以包括停止、启动和维护等。
“角色标识”指示了实例的角色,当实例为主实例时,无需对“数据同步状态”进行设置,当实例为从实例时,需要监测该从实例的同步状态,并设置“数据同步状态”。
“配置模板”的功能主要在于生成或修改数据库实例的配置文件。
实例管理模块在对数据库实例进行上线或下线操作时,根据数据库实例的变化,设置该数据库实例在实例表中的信息。
本实施例提供的数据库实例的上线操作包括创建、启动、同步和上线四个阶段,而数据库实例的下线操作包括下线、解除同步、停止和删除四个阶段,上述实例管理模块包括数据库实例上线单元和数据库实例下线单元,该数据库实例上线单元包括创建子单元、启动子单元、同步子单元和上线子单元,该数据库实例下线单元包括下线子单元、解除同步子单元、停止子单元和删除子单元。下面进行具体说明。
数据库实例上线单元中各子单元的具体工作方式如下:
创建子单元:当接收到API接口发送的创建命令时,在为需要上线的数据库实例分配的主机上生成初始文件,开启为该数据库实例分配的端口,并将该数据库实例所属实例组的实例组配置模板读入为该数据库实例维护的实例表记录中。
参见图3,示出了实例管理模块创建数据库实例的方法流程示意图,实例管理模块可以通过UI层的组管理界面中接收到的创建指令,执行实例的创建,包括如下操作:
1)实例管理模块通过UI层基于主机表的选择命令,获知为新的数据库实例分配的主机(目标主机),并编辑该数据库实例的信息,这些信息可以包括新的数据库实例在实例组中的主从关系、级别和权限等。
2)实例管理模块判断新的数据库实例是否与现有的数据库实例存在冲突,当存在冲突时,返回上述步骤1),当没有冲突时,进入步骤3);
3)实例管理模块在目标主机上为新的数据库实例创建初始文件,开启为该数据库实例分配的端口。
4)实例管理模块将初始文件写入数据库中的实例配置文件。
5)数据库管理平台根据数据库中的实例配置文件调用实例启动流程。
数据库实例创建后,该数据库实例的状态(state)为停止。
启动子单元:当接收到API接口发送的启动命令时,利用所述实例表记录中的实例组配置模板生成针对需要上线的数据库实例的配置文件。参见图4,示出了实例管理模块启动数据库实例的方法流程示意图,主要包括如下操作:
1)UI层接收启动命令后传递至实例管理模块,启动命令指示需要启动过的数据库实例ID。
2)实例管理模块对数据库实例的配置文件进行同步。
3)实例管理模块将同步后的配置文件写入数据库的配置信息中,并更改数据库实例的状态为启动中。
4)实例管理模块启动数据库实例。
5)实例管理模块对启动的数据库实例的用户账户进行同步。
6)实例管理模块配置数据库实例的主从关系信息。
7)实例管理模块配置将配置后的数据库实例的信息写入数据库,并将数据库实例的状态更改为待机。
8)数据库管理平台向UI界面返回提示实例启动成功的信息。
同步子单元:当接收到API接口发送的同步命令时,若所述角色标识指示需要上线的数据库实例为主库,将该数据库实例添加至所属的实例组中,当所述角色标识指示需要上线的数据库实例为从库,将该数据库实例添加至所属的实例组中,并建立该从库与主库的同步关系。
上线子单元:当接收到API接口发送的上线命令时,将动态DNS记录中和实例记录中需要上线的数据库实例对应的存活标志都设置为真,以使域名处于可解析状态,以启用该数据库实例的域名,将所述数据库实例上线。
数据库实例下线单元中各子单元的具体工作方式如下:
下线子单元:当接收到API接口发送的下线命令时,将所述动态DNS记录中和所述实例记录中所述已上线的数据库实例的存活标志都设置为假,使域名处于不可解析状态,以禁用该已上线数据库实例的域名,将所述数据库实例下线。
解除同步子单元:当所述角色标识指示数据库实例为从库且接收到API接口发送的解除同步指令时,解除该从库与主库的同步关系。
停止子单元:当接收到API接口发送的停止命令时,关闭所述数据库实例的端口,停止该数据库实例。
删除子单元:当接收到API接口发送的删除命令时,将所述数据库实例从数据库管理平台中删除。
业务账号管理模块
业务账号管理模块加载组管理模块维护的数据库名称,提供数据库用户权限描述列表方便用户选择。该数据库用户权限描述列表记录在用户表中,数据库用户权限描述列表记载了业务账号的数据库用户权限,数据库用户权限指示业务账号可执行的数据库操作和禁止执行的数据库操作。
添加、修改、删除业务账号操作属于实例组级别操作,业务账号管理模块会根据实例组数量顺序调用后台的业务账号管理脚本执行这些操作。
业务账号管理模块维护的用户表的一个示例,参见下述表4:
表4、用户表
上述用户表中记载了管理平台中各业务账号的信息,例如,对于一个业务账号,用户表记录的信息可以包括数据库用户ID、所属实例组ID、数据库用户名、数据库用户域、数据库用户密码和数据库用户权限描述列表。
其中,“数据库用户权限描述列表”指示了业务账号可使用的权限和禁止使用的权限,例如,“数据库用户权限描述列表”可以指示某业务账号可使用的权限为创建、修改数据库实例下该业务账号权限允许的数据库对象,以及指示该业务账号禁止使用的权限为修改和删除数据库实例下该业务账号权限禁止的数据库对象。
需要说明的是,本方案中业务账号管理模块采用了用户名结合IP地址段生成业务账号的方式,例如,参见表4,由name字段结合host字段生成的业务账号,如业务账号的一个示例可以为:name@host。
轮询管理模块
轮询管理模块定时对数据库实例的状态进行轮询,检测数据库实例是否出现异常,当所述角色标识指示出现异常的数据库实例为从库时,轮询管理模块对该数据库实例进行下线操作,当所述角色标识指示出现异常的数据库实例为主库时,轮询管理模块对该数据库实例进行下线操作,并在该数据库实例归属的实例组中选取新的主库,将新的主库的信息录入切换记录表中,根据该切换记录表建立该实例组中新的主库与从库的主从关系。
本实施例提供的切换记录表的一个示例可以参见表5:
表5、切换记录表
由上表5,切换记录表中包括changeLogPos字段,从该字段可以获取到故障数据库实例的切换记录。
轮询管理模块还包括报警单元。该报警单元用于在主库切换之后,生成报警通知信息,该报警通知信息中包括实例表中角色标识指示为主库的数据库实例的IP和切换记录表中记录的主库的IP;以及,将所述报警通知信息发送至管理端侧,以使管理端侧获知数据库实例中的主库是否与切换后的实际主库相一致,方便管理端对数据库实例的管理。
监控管理模块
监控管理模块,用于读取所述主机表,根据该主机表为数据库管理平台中已安装的主机生成主机配置信息;当接收到监控参数时,根据设置的监控项为监控参数中指示的需要监控的主机生成服务配置信息;将所述主机配置信息和服务配置信息推送并加载至数据库管理平台中的监控服务器,以使监控服务器通过所述监控客户端实现对需要监控的主机的监控。
其中,主机管理模块还包括监控单元,该监控单元在将MySQL软件安装至所述主机上后,会为该主机安装上述监控客户端,以实现上述监控客户端的自动安装。
故障修复模块
故障修复模块当接收到对数据库管理平台中故障数据库实例的修复命令时,判断所述故障数据库实例在发生故障前在实例组中的角色;当故障数据库实例的角色为主库时,判断是否能从保存的切换记录表中获取故障数据库实例对应的切换记录;当获取到故障数据库实例对应的切换记录时,利用该切换记录建立该故障数据库实例与实例组中当前主库的主从关系,执行故障数据库实例与当前主库的同步操作,在满足上线条件后,将该故障数据库实例上线。
平滑迁移模块
平滑迁移模块,用于选取需要导出数据的源数据库实例和用于导入数据的目标数据库实例;配置源数据库实例的导出参数和目标数据库实例的导入参数;从数据库管理平台中获取源数据库实例和目标数据库实例的相关信息;利用所述导出参数将数据从源数据库实例导出,生成备份数据;利用所述导入参数将所述备份数据导入至目标数据库实例;利用所述相关信息和备份数据建立源数据库实例和目标数据库实例的主从关系,并执行源数据库实例和目标数据库实例的同步;设置源数据库实例和目标数据库实例的域名,实现目标数据库实例的上线运行。
备份管理模块
备份管理模块由API层提交备份类型、备份方式、备份周期、备份介质和数据保留周期等信息,由后台脚本负责备份软件的部署、备份周期定时任务的设置、备份执行与备份正确性的校验,远程备份使用MD5校验备份文件完整性。最终由前台反馈备份日志给用户。
可在备份计划表的备份周期列表中选择备份周期,如8小时、一天、一周、半个月、一个月、三个月、半年、一年等。可在备份计划表的数据保留周期列表中选取数据包括周期,如一个月、三个月、半年、一年、两年、三年、永久等。可在备份计划表的备份介质复选框中选取采用的备份介质,如本地、盘阵、磁带、刻盘等。
而备份管理模块即用于维护备份计划表,根据备份计划表中的信息对数据库实例进行备份操作,其中,该备份计划表中的信息包括备份ID、实例ID、备份计划名、计划备份时间描述、计划备份类型、是否远程备份和远程备份的路径。备份计划表的一个示例,参见下表6:
表6、备份计划表:db_backup_schedule
上述备份计划表记载了管理平台中各备份计划的信息,例如,对一次备份操作,备份计划表中记录的信息可以包括备份ID、实例ID、备份计划名、计划备份时间描述、计划备份类型、是否远程和远程备份的路径等。
其中,“计划备份时间描述”指示了备份的时间周期;
“是否远程”指示了在本地进行备份(非远程)或是在远程进行备份,当指示在远程进行备份时,“远程备份的路径”指示了备份路径。
“计划备份类型”中可以包括完整备份列表、增量备份列表和主从备份列表。完整备份列表显示业务名称、DNS名称、IP地址、实例名称、DB名称、存储引擎类型、备份时间、备份保留时间、备份耗时;增量备份列表显示业务名称、DNS名称、IP地址、实例名称、DB名称、存储引擎类型、备份时间、备份保留时间;主从备份列表显示业务名称、DNS名称、IP地址、实例名称、DB名称、存储引擎类型、同步延迟。
日志管理模块
日志管理模块,用于对数据库管理平台中所有模块的执行日志进行汇总,将汇总后的执行日志设置在输出日志中,并在管理界面中展示输出日志。
日志管理模块可以融合于数据库管理平台的各个模块之中,日志管理模块记录的日志包括前台程序中的用户操作归档日志,用户行为跟踪日志等操作日志,以及后台脚本对主机管理、实例管理、业务账号管理、轮询管理、备份管理的所有执行日志。例如,备份日志可以包括备份执行日志和备份完整性验证日志。日志管理模块可以将汇总到的日志保存在日志表中。
本发明实施例提供的一种脚本执行日志表(shell-run-log)的示例,参见如下表7:
表7
由上可知,日志管理模块记录的脚本执行日志包括脚本执行记录ID、脚本执行时间、脚本命令、脚本执行标准输出和脚本执行错误数据。
本发明实施例提供的一种平台操作日志表(operateLog)的示例,参见如下表8:
表8
字段Field | 数据类型Type | 描述Comment |
id | int(10)NOT NULL | 操作记录ID |
userName | varchar(16)NOT NULL | 操作用户名 |
operateType | varchar(8)NOT NULL | 操作类型get,post,put,delete |
urlParams | varchar(50)NOT NULL | URL参数 |
requestParams | varchar(800)NOT NULL | 请求内容 |
createTime | datetime NOT NULL | 操作时间 |
由上可知,日志管理模块记录的平台操作日志包括操作记录ID、操作用户名、操作类型、URL参数、请求内容和操作时间。
本发明实施例提供的一种备份日志表的示例,参见如下表9:
表9
由上可知,日志管理模块记录的备份日志包括备份ID、备份计划ID、开始时间、结束时间、备份文件大小、备份文件的路径、备份状态和备份运行信息。
智能DNS管理模块
智能DNS管理模块用于为管理的每个域名维护一个动态DNS记录,将动态DNS记录保存在动态DNS表。数据库管理平台中的DNS服务器支持智能DNS管理模块的运行。
该动态DNS表中的信息包括域名所属实例组ID、域名所属实例ID、域名类型和存活标志。动态DNS表的一个示例参见下表10:
表10、动态DNS表
智能DNS模块是平台核心模块,应用服务访问数据库均采用域名方式。轮询故障自动切换依靠修改智能DNS表记录完成域名与IP的动态解析,而不需要重启DNS服务,从而避免了人工对访问数据库的干预。
例如,智能DNS管理模块还包括特定业务账号访问单元。该特定业务账号访问单元当智能DNS管理模块收到应用程序基于特定业务账号发送的访问请求时,对访问请求中的域名进行解析,得到该访问请求对应的域名,然后触发业务账号管理模块对该判断特定业务账号请求的数据库操作是否符合该业务账号的数据库用户权限进行判断。若符合,允许该访问请求的操作,若不符合,智能DNS管理模块绝该访问请求的操作。
需要说明的是,本实施例还提供了一种单点支持数据库服务的机制:
所述实例管理模块还包括主库管理单元,用于当实例组中仅存在一个角色为主库的数据库实例,且该主库满足许可设置条件时,允许同时对该主库进行读操作和写操作。
上述许可设置条件包括:
角色为主库的数据库实例建立有具有映射和被映射关系的两条动态DNS记录,且被映射的动态DNS记录中的域名类型设置为预定值;以及,实例组记录中所述主库的主库读标识设置为可读。
也就是说,当实例组中仅存在一个角色为主库的数据库实例时,该数据库实例为一个单点,则本实施例能够在不需要额外修改应用程序配置的情况下,利用该单点同时支持读写操作,这种单点支持读写的机制需要满足如下两方面的设置:
一方面,由智能DNS管理模块会在动态DNS表中为角色为主库的该数据库实例建立具有映射和被映射关系的两条动态DNS记录,并将被映射的一条动态DNS记录中的域名类型设置为预定值,本实施例不对该预定值的具体内容进行局限,例如一种方式下,该预定值选取为CNAME(别名),参见上述表10中域名类型字段;另一方面,由组管理模块将实例组记录中该主库的主库读标识(masterIsRead)设置为可读。
本发明实施例提供的数据库管理平台利用主机管理模块能够自动实现MySQL数据库的安装,并利用组管理模块和实例管理模块实现对数据库实例的创建、上线和下线等操作,从而避免了依赖人力管理数据库时造成的出错率高、成本高、效率低以及随意性较大的问题等,能够实现对MySQL数据库自动控制和维护,并使对数据库的管理更加规范化和统一化。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种数据库管理平台,其特征在于,所述平台包括:
主机管理模块,用于将MySQL数据库的主机安装至数据库管理平台中,以由该主机承载数据库实例;
组管理模块,用于设置实例组,以及,将运行相同数据的数据库实例划分在同一实例组中,建立实例组与域名的逻辑对应关系,根据该逻辑对应关系为每个实例组分配一个独有的域名,并为每个实例组生成一条实例组记录;
智能域名系统DNS管理模块,用于为管理的每个域名维护一个动态DNS记录,该动态DNS记录中的信息包括域名所属实例组标识、域名所属实例标识、域名类型和存活标识;
实例管理模块,用于为管理的每个数据库实例维护一条实例记录,根据需要上线的数据库实例归属实例组的实例组记录、该数据库实例的实例记录和动态DNS记录,实现数据库实例的上线操作;以及,根据已上线的数据库实例归属的实例组的实例组记录、该数据库实例的实例记录和动态DNS记录,实现数据库实例的下线操作;
所述实例组记录中包括实例组标识、实例组独有的端口和实例组配置模板;
所述实例记录中包括主机标识、实例标识、所属实例组标识、端口、角色标识和存活标识;
所述实例管理模块还包括数据库实例上线单元,用于实现数据库的实例上线,具体包括如下子单元:
创建子单元,用于当接收到API接口发送的创建命令时,在为需要上线的数据库实例分配的主机上生成初始文件,开启为该数据库实例分配的端口,并将该数据库实例所属实例组的实例组配置模板读入为该数据库实例维护的实例表记录中;
启动子单元,用于当接收到API接口发送的启动命令时,利用所述实例表记录中的实例组配置模板生成针对需要上线的数据库实例的配置文件;
同步子单元,用于当接收到API接口发送的同步命令时,若所述角色标识指示需要上线的数据库实例为主库,将该数据库实例添加至所属的实例组中,当所述角色标识指示需要上线的数据库实例为从库,将该数据库实例添加至所属的实例组中,并建立该从库与主库的同步关系;
上线子单元,用于当接收到API接口发送的上线命令时,将所述动态DNS记录中和所述实例记录中需要上线的数据库实例对应的存活标志都设置为真,以启用该数据库实例的域名,将所述数据库实例上线。
2.根据权利要求1所述的平台,其特征在于,
所述实例管理模块还包括数据库实例下线单元,用于实现数据库实例的下线,具体包括如下子单元:
下线子单元,用于当接收到API接口发送的下线命令时,将所述动态DNS记录中和所述实例记录中所述已上线的数据库实例的存活标志都设置为假,以禁用所述已上线数据库实例的域名,将所述数据库实例下线;
解除同步子单元,用于当所述角色标识指示数据库实例为从库且接收到API接口发送的解除同步指令时,解除该从库与主库的同步关系;
停止子单元,用于当接收到API接口发送的停止命令时,关闭所述数据库实例的端口,停止该数据库实例;
删除子单元,用于当接收到API接口发送的删除命令时,将所述数据库实例从数据库管理平台中删除。
3.根据权利要求1所述的平台,其特征在于,
所述主机管理模块,具体用于根据主机名和主机IP定位到需要安装的主机;
对该主机进行初始化操作,然后在该主机上安装MySQL软件,以实现将MySQL数据库的主机安装至数据库管理平台中。
4.根据权利要求3所述的平台,其特征在于,所述主机管理模块还包括监控单元,用于在将MySQL软件安装至所述主机上后,为所述主机安装监控客户端,并根据安装的主机生成主机表;
所述平台还包括监控管理模块,用于读取所述主机表,根据该主机表为数据库管理平台中已安装的主机生成主机配置信息;当接收到监控参数时,根据设置的监控项为监控参数中指示的需要监控的主机生成服务配置信息;将所述主机配置信息和服务配置信息推送并加载至数据库管理平台中的监控服务器,以使监控服务器通过所述监控客户端实现对需要监控的主机的监控。
5.根据权利要求1所述的平台,其特征在于,所述数据库管理平台还包括业务账号管理模块,用于根据用户名以及IP地址段生成业务账号,为每个业务账号设置该业务账号的数据库用户权限,所述数据库用户权限指示业务账号可执行的数据库操作和禁止执行的数据库操作;
所述智能DNS管理模块还包括特定业务账号访问单元,用于接收到应用程序基于特定业务账号发送的访问请求时,对访问请求中的域名进行解析,得到该访问请求对应的域名,触发所述业务账号管理模块对所述特定业务账号请求的数据库操作是否符合该业务账号的数据库用户权限进行判断。
6.根据权利要求1所述的平台,其特征在于,所述数据库管理平台还包括轮询管理模块,
所述轮询管理模块,用于定时对数据库实例的状态进行轮询,检测数据库实例是否出现异常,当所述角色标识指示出现异常的数据库实例为从库时,轮询管理模块对该数据库实例进行下线操作,当所述角色标识指示出现异常的数据库实例为主库时,轮询管理模块对该数据库实例进行下线操作,并在该数据库实例归属的实例组中选取新的主库,将新的主库的信息录入切换记录表中,根据该切换记录表建立该实例组中新的主库与从库的主从关系。
7.根据权利要求6所述的平台,其特征在于,
所述轮询管理模块还包括报警单元,用于在主库切换之后,生成报警通知信息,该报警通知信息中包括实例表中角色标识指示为主库的数据库实例的IP和切换记录表中记录的主库的IP;以及,将所述报警通知信息发送至管理端侧。
8.根据权利要求6所述的平台,其特征在于,所述数据库管理平台还包括:
故障修复模块,用于当接收到对数据库管理平台中故障数据库实例的修复命令时,判断所述故障数据库实例在发生故障前在实例组中的角色;当所述故障数据库实例的角色为主库时,判断是否能从保存的切换记录表中获取故障数据库实例对应的切换记录;当获取到故障数据库实例对应的切换记录时,利用该切换记录建立该故障数据库实例与实例组中当前主库的主从关系,执行故障数据库实例与当前主库的同步操作,在满足上线条件后,将该故障数据库实例上线。
9.根据权利要求7所述的平台,其特征在于,所述数据库管理平台还包括平滑迁移模块,用于选取需要导出数据的源数据库实例和用于导入数据的目标数据库实例;配置源数据库实例的导出参数和目标数据库实例的导入参数;从数据库管理平台中获取源数据库实例和目标数据库实例的相关信息;利用所述导出参数将数据从源数据库实例导出,生成备份数据;利用所述导入参数将所述备份数据导入至目标数据库实例;利用所述相关信息和备份数据建立源数据库实例和目标数据库实例的主从关系,并执行源数据库实例和目标数据库实例的同步;设置源数据库实例和目标数据库实例的域名,实现目标数据库实例的上线运行。
10.根据权利要求1所述的平台,其特征在于,
所述实例管理模块还包括主库管理单元,用于当实例组中仅存在一个角色为主库的数据库实例,且该主库满足许可设置条件时,允许同时对该主库进行读操作和写操作;
所述许可设置条件包括:
角色为主库的数据库实例建立有具有映射和被映射关系的两条动态DNS记录,且被映射的动态DNS记录中的域名类型设置为预定值;以及,实例组记录中所述主库的主库读标识设置为可读。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310268144.0A CN104252485B (zh) | 2013-06-29 | 2013-06-29 | 一种数据库管理平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310268144.0A CN104252485B (zh) | 2013-06-29 | 2013-06-29 | 一种数据库管理平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104252485A CN104252485A (zh) | 2014-12-31 |
CN104252485B true CN104252485B (zh) | 2017-08-04 |
Family
ID=52187387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310268144.0A Active CN104252485B (zh) | 2013-06-29 | 2013-06-29 | 一种数据库管理平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104252485B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021370A (zh) * | 2016-05-11 | 2016-10-12 | 智者四海(北京)技术有限公司 | 内存数据库实例的管理方法及装置 |
CN106126652B (zh) * | 2016-06-24 | 2019-03-15 | 武汉斗鱼网络科技有限公司 | 用于分布式数据库集群的故障数据库切换方法及系统 |
CN106569920B (zh) * | 2016-11-09 | 2020-12-11 | 腾讯科技(深圳)有限公司 | 数据库备份方法及装置 |
CN107609202B (zh) * | 2017-10-25 | 2020-08-04 | 武汉斗鱼网络科技有限公司 | 一种部署数据库实例的方法、装置及计算机设备 |
CN108460160B (zh) * | 2018-03-29 | 2021-03-12 | 武汉斗鱼网络科技有限公司 | 数据库实例的下线方法、装置、终端及存储介质 |
CN108932309B (zh) * | 2018-06-15 | 2020-12-01 | 未鲲(上海)科技服务有限公司 | 跨平台数据库管理方法、装置、计算机设备和存储介质 |
CN109240876B (zh) * | 2018-07-18 | 2022-05-27 | 平安科技(深圳)有限公司 | 实例监控方法、计算机可读存储介质和终端设备 |
CN109412831B (zh) * | 2018-08-29 | 2019-10-01 | 无锡华云数据技术服务有限公司 | 一种基于fsm管理虚拟端口的方法及云平台 |
CN111461656A (zh) * | 2020-03-31 | 2020-07-28 | 上海星移软件有限公司 | 一种业务流程管理系统的流程数据处理方法及装置 |
CN112347141B (zh) * | 2020-11-03 | 2021-09-24 | 星环信息科技(上海)股份有限公司 | 一种数据访问控制方法、系统、设备及介质 |
CN113239014A (zh) * | 2021-05-18 | 2021-08-10 | 安翰科技(武汉)股份有限公司 | 维护用sql记录的管理装置及应用系统 |
CN113342814A (zh) * | 2021-06-11 | 2021-09-03 | 上海中通吉网络技术有限公司 | 数据库的实例信息收集方法 |
CN113591126B (zh) * | 2021-08-12 | 2023-02-07 | 北京滴普科技有限公司 | 一种数据权限处理方法及计算机可读存储介质 |
CN113806176A (zh) * | 2021-09-22 | 2021-12-17 | 中国建设银行股份有限公司 | 一种基于配置管理的数据对象识别方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876924A (zh) * | 2009-04-30 | 2010-11-03 | 升东网络科技发展(上海)有限公司 | 数据库故障自动检测及转移方法 |
CN102194009A (zh) * | 2011-06-09 | 2011-09-21 | 北京新媒传信科技有限公司 | 一种数据库托管方法和一种数据库托管平台系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110060719A1 (en) * | 2009-09-05 | 2011-03-10 | Vivek Kapoor | Method for Transforming Setup Data in Business Applications |
-
2013
- 2013-06-29 CN CN201310268144.0A patent/CN104252485B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876924A (zh) * | 2009-04-30 | 2010-11-03 | 升东网络科技发展(上海)有限公司 | 数据库故障自动检测及转移方法 |
CN102194009A (zh) * | 2011-06-09 | 2011-09-21 | 北京新媒传信科技有限公司 | 一种数据库托管方法和一种数据库托管平台系统 |
Non-Patent Citations (1)
Title |
---|
MySQL云数据库服务的架构探索;曹伟;《http://www.csdn.net/article/2013-05-07/2815166》;20130207;1-5 * |
Also Published As
Publication number | Publication date |
---|---|
CN104252485A (zh) | 2014-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104252485B (zh) | 一种数据库管理平台 | |
US9762435B2 (en) | System and method for monitoring and managing data center resources incorporating a common data model repository | |
CN1959717B (zh) | 订单驱动的海量遥感数据集群化预处理系统及其方法 | |
CN104252500B (zh) | 一种数据库管理平台的故障修复方法和装置 | |
US8261033B1 (en) | Time optimized secure traceable migration of massive quantities of data in a distributed storage system | |
CN102667748B (zh) | 使用复制在具有名称空间的分区的内容平台上的固定内容存储 | |
CN105468476B (zh) | 基于hdfs的数据灾备系统 | |
WO2023142054A1 (zh) | 一种面向容器微服务的性能监控告警方法及告警系统 | |
US20130238795A1 (en) | System and method for monitoring and managing data center resources in real time incorporating manageability subsystem | |
CN103929500A (zh) | 一种分布式存储系统的数据分片方法 | |
CN104079438B (zh) | Dns域名管理系统和方法 | |
CN108848132B (zh) | 一种基于云的配电调度主站系统 | |
US10783040B2 (en) | Apparatus, system and method for data collection, import and modeling | |
CN103678042A (zh) | 一种基于数据分析的备份策略信息生成方法 | |
CN103176860A (zh) | 数据备份方法和系统 | |
US20110289046A1 (en) | Systems and Methods for Archiving Business Objects | |
CN105635311A (zh) | 一种云管理平台中资源池信息同步的方法 | |
CN103631967B (zh) | 一种带自增量标识字段的数据表的处理方法及装置 | |
CN105610946A (zh) | 一种基于docker技术的云跳板机系统 | |
CN102708158A (zh) | 一种PostgreSQL云存储归档调度系统 | |
CN107870731A (zh) | 独立盘冗余阵列系统的管理方法和电子设备 | |
CN101807156A (zh) | 一种通过接口媒介进行系统维护更新的设备及方法 | |
CN115827086A (zh) | 一种基于分布式集群架构的高可用软件开发集成平台 | |
CN108449324A (zh) | 一种网间数据的安全交换方法及系统 | |
CN106557265B (zh) | 管理数据对象的操作特征的方法、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A room 602 Patentee before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. |