CN110109934B - 一种数据库管理方法、装置、服务器及存储介质 - Google Patents
一种数据库管理方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110109934B CN110109934B CN201910378888.5A CN201910378888A CN110109934B CN 110109934 B CN110109934 B CN 110109934B CN 201910378888 A CN201910378888 A CN 201910378888A CN 110109934 B CN110109934 B CN 110109934B
- Authority
- CN
- China
- Prior art keywords
- database
- transition
- attribute
- sequence value
- records
- 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
Images
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/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库管理方法、装置、服务器及存储介质。该方法包括:获取至少两个数据库所对应控制文件中的变迁记录;比较各所述控制文件中的变迁记录;根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种。上述技术方案利用控制文件记录各数据库变迁记录,通过比较变迁记录即可比较各数据库的数据是否一致,基于此确定数据库的属性,实现了准确确定主库、备库以及脑裂库的目的,提高数据库运行的稳定性。
Description
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种数据库管理方法、装置、服务器及存储介质。
背景技术
在大数据时代,利用数据库的主备架构可形成数据守护系统。数据守护系统由一个主库和若干个备库组成,其中,主库提供数据读取和修改服务,备库仅提供只读服务,主库故障时,备库将接管作为主库继续对外提供服务,从而满足用户对数据库服务的高可用性的需求。主库通过重做(Redo)日志记录对数据执行的修改操作,每次数据修改生成Redo日志时会使用一个日志序列值LSN(Log Sequence Number)来标识,一个LSN代表一次数据库修改操作,备库通过重演主库的Redo日志和主库保持数据一致。同一个数据守护系统中只能有一个主库,如果出现了两个主库则认为发生脑裂,数据守护系统异常。
现有的数据库管理方法是根据LSN来判断主库和备库的数据一致情况。但LSN本身不具有明确的逻辑含义,LSN相同并不代表对应的修改内容也是相同的,仅根据LSN无法判断故障数据库与当前主库的数据是否完全一致,无法准确识别数据库的属性,如果对数据库属性的识别出现错误,会导致数据库之间的数据不一致、数据损坏,如果进一步使用脑裂库进行主备切换则会导致整个数据守护系统的数据错乱,故障数据库难以恢复,数据库无法正常稳定的运行。
发明内容
本发明提供了一种数据库管理方法、装置、服务器及存储介质,以实现准确确定数据库的属性,提高数据库运行的稳定性。
第一方面,本发明实施例提供了一种数据库管理方法,包括:
获取至少两个数据库所对应控制文件中的变迁记录;
比较各所述控制文件中的变迁记录;
根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种。
进一步的,还包括:
当检测到数据库的属性发生变迁时,按照预设字段生成属性变迁数据库的一条变迁记录,所述发生变迁为数据库由备库切换为主库;
将属性变迁数据库的变迁记录写入所述数据库对应的控制文件中。
进一步的,所述比较各所述控制文件中的变迁记录,包括:
针对每个控制文件,将所述控制文件中的各条变迁记录与其他各所述控制文件中的各条变迁记录的预设字段进行内容比对。
进一步的,所述预设字段包括:第一标识符、第二标识符和第一序列值,其中,第一标识符为属性变迁数据库上次变迁时对应的标识符或设定的初始标识符,第二标识符为属性变迁数据库当前变迁对应的标识符,第一序列值为属性变迁数据库的当前日志序列值。
进一步的,所述根据变迁记录的比较结果确定各数据库的属性,包括:
若各所述控制文件所包含各条变迁记录的内容相同,则获取各所述数据库的当前日志序列值,并将当前日志序列值较大的数据库确定为主库,其他数据库确定为备库;
若各所述数据库的当前日志序列值均相等,则根据预设规则确定各所述数据库的属性。
进一步的,所述根据变迁记录的比较结果确定各数据库的属性,包括:
若存在至少两个控制文件所包含变迁记录的内容为包含关系,则提取第二序列值,所述第二序列值为满足包含关系的控制文件中首条内容不同的变迁记录对应的日志序列值;
若被包含控制文件所对应被包含数据库的当前日志序列值小于或等于所述第二序列值,则将所述被包含数据库确定为备库,否则,将所述被包含数据库确定为脑裂库,所述当前日志序列值为所述被包含数据库当前已经产生的最大日志序列值。
进一步的,所述根据变迁记录的比较结果确定各数据库的属性,包括:
若各所述控制文件所包含各条变迁记录的内容不相同,且至少两个控制文件所包含变迁记录的内容为非包含关系,则检测用户输入的干预指令;
根据所述干预指令确定各数据库的属性。
第二方面,本发明实施例提供了一种数据库管理装置,包括:
获取模块,用于获取至少两个数据库所对应控制文件中的变迁记录;
比较模块,用于比较各所述控制文件中的变迁记录;
管理模块,用于根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种。
第三方面,本发明实施例提供了一种服务器,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的数据库管理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的数据库管理方法。
本发明实施例提供了一种数据库管理方法、装置、服务器及存储介质。该方法包括:获取至少两个数据库所对应控制文件中的变迁记录;比较各所述控制文件中的变迁记录;根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种。上述技术方案利用控制文件记录各数据库变迁记录,通过比较变迁记录即可判断各数据库的数据是否一致,基于此确定数据库的属性,实现了准确确定主库、备库以及脑裂库的目的,提高数据库运行的稳定性。
附图说明
图1为本发明实施例一提供的一种数据库管理方法的流程图;
图2为本发明实施例二提供的一种数据库管理方法的流程图;
图3为本发明实施例三提供的一种数据库管理装置的结构示意图;
图4为本发明实施例四提供的一种服务器的硬件结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种数据库管理的流程图,本实施例可适用于在数据守护系统中对主库、备库和脑裂库等进行管理的情况。具体的,该数据库管理方法可以由数据库管理装置执行,该数据库管理装置可以通过软件和/或硬件的方式实现,并集成在服务器中。进一步的,服务器包括但不限定于:工业集成服务器、系统后台服务器以及云端服务器。
参考图1,该方法具体包括如下步骤:
S110、获取至少两个数据库所对应控制文件中的变迁记录。
具体的,数据守护系统中,主库和备库本地会各自部署一个守护进程,守护进程和本地数据库以及远程守护进程之间会相互通信,以检测和处理守护系统中可能发生的各种异常情况。本实施例为每个守护进程创建一个控制文件,称为守护进程控制文件,用于存储主库的变迁记录,所述控制文件是由守护进程来负责修改以及同步的。在对数据库进行管理的过程中,定期获取各数据库对应控制文件的变迁记录,通过变迁记录来确定或更新各数据库的属性。
示例性的,所述控制文件为.ctl格式,数据库的每一次属性变迁都对应于一条变迁记录,每一条变迁记录可通过一个全局唯一标识符(Globally Unique Identifier,GUID)来标识。本实施例中设定GUID为小于或等于48字节的字符串,其中,前32个字节是一个随机的十六进制形式的字符串,每一条变迁记录对应的十六进制字符串是唯一的,后16个字节是变迁当时备库的名称,备库的名称在搭建数据守护系统时已预先配置,本实施例设定数据守护系统中的数据库名称不超过16个字节。例如,变迁当时备库的名称为EP02,则此次变迁对应生成的GUID可以为“F982161A6EE848DBB28864486E6E0236EP02”。通过GUID唯一地标识每一次变迁和每一条变迁记录,并存储在各数据库对应的控制文件中,利用GUID即可检测主库、备库之间的控制文件中记录的变迁记录是否一致,从而及时确定主库或备库,或及时识别脑裂库。
S120、比较各所述控制文件中的变迁记录。
具体的,通过比较各控制文件中的变迁记录,可识别出各数据库的变迁记录是否相同,如果不相同,则可识别哪个数据库的变迁记录最完善、哪个数据库缺少变迁记录、哪个数据库的变迁记录异常等。
S130、根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种。
示例性的,如果各控制文件中的变迁记录完全相同,则各数据库的变迁记录处于一致状态,将当前数据操作次数最多的数据库作为主库、其他数据库作为备库即可;如果变迁记录不一致,则可将变迁记录最完善的数据库作为主库,将缺少变迁记录的数据库可作为备库,或者将变迁记录异常(与其他数据库的变迁记录条数、内容均不相同)的数据库确定为脑裂库。
需要说明的是,变迁是指数据库的属性切换,例如在数据库运行过程中,主库切换为备库,或者备库切换为主库。本实施例中,变迁记录用于记录主库的变迁历史,即在备库切换为主库时会生成变迁记录。数据操作是指对数据库中的数据进行只读或修改操作,其中修改操作包括数据的插入、删除、更新等,数据修改次数可通过数据库的日志序列值LSN来标识。对于一个数据库,每次对数据进行修改操作时会使用一个新的LSN来标识,每次对数据进行修改时LSN值加1,LSN取值范围是[0,+∞)。
需要说明的是,仅根据LSN值无法准确地判断数据库之间的数据一致情况。例如:在主库故障前,主库与备库之间数据不一致,但主库无法短时间恢复的情况下,强制将备库切换为主库提供数据库服务,则当故障主库恢复数据库服务后,与临时接管的主库之间的数据存在差异,此时故障主库的LSN和临时接管的主库的LSN可能相等,也可能故障主库的LSN较小,此时,仅根据LSN值无法准确地判断故障恢复的主库和临时接管的主库之间的数据是否一致。而本实施例的数据库管理方法是基于比较控制文件中的变迁记录进行判断数据库之间的数据是否一致,可以通过LSN值来辅助判断。例如,如果各控制文件中的变迁记录完全相同,则可将LSN的值最大的数据库作为主库,该数据库的数据操作超前于其他数据库。
进一步的,所述方法还包括:当检测到某个数据库的属性发生变迁时,按照预设字段生成属性变迁数据库的一条变迁记录,所述发生变迁为数据库由备库切换为主库;由守护进程将属性变迁数据库的变迁记录同步到其他所述数据库对应的控制文件中。
具体的,当检测到备库切换为主库时,按照预设字段生成属性变迁数据库的一条变迁记录,并写入控制文件中,其中,属性变迁数据库是指属性发生变迁的数据库。
进一步的,所述预设字段包括:第一标识符、第二标识符和第一序列值,其中,第一标识符为属性变迁数据库上次变迁时对应的标识符或设定的初始标识符,第二标识符为属性变迁数据库当前变迁对应的标识符,第一序列值为属性变迁数据库的当前日志序列值。
具体的,每一次发生数据库的属性变迁时,各数据库的控制文件中都按照预设字段存储各条变迁记录,预设字段的格式为:ORG_GUID,NEW_GUID,LSN;其中,ORG_GUID是指上一次发生属性变迁时生成的GUID;NEW_GUID是当前这次变迁对应的GUID,如果当前这次变迁对应的是第一条变迁记录,则ORG_GUID为控制文件创建时设定的初始GUID;LSN是当前这次变迁时,数据库当前的LSN值。
需要说明的是,每次发生属性变迁时,由新的主库的守护进程在本地控制文件中写入一条新的变迁记录,用于记录此次变迁情况,这条变迁记录会同步到其他备库的本地控制文件中。因此在主备库正常运行的情况下,各控制文件内容是一致的,如果不一致,则变迁记录不完善的数据库(未同步跟上主库的变迁记录)是备库,或者变迁记录的各个字段内容完全不同,则确定出现了脑裂库,此时数据可能已经损坏。
本发明实施例一提供的一种数据库管理方法,通过获取至少两个数据库所对应控制文件中的变迁记录;比较各所述控制文件中的变迁记录;根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种,利用控制文件记录各数据库变迁记录,通过比较变迁记录判断各数据库的数据是否一致,基于此确定数据库的属性,实现了准确确定主库、备库以及脑裂库的目的,提高数据库运行的稳定性。
实施例二
图2为本发明实施例二提供的一种数据库管理方法的流程图,本实施例是在上述实施例的基础上进行优化,对根据变迁记录的比较结果确定各数据库的属性进一步说明。需要说明的是,未在本实施例中详尽描述的技术细节可参见上述任意实施例。
具体的,参考图2,该方法具体包括如下步骤:
S201、获取至少两个数据库所对应控制文件中的变迁记录。
进一步的,定期获取各数据库控制文件中的变迁记录,以定期更新数据库属性、及时识别脑裂库。
S202、比较各所述控制文件中的变迁记录。
S203、各所述控制文件所包含各条变迁记录的内容是否相同,若是则执行S204;若否则执行S208。
进一步的,比较各所述控制文件中的变迁记录,包括:针对每个控制文件,将所述控制文件中的各条变迁记录与其他各所述控制文件中的各条变迁记录的预设字段进行内容比对。
具体的,针对每个控制文件,逐条比较本地控制文件和远程守护进程的控制文件中的变迁记录,若三个预设字段的内容完全相同(变迁记录条数相同且预设字段的内容也相同),则执行S204,否则执行S208。
S204、获取各所述数据库的当前日志序列值。
示例性的,表1为数据库a的控制文件中的变迁记录,表2为数据库b的控制文件中的变迁记录。
表1数据库a的控制文件中的变迁记录
表2数据库b的控制文件中的变迁记录
如表1和表2所示,三个预设字段的内容完全相同,即各数据库的变迁记录完全一致,可确定没有发生脑裂,这种情况下,从各数据库的内存中读取各所述数据库的当前日志序列值。需要说明的是,控制文件变迁记录中的LSN字段是每一次发生属性变迁时备库的LSN值,而各数据库的LSN值随着数据修改操作,仍在以每次加1的形式递增,直到发生下一次属性变迁时,新的发生变迁的备库的LSN值再次被写入控制文件的LSN字段。
S205、是否各所述数据库的当前日志序列值均相等,若是则执行S207,若否则执行S206。
S206、将当前日志序列值较大的数据库确定为主库,其他数据库确定为备库。
具体的,将当前日志序列值较大的数据库确定为主库,即,将当前数据操作次数最多的数据库作为主库。若本地数据库的当前LSN大于远程数据库的当前LSN,则将本地数据库确定为主库,远程数据库确定为备库,继续运行数据守护系统;若本地数据库的当前LSN小于远程数据库的当前LSN,则将本地数据库确定为备库,远程数据库确定为主库,继续运行数据守护系统。
S207、根据预设规则确定各所述数据库的属性。
具体的,若各所述数据库的当前LSN均相等,则本地数据库和远程数据库的数据操作完全一致,这种情况下可以根据预设规则选择其中任意一个作为主库。示例性的,本实施例设定将数据库名称字符串比较结果中最小的数据库确定为主库。在搭建数据守护系统时,数据库名称已预先在配置文件中配置为不超过16个字节的字符串,对各数据库名称字符串比较大小,将比较结果最小的数据库确定为主库,其他数据库确定为备库,继续运行数据守护系统。
S208、是否存在至少两个控制文件所包含变迁记录的内容为包含关系,若是则执行S209,若否则执行S213。
具体的,所述包含关系是指,控制文件c中的变迁记录少于控制文件d中的变迁记录,并且控制文件c中的所有变迁记录在控制文件d中都能找到(三个预设字段的内容均相同),但控制文件d中在此之后还有其他的变迁记录,则控制文件d的变迁记录包含控制文件c的变迁记录。
示例性的,表3为数据库c的控制文件中的变迁记录,表4为数据库d的控制文件中的变迁记录。
表3数据库c的控制文件中的变迁记录
ORG_GUID | NEW_GUID | LSN |
7599479E7599479E8D120 | F982161A6EE848DBB2 | 10000 |
F982161A6EE848DBB28 | D209534DF1F24A1A95 | 11000 |
表4数据库d的控制文件中的变迁记录
ORG_GUID | NEW_GUID | LSN |
7599479E7599479E8D120 | F982161A6EE848DBB2 | 10000 |
F982161A6EE848DBB28 | D209534DF1F24A1A95 | 11000 |
D209534DF1F24A1A952 | 1B91962F051548E0BF8 | 15000 |
如表3和表4所示,控制文件d的变迁记录包含控制文件c的变迁记录。
S209、提取第二序列值,所述第二序列值为满足包含关系的控制文件中首条内容不同的变迁记录对应的日志序列值。
具体的,若存在至少两个控制文件的变迁记录的内容为包含关系,则提取第二序列值,进一步判断其他数据库的属性为备库还是脑裂库,其中,第二序列值为满足包含关系的控制文件中首条内容不同的变迁记录对应的LSN。例如,在表3和表4所示的包含关系中,第二序列值为15000。
可选的,如果一个控制文件的变迁记录最多且包含其他所有控制文件的变迁记录,则将该变迁记录最多的数据库确定为主库,该数据库的变迁记录较为完善,其数据操作超前于其他被包含的数据库,其他被包含的数据库可通过重演该数据库的重做日志保持数据一致。
S210、被包含控制文件所对应被包含数据库的当前日志序列值是否小于或等于所述第二序列值,若是则执行S211,若否则执行S212。
具体的,被包含控制文件所对应被包含数据库的当前LSN为所述被包含数据库当前已经产生的最大日志序列值,从数据库内存中读取。将被包含数据库的当前LSN与第二序列值进行比较。
S211、将所述被包含数据库确定为备库。
具体的,若被包含数据库的当前LSN小于或等于第二序列值,说明被包含数据库的数据操作落后于主库的当前这次变迁,则将被包含数据库确定为备库,继续运行数据守护系统,备库通过继续重演和跟进主库的REDO日志以同步主库的数据。
S212、将所述被包含数据库确定为脑裂库。
具体的,若被包含数据库的当前LSN大于第二序列值,说明被包含数据库的数据操作超前于主库的当前这次变迁,数据异常,这种情况下发生脑裂,确定被包含数据库为脑裂库,脑裂库的守护进程自动为其设置脑裂标记并将其强制关闭,不再提供数据库服务。
S213、检测用户输入的干预指令。
具体的,如果各控制文件既不相同,也不存在包含关系,则数据库之间的变迁记录差别较大、数据不一致,此时,无法依据变迁记录和LSN确定主库,通过各数据库的守护进程可将数据库强制关闭,以避免数据进一步损坏。这种情况下,检测用户输入的干预指令。干预指令是指在各控制文件既不相同、也不存在包含关系的情况下,用户输入的属性变迁指令,用于指定一个数据库作为主库或者备库。
S214、根据所述干预指令确定各数据库的属性。
具体的,根据干预指令将用户指定的数据库确定为主库,同时,将变迁记录既不相同也不被主库包含的其他数据库标记为脑裂状态,这类数据库无法作为备库在数据守护系统中运行。需要说明的是,若用户选择的数据库原本为备库,则需先将该数据库的属性切换为主库,再启动该数据库到Open状态以提供数据库服务;若用户选择的数据库原本为主库,则直接将其启动到Open状态提供数据库服务。在用户干预并确定出有效的主库之后,其他数据库的守护进程会根据上述实施例中的方法判断其是否可以作为备库,如果是,则守护进程会自动通知其切换为备库模式并启动到Open状态,如果已经是备库模式则直接将其启动到Open状态。
可选的,在用户干预并确定出有效的主库后,若其他数据库无法作为备库重新加入用户确定出的主库,则通过用户干预重新搭建新的有效备库来使用。
进一步的,当数据守护系统中配置的数据库为两个时,直接比较两个数据库的控制文件中的变迁记录是否相同、是否为包含关系即可;如果数据库多于两个,则依次将每一个数据库作为本地数据库,其他数据库作为远程数据库,针对一个本地数据库,将其与每个远程数据库的变迁记录依次进行比较,远程数据库之间不需要再比较,如果各比较结果都是将本地数据库确定为主库,则可最终确定本地数据库为主库;如果各比较结果中的任意一个是将本地数据库确定为备库,则可最终确定本地数据库为备库;如果在与任意一个远程数据库比较后确定本地库为脑裂库,则可确定出现脑裂,本地数据库为脑裂库,直到确定所有数据库的属性,继续运行数据守护系统。
需要说明的是,本实施例的数据库管理方法也适用于本地数据库和远程数据库都是备库的情况,针对此情况,只检测是否发生脑裂并确定脑裂库,不会自动执行将备库切换为主库的动作,而是根据用户的干预指令选择其中一个备库执行接管操作,以保证数据守护系统的安全可靠。
本实施例的数据库管理方法,在上述实施例的基础上进行优化,通过比较变迁记录和数据库的当前LSN值可选择正确的数据库作为主库或备库;如果检测到发生脑裂,则强制关闭脑裂的数据库,将其确定为脑裂库并阻止其重新加入数据守护系统,从而避免在脑裂库上继续同步数据的操作导致数据损坏,也可以避免使用脑裂库进行主备切换导致整个数据守护系统的数据被破坏。
实施例三
图3为本发明实施例三提供的一种数据库管理装置的结构示意图。本实施例提供的数据库管理装置包括:
获取模块310,用于获取至少两个数据库所对应控制文件中的变迁记录;
比较模块320,用于比较各所述控制文件中的变迁记录;
管理模块330,用于根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种。
本发明实施例三提供的一种数据库管理装置,通过获取模块获取至少两个数据库所对应控制文件中的变迁记录,通过比较模块比较各所述控制文件中的变迁记录,以比较各数据库的数据是否一致,基于此通过管理模块根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种,实现了准确确定主库、备库以及脑裂库的目的,提高数据库运行的稳定性。
在上述实施例的基础上,所述装置还包括:
生成模块,用于当检测到数据库的属性发生变迁时,按照预设字段生成属性变迁数据库的一条变迁记录,所述发生变迁为数据库由备库切换为主库;
写入模块,用于将属性变迁数据库的变迁记录写入所述数据库对应的控制文件中。
在上述实施例的基础上,所述比较模块320,具体用于:
针对每个控制文件,将所述控制文件中的各条变迁记录与其他各所述控制文件中的各条变迁记录的预设字段进行内容比对。
进一步的,所述预设字段包括:第一标识符、第二标识符和第一序列值,其中,第一标识符为属性变迁数据库上次变迁时对应的标识符或设定的初始标识符,第二标识符为属性变迁数据库当前变迁对应的标识符,第一序列值为属性变迁数据库的当前日志序列值。
进一步的,所述管理模块330,具体用于:
若各所述控制文件所包含各条变迁记录的内容相同,则获取各所述数据库的当前日志序列值,并将当前日志序列值较大的数据库确定为主库,其他数据库确定为备库;
若各所述数据库的当前日志序列值均相等,则根据预设规则确定各所述数据库的属性。
进一步的,所述管理模块330,具体用于:
若存在至少两个控制文件所包含变迁记录的内容为包含关系,则提取第二序列值,所述第二序列值为满足包含关系的控制文件中首条内容不同的变迁记录对应的日志序列值;
若被包含控制文件所对应被包含数据库的当前日志序列值小于或等于所述第二序列值,则将所述被包含数据库确定为备库,否则,将所述被包含数据库确定为脑裂库,所述当前日志序列值为所述被包含数据库当前已经产生的最大日志序列值。
进一步的,所述管理模块330,具体用于:
若各所述控制文件所包含各条变迁记录的内容不相同,且至少两个控制文件所包含变迁记录的内容为非包含关系,则检测用户输入的干预指令;
根据所述干预指令确定各数据库的属性。
进一步的,所述装置还包括:
同步模块,用于通过守护进程同步各控制文件。
具体的,同步模块同步各控制文件之后,各数据库的控制文件内容应该完全一致,如果控制文件内容不一致,则说明数据守护系统异常,需要使用上述实施例的数据库管理方法进行处理,处理结束后,对于没有发生脑裂的各数据库,守护进程会将其控制文件再次同步到一致状态。
本发明实施例三提供的数据库管理装置可以用于执行上述任意实施例提供的数据库管理方法,具备相应的功能和有益效果。
实施例四
图4为本发明实施例四提供的一种服务器的硬件结构示意图。如图4所示,本实施例提供的一种服务器,包括:处理器410和存储装置420。该服务器中的处理器可以是一个或多个,图4中以一个处理器410为例,所述服务器中的处理器410和存储装置420可以通过总线或其他方式连接,图4中以通过总线连接为例。
所述一个或多个程序被所述一个或多个处理器410执行,使得所述一个或多个处理器实现上述实施例中任意所述的数据库管理方法。
该服务器中的存储装置420作为一种计算机可读存储介质,可用于存储一个或多个程序,所述程序可以是软件程序、计算机可执行程序以及模块,如本发明实施例中数据库管理方法对应的程序指令/模块(例如,附图3所示的数据库管理装置中的模块,包括:获取模块310、比较模块320以及管理模块330)。处理器410通过运行存储在存储装置420中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据库管理方法。
存储装置420主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据服务器的使用所创建的数据等(如上述实施例中的变迁记录、预设字段等)。此外,存储装置420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
并且,当上述服务器中所包括一个或者多个程序被所述一个或者多个处理器410执行时,进行如下操作:获取至少两个数据库所对应控制文件中的变迁记录;比较各所述控制文件中的变迁记录;根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种。
本实施例提出的设备与上述实施例提出的数据库管理方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述任意实施例,并且本实施例具备与执行数据库管理方法相同的有益效果。
在上述实施例的基础上,本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被数据库管理装置执行时实现本发明上述任意实施例中的数据库管理方法,该方法包括:获取至少两个数据库所对应控制文件中的变迁记录;比较各所述控制文件中的变迁记录;根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的数据库管理方法操作,还可以执行本发明任意实施例所提供的数据库管理方法中的相关操作,且具备相应的功能和有益效果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的数据库管理方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (7)
1.一种数据库管理方法,其特征在于,包括:
获取至少两个数据库所对应控制文件中的变迁记录;
比较各所述控制文件中的变迁记录;
根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种;
当检测到所述数据库的属性发生变迁时,按照预设字段生成属性变迁数据库的一条变迁记录,所述发生变迁为数据库由备库切换为主库;
将属性变迁数据库的变迁记录写入所述数据库对应的控制文件中;
所述预设字段包括:第一标识符、第二标识符和第一序列值,其中,第一标识符为属性变迁数据库上次变迁时对应的标识符或设定的初始标识符,第二标识符为属性变迁数据库当前变迁对应的标识符,第一序列值为属性变迁数据库的当前日志序列值;
所述根据变迁记录的比较结果确定各数据库的属性,包括:
若存在至少两个控制文件所包含变迁记录的内容为包含关系,则提取第二序列值,所述第二序列值为满足包含关系的控制文件中首条内容不同的变迁记录对应的日志序列值;
若被包含控制文件所对应被包含数据库的当前日志序列值小于或等于所述第二序列值,则将所述被包含数据库确定为备库,否则,将所述被包含数据库确定为脑裂库,所述当前日志序列值为所述被包含数据库当前已经产生的最大日志序列值。
2.根据权利要求1所述的方法,其特征在于,所述比较各所述控制文件中的变迁记录,包括:
针对每个控制文件,将所述控制文件中的各条变迁记录与其他各所述控制文件中的各条变迁记录的预设字段进行内容比对。
3.根据权利要求1所述的方法,其特征在于,所述根据变迁记录的比较结果确定各数据库的属性,包括:
若各所述控制文件所包含各条变迁记录的内容相同,则获取各所述数据库的当前日志序列值,并将当前日志序列值较大的数据库确定为主库,其他数据库确定为备库;
若各所述数据库的当前日志序列值均相等,则根据预设规则确定各所述数据库的属性。
4.根据权利要求1所述的方法,其特征在于,所述根据变迁记录的比较结果确定各数据库的属性,包括:
若各所述控制文件所包含各条变迁记录的内容不相同,且至少两个控制文件所包含变迁记录的内容为非包含关系,则检测用户输入的干预指令;
根据所述干预指令确定各数据库的属性。
5.一种数据库管理装置,其特征在于,包括:
获取模块,用于获取至少两个数据库所对应控制文件中的变迁记录;
比较模块,用于比较各所述控制文件中的变迁记录;
管理模块,用于根据变迁记录的比较结果确定各数据库的属性,所述属性包括主库、备库和脑裂库中的至少一种;
所述管理模块,具体用于:若存在至少两个控制文件所包含变迁记录的内容为包含关系,则提取第二序列值,所述第二序列值为满足包含关系的控制文件中首条内容不同的变迁记录对应的日志序列值;
若被包含控制文件所对应被包含数据库的当前日志序列值小于或等于所述第二序列值,则将所述被包含数据库确定为备库,否则,将所述被包含数据库确定为脑裂库,所述当前日志序列值为所述被包含数据库当前已经产生的最大日志序列值;
生成模块,用于当检测到数据库的属性发生变迁时,按照预设字段生成属性变迁数据库的一条变迁记录,所述发生变迁为数据库由备库切换为主库;
写入模块,用于将属性变迁数据库的变迁记录写入所述数据库对应的控制文件中;
所述预设字段包括:第一标识符、第二标识符和第一序列值,其中,第一标识符为属性变迁数据库上次变迁时对应的标识符或设定的初始标识符,第二标识符为属性变迁数据库当前变迁对应的标识符,第一序列值为属性变迁数据库的当前日志序列值。
6.一种服务器,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的数据库管理方法。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一所述的数据库管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910378888.5A CN110109934B (zh) | 2019-05-08 | 2019-05-08 | 一种数据库管理方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910378888.5A CN110109934B (zh) | 2019-05-08 | 2019-05-08 | 一种数据库管理方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110109934A CN110109934A (zh) | 2019-08-09 |
CN110109934B true CN110109934B (zh) | 2021-07-30 |
Family
ID=67488817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910378888.5A Active CN110109934B (zh) | 2019-05-08 | 2019-05-08 | 一种数据库管理方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110109934B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110471909B (zh) * | 2019-08-26 | 2022-03-08 | 上海达梦数据库有限公司 | 一种数据库管理方法、装置、服务器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202075A (zh) * | 2015-04-29 | 2016-12-07 | 中兴通讯股份有限公司 | 一种数据库主备切换的方法及装置 |
CN108416040A (zh) * | 2018-03-14 | 2018-08-17 | 上海达梦数据库有限公司 | 一种数据库修复方法、装置、终端设备及存储介质 |
CN108881452A (zh) * | 2018-06-27 | 2018-11-23 | 咪咕文化科技有限公司 | 一种数据同步的方法、装置及存储介质 |
US20190095297A1 (en) * | 2017-09-22 | 2019-03-28 | Oracle International Corporation | Method and system for automatic maintenance of standby databases for non-logged workloads |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106802892B (zh) * | 2015-11-26 | 2021-12-28 | 阿里巴巴集团控股有限公司 | 用于主备数据一致性校验的方法和设备 |
-
2019
- 2019-05-08 CN CN201910378888.5A patent/CN110109934B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202075A (zh) * | 2015-04-29 | 2016-12-07 | 中兴通讯股份有限公司 | 一种数据库主备切换的方法及装置 |
US20190095297A1 (en) * | 2017-09-22 | 2019-03-28 | Oracle International Corporation | Method and system for automatic maintenance of standby databases for non-logged workloads |
CN108416040A (zh) * | 2018-03-14 | 2018-08-17 | 上海达梦数据库有限公司 | 一种数据库修复方法、装置、终端设备及存储介质 |
CN108881452A (zh) * | 2018-06-27 | 2018-11-23 | 咪咕文化科技有限公司 | 一种数据同步的方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110109934A (zh) | 2019-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110471909B (zh) | 一种数据库管理方法、装置、服务器及存储介质 | |
CN110543386B (zh) | 一种数据存储方法、装置、设备和存储介质 | |
CN108416040B (zh) | 一种数据库修复方法、装置、终端设备及存储介质 | |
CN108460045B (zh) | 一种快照的处理方法及分布式块存储系统 | |
CN109542682B (zh) | 一种数据备份方法、装置、设备和存储介质 | |
CN109542330B (zh) | 数据存储方法、数据查询方法及装置 | |
CN109522160B (zh) | 通过保存文件信息摘要进行文件目录比较备份方法和系统 | |
CN107229540A (zh) | 一种基于时间点的数据库恢复方法及系统 | |
CN114968966A (zh) | 分布式元数据远程异步复制方法、装置和设备 | |
CN110109934B (zh) | 一种数据库管理方法、装置、服务器及存储介质 | |
CN111752488A (zh) | 存储集群的管理方法、装置、管理节点及存储介质 | |
CN108664255B (zh) | 一种软件升级方法及装置 | |
CN113420081A (zh) | 数据校验方法、装置、电子设备及计算机存储介质 | |
WO2017067397A1 (zh) | 一种数据恢复方法和装置 | |
CN117076204A (zh) | 一种远程复制任务恢复方法、装置、设备及介质 | |
CN114756410B (zh) | 一种双机热备系统的数据恢复方法、装置及介质 | |
CN111404737A (zh) | 一种容灾处理方法以及相关装置 | |
CN113886352A (zh) | 分布式文件系统的元数据恢复方法、装置、设备及介质 | |
CN110569231B (zh) | 数据迁移方法、装置、设备和介质 | |
CN111858076B (zh) | 一种目标守护进程同步方法和装置 | |
CN110489432B (zh) | 基于模型的数据库自动同步方法、介质、设备及装置 | |
CN113535482A (zh) | 云备份链数据备份、管理方法及装置、设备、可读介质 | |
CN112632188A (zh) | 一种异步复制数据的方法和设备 | |
CN113672436A (zh) | 一种容灾备份方法、装置、设备及存储介质 | |
CN112231150A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |