CN113468190B - 一种对MongoDB数据库实例的配置更新方法及装置 - Google Patents

一种对MongoDB数据库实例的配置更新方法及装置 Download PDF

Info

Publication number
CN113468190B
CN113468190B CN202010247833.3A CN202010247833A CN113468190B CN 113468190 B CN113468190 B CN 113468190B CN 202010247833 A CN202010247833 A CN 202010247833A CN 113468190 B CN113468190 B CN 113468190B
Authority
CN
China
Prior art keywords
mongodb database
copy
database copy
updated
mongodb
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
Application number
CN202010247833.3A
Other languages
English (en)
Other versions
CN113468190A (zh
Inventor
宋健
宫伯钊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN202010247833.3A priority Critical patent/CN113468190B/zh
Publication of CN113468190A publication Critical patent/CN113468190A/zh
Application granted granted Critical
Publication of CN113468190B publication Critical patent/CN113468190B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种对MongoDB数据库实例的配置更新方法及装置,涉及通信领域,实现配置更新的在线操作,缓解了现有技术中存在的停服升级影响业务正常访问的问题。数据库实例对应多个待更新的MongoDB数据库副本(简称副本),每个待更新的副本对应一个角色,角色至少包括主和从;针对角色为从的待更新的副本,执行如下更新步骤:新增配置为目标配置的第一副本;将角色为从的待更新的第二副本的备份数据及实时数据与第一副本同步;将第二副本对应的虚拟IP切换至第一副本;针对角色为主的待更新的副本,执行如下更新步骤:将指定的已更新完成的第一副本的角色设置为主,将自身的角色设置为从;执行角色为从的待更新的副本的更新步骤。

Description

一种对MongoDB数据库实例的配置更新方法及装置
技术领域
本申请涉及通信及计算机技术领域,尤其是涉及一种对MongoDB数据库实例的配置更新方法及装置。
背景技术
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,通常指的是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。随着业务的不断发展会产生越来越庞大的数据,为了满足业务需求,往往需要对数据库进行升级。在云计算场景下,MongoDB数据库由于具有高性能、可扩展、易部署、易使用等特点而得到广泛应用。该MongoDB数据库是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间的产品。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。MongoDB数据库最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
目前,对于云计算场景下的MongoDB数据库的升级通常需要停服更新,即停止数据库服务,对MongoDB数据库进行配置,更新完成后再回复业务。此种升级方式对线上有存量业务的客户,会造成停服期间无法使用或者是读写阻塞,影响用户的使用体验。
发明内容
有鉴于此,本申请的目的在于提供一种对MongoDB数据库实例的配置更新方法及装置,以缓解现有技术中数据库停服升级影响到业务正常访问的问题。
第一方面,本申请实施例提供了一种对MongoDB数据库实例的配置更新方法,所述MongoDB数据库实例对应有多个待更新的MongoDB数据库副本,每一个待更新的MongoDB数据库副本对应一个角色,所述MongoDB数据库实例对应角色至少包括主和从,所述方法包括:
确定针对MongoDB数据库实例的配置更新指令,所述配置更新指令用于指示所述MongoDB数据库实例的配置由原始配置更新为目标配置;
针对每个角色为从的待更新的MongoDB数据库副本,执行如下步骤进行更新:新增第一MongoDB数据库副本,所述第一MongoDB数据库副本对应的配置为所述目标配置;将所述角色为从的待更新的第二MongoDB数据库副本的备份数据以及实时数据与所述第一MongoDB数据库副本进行同步;将所述第二MongoDB数据库副本对应的虚拟网络IP地址切换至所述第一MongoDB数据库副本;
针对角色为主的待更新的MongoDB数据库副本,执行如下步骤进行更新:将指定的已更新完成的第一MongoDB数据库副本的角色设置为主,并将自身的角色设置为从;执行角色为从的待更新的MongoDB数据库副本对应的更新步骤。
结合第一方面,本申请实施例提供了第一方面的第一种可能的实施方式,其中,每个MongoDB数据库副本对应一个容器,所述容器上配置有MongoDB数据库;所述MongoDB数据库副本对应的配置包括所述MongoDB数据库副本的容器的配置以及所述MongoDB数据库副本的MongoDB数据库的配置。
结合第一方面的第一种可能的实施方式,本申请实施例提供了第一方面的第二种可能的实施方式,其中,所述MongoDB数据库实例对应角色还包括隐藏,所述MongoDB数据库实例对应有容器IP地址;新增的第一MongoDB数据库副本的角色为隐藏;所述将所述第二MongoDB数据库副本对应的虚拟网络IP地址切换至所述第一MongoDB数据库副本的步骤,包括:
将所述第一MongoDB数据库副本的角色由隐藏设置为从;
将所述第二MongoDB数据库副本的容器IP地址与虚拟网络IP地址解绑;
将所述第一MongoDB数据库副本的容器IP地址与所述虚拟网络IP地址绑定。
结合第一方面的第二种可能的实施方式,本申请实施例提供了第一方面的第三种可能的实施方式,其中,在将所述第一MongoDB数据库副本的容器IP地址与所述虚拟网络IP地址绑定的步骤之后,所述方法还包括:
删除所述第二MongoDB数据库副本。
结合第一方面的第二种可能的实施方式,本申请实施例提供了第一方面的第四种可能的实施方式,其中,在确定针对MongoDB数据库实例的配置更新指令的步骤之后,所述方法还包括:
针对每个角色为隐藏的待更新的MongoDB数据库副本,执行如下步骤进行更新:新增第三MongoDB数据库副本,所述第三MongoDB数据库副本对应的配置为所述目标配置;将所述角色为隐藏的待更新的第四MongoDB数据库副本的备份数据以及实时数据与所述第二MongoDB数据库副本进行同步;删除所述第四MongoDB数据库副本。
结合第一方面的第四种可能的实施方式,本申请实施例提供了第一方面的第五种可能的实施方式,其中,所述角色为隐藏的待更新的MongoDB数据库副本、角色为从的待更新的MongoDB数据库副本与角色为主的待更新的MongoDB数据库副本同步进行更新;
或者,角色为隐藏的待更新的MongoDB数据库副本、角色为从的待更新的MongoDB数据库副本与角色为主的待更新的MongoDB数据库副本,按照角色为隐藏大于角色为从大于角色为主的顺序依次进行更新。
结合第一方面,本申请实施例提供了第一方面的第六种可能的实施方式,其中,将所述角色为从的待更新的第二MongoDB数据库副本的备份数据以及实时数据与所述第一MongoDB数据库副本进行同步的步骤,包括:
在第一时刻,对所述第二MongoDB数据库副本的第二时刻的备份数据与所述第一MongoDB数据库副本进行同步;
在所述第二时刻的备份数据同步完成后,对所述第二MongoDB数据库副本在第二时刻到第三时刻所产生的增量备份与所述第一MongoDB数据库副本进行同步;
在所述增量备份同步完成后,对所述第二MongoDB数据库副本在第三时刻后产生的实时数据与所述第一MongoDB数据库副本进行同步。
结合第一方面的第六种可能的实施方式,本申请实施例提供了第一方面的第七种可能的实施方式,其中,对所述第二MongoDB数据库副本在第三时刻后产生的实时数据与所述第一MongoDB数据库副本进行同步的步骤包括:
应用oplog日志功能,获取所述第二MongoDB数据库副本从第三时刻到第一时刻的操作日志,并将所述操作日志导入至所述第一MongoDB数据库副本;
应用oplog日志功能,获取所述第二MongoDB数据库副本从第一时刻到当前时刻的增量实时数据,并将所述增量实时数据导入至所述第一MongoDB数据库副本。
第二方面,本申请实施例还提供一种对MongoDB数据库实例的配置更新装置,所述MongoDB数据库实例对应有多个待更新的MongoDB数据库副本,每一个待更新的MongoDB数据库副本对应一个角色,所述MongoDB数据库实例对应角色至少包括主和从,所述装置包括:
确定模块,用于确定针对MongoDB数据库实例的配置更新指令,所述配置更新指令用于指示所述MongoDB数据库实例的配置由原始配置更新为目标配置;
第一更新模块,用于针对每个角色为从的待更新的MongoDB数据库副本,执行如下步骤进行更新:新增第一MongoDB数据库副本,所述第一MongoDB数据库副本对应的配置为所述目标配置;将所述角色为从的待更新的第二MongoDB数据库副本的备份数据以及实时数据与所述第一MongoDB数据库副本进行同步;将所述第二MongoDB数据库副本对应的虚拟网络IP地址切换至所述第一MongoDB数据库副本;
第二更新模块,用于针对角色为主的待更新的MongoDB数据库副本,执行如下步骤进行更新:将指定的已更新完成的第一MongoDB数据库副本的角色设置为主,并将自身的角色设置为从;执行角色为从的待更新的MongoDB数据库副本对应的更新步骤。
第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的对MongoDB数据库实例的配置更新方法的步骤。
第六方面,本申请实施例又提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述的对MongoDB数据库实例的配置更新方法。
本申请实施例带来了以下有益效果:本申请实施例提供的一种对MongoDB数据库实例的配置更新方法及装置,可以先建立一个具有目标配置的新的MongoDB数据库副本,在将新的MongoDB数据库副本的数据与旧的MongoDB数据库副本进行同步后,可以使用新的MongoDB数据库副本替换旧的MongoDB数据库副本,从而实现对MongoDB数据库实例的配置的热更新,可以极大的降低升级过程中,服务中断的过程,实现了配置更新过程中服务中断对用户是无感的,提升了配置更新的效率以及用户体验。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的云网络架构示意图;
图2为本申请实施例提供的一种对MongoDB数据库实例的配置更新方法流程示意图;
图3为本申请实施例提供的一种对MongoDB数据库实例的配置更新装置的结构示意图;
图4为本申请实施例提供的一种电子设备的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例的条目中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
目前,针对MongoDB数据库实例的配置更新,主要是通过停服更新的方式,由于MongoDB数据库实例通过云计算来实现,在云计算中停服更新对服务可用性影响较大。基于此,本申请实施例提供了一种对MongoDB数据库实例的配置更新方法及装置,能够缓解数据库停服升级影响到业务正常访问的问题,在对MongoDB数据库实例的配置更新时,可以实现在线更新,以便为用户提供不间断服务,避免业务中断影响用户体验。同时,相比于停服更新的方式,MongoDB数据库实例的配置更新耗时更短、效率更高。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种对MongoDB数据库实例的配置更新方法,结合附图进行详细介绍。
本申请提供的一种对MongoDB数据库实例的配置更新方法,可以应用于如图1所示的云网络架构中。该云存储业务应用场景包括云数据库平台102,该云数据库平台102可以包括MongoDB数据库实例104,该MongoDB数据库实例104用于对为用户提供数据库服务。
作为一个示例,用户可以基于云数据库平台102进行购买数据库服务的操作,该购买数据服务的操作可以指定所购买的配置、使用位置以及年限等等,例如,购买的MongoDB数据库实例的配置为1G15G,可用区域为北京第一区,年限为一年。用户在使用购买的MongoDB数据库实例的过程中,基于实际的需要会存在升配或降配的需求。
在本发明实施例中,MongoDB数据库实例通常基于高可用策略设置多个MongoDB数据库副本,该多个MongoDB数据库副本中每个对应一个容器,每个容器上配置有MongoDB数据库,该多个MongoDB数据库副本形成MongoDB数据库副本集。其中,该多个MongoDB数据库副本对应的容器可以设置在一个或多个物理机上。
每一个MongoDB数据库副本对应一个角色,每一个MongoDB数据库实例包括的角色至少为主和从,还可以包括隐藏。其中,角色为主的MongoDB数据库副本还可以称为主副本,角色为从的MongoDB数据库副本还可以称为从副本,角色为隐藏的MongoDB数据库副本还可以称为隐藏副本。该主副本可以提供读和写的服务,该从副本可以提供读的服务,该隐藏副本主要提供备份服务;当主副本或从副本发生故障时,可以临时将隐藏副本提升为主副本或从副本来提供相应的服务。
对于MongoDB数据库实例的配置更新可以是指对该MongoDB数据库实例包括的每一个成MongoDB数据库副本的配置更新。每个MongoDB数据库副本的配置可以包括容器的配置以及MongoDB数据库的配置。例如,容器的配置可以包括容器的规格,MongoDB数据库的配置可以包括缓存大小、oplog大小以及最大连接数等等。
需要说明的是,该容器在一些情况下还可以称为节点或虚拟机,该虚拟机可以指通过内核虚拟化实现的虚拟机。
图2为本申请实施例提供的一种对MongoDB数据库实例的配置更新方法流程示意图。该方法可以通过云数据库平台(例如,图1所示的云数据库平台102)实现,如图2所示,该方法包括:
步骤S210,确定针对MongoDB数据库实例的配置更新指令。其中,该配置更新指令用于指示MongoDB数据库实例的配置由原始配置更新为目标配置;
该配置更新指令可以由用户基于云数据库平台触发,该配置更新指令可以包括升配指令或降配指令。例如,用户在针对已购买的数据库服务进行续费时,进行升配或降配的操作,或者,用户也可以针对已经购买的数据库服务进行升配或降配的操作,云数据库平台在确定已经达到升配或降配条件(例如,用户已付款或者到达指定的期限)时,触发针对MongoDB数据库实例的配置更新指令。
步骤S220,针对每个角色为从的待更新的MongoDB数据库副本,执行如下步骤进行更新:新增第一MongoDB数据库副本,第一MongoDB数据库副本对应的配置为目标配置;将角色为从的待更新的第二MongoDB数据库副本的备份数据以及实时数据与第一MongoDB数据库副本进行同步;将第二MongoDB数据库副本对应的VIP(Virtual IP,虚拟网络IP)地址切换至第一MongoDB数据库副本;
其中,为了实现旧的MongoDB数据库副本的配置的更新,可以先建立一个具有目标配置的新的MongoDB数据库副本,在将新的MongoDB数据库副本的数据与旧的MongoDB数据库副本进行同步后,可以使用新的MongoDB数据库副本替换旧的MongoDB数据库副本。使用新的MongoDB数据库副本替换旧的MongoDB数据库副本的过程可以通过将旧的MongoDB数据库副本对应的VIP地址切换到新的MongoDB数据库副本来实现,在切换完成后,可以删除第二MongoDB数据库副本。其中,这里的新的MongoDB数据库副本可以指第一MongoDB数据库副本,该旧的MongoDB数据库副本可以指第二MongoDB数据库副本,该第二MongoDB数据库副本可以为角色为从的待更新的MongoDB数据库副本中的任意一个。
其中,对于第二MongoDB数据库副本的删除,可以先将第二MongoDB数据库副本对应的容器删除,然后再将该容器对应的资源释放。
步骤S230,针对角色为主的待更新的MongoDB数据库副本,执行如下步骤进行更新:将指定的已更新完成的第一MongoDB数据库副本的角色设置为主,并将自身的角色设置为从;执行角色为从的待更新的MongoDB数据库副本对应的更新步骤。
在实现旧的MongoDB数据库副本的配置的更新的过程中,对于角色为主的待更新的MongoDB数据库副本,需要先将自身降级为从,并从其他的已经更新完成的角色为从的待更新的MongoDB数据库副本中确定一个作为主;然后,自身再作为角色为从的待更新的MongoDB数据库副本,执行上述步骤S220的步骤以实现配置的更新。
通过本发明实施例,可以先建立一个具有目标配置的新的MongoDB数据库副本,在将新的MongoDB数据库副本的数据与旧的MongoDB数据库副本进行同步后,可以使用新的MongoDB数据库副本替换旧的MongoDB数据库副本,从而实现对MongoDB数据库实例的配置的热更新,可以极大的降低升级过程中,服务中断的过程,实现了配置更新过程中服务中断对用户是无感的,提升了配置更新的效率以及用户体验。
在一些实施例中MongoDB数据库实例的MongoDB数据库副本可以通过副本集的方式来实现,例如,该每个副本集可以包括3个副本、5个副本或者7个副本等等。
在一些实施例中,在创建MongoDB数据库实例时,会为需要为用户提供访问的MongoDB数据库副本申请VIP地址,该VIP地址为客户虚拟私有网络中的地址,该VIP可以对应一个负载均衡设备,通过将该MongoDB数据库副本的RIP地址和申请到的VIP地址绑定,该绑定关系可以存储在负载均衡设备中,以此可以实现通过该MongoDB数据库副本向用户提供数据库服务,该RIP地址为该MongoDB数据库副本的容器IP地址。基于此,作为一个示例,在新增第一MongoDB数据库副本时,该新增的第一MongoDB数据库副本的角色为隐藏;上述步骤S220中将第二MongoDB数据库副本对应的虚拟网络IP地址切换至第一MongoDB数据库副本的步骤,具体可以通过如下步骤实现:
步骤1.1),将第一MongoDB数据库副本的角色由隐藏设置为从;
步骤1.2),将第二MongoDB数据库副本的容器IP地址与虚拟网络IP地址解绑;其中,该步骤可以通过云数据库平台向负载均衡设备发送解绑请求来实现。
步骤1.3),将第一MongoDB数据库副本的容器IP地址与虚拟网络IP地址绑定。其中,该步骤可以通过云数据库平台向负载均衡设备发送绑定请求来实现。
在一些实施例中,该MongoDB数据库实例还可以包括角色为隐藏的MongoDB数据库副本,可以对在角色为隐藏的MongoDB数据库副本进行配置更新。作为一个示例,在上述步骤S210之后,该方法还可以包括针对每个角色为隐藏的待更新的MongoDB数据库副本,执行如下步骤进行更新:
步骤2.1),新增第三MongoDB数据库副本,该第三MongoDB数据库副本对应的配置为目标配置;
步骤2.2),将角色为隐藏的待更新的第四MongoDB数据库副本的备份数据以及实时数据与第二MongoDB数据库副本进行同步;
步骤2.3),删除第四MongoDB数据库副本。
在本发明实施例中,对于不同角色的副本的升级顺序可以包括多种实现方式。作为一个示例,角色为隐藏的待更新的MongoDB数据库副本、角色为从的待更新的MongoDB数据库副本与角色为主的待更新的MongoDB数据库副本可以同步进行更新;作为另一个示例,角色为隐藏的待更新的MongoDB数据库副本、角色为从的待更新的MongoDB数据库副本与角色为主的待更新的MongoDB数据库副本,可以按照角色为隐藏大于角色为从大于角色为主的顺序依次进行更新。
在一些实施例中,在数据同步时,一般数据的体量较大,所以在数据同步的过程中需要一定的时间,所以可以先同步备份数据,再同步实时生成的数据。作为一个示例,在上述步骤S220中的将角色为从的待更新的第二MongoDB数据库副本的备份数据以及实时数据与第一MongoDB数据库副本进行同步的步骤,具体可以包括如下步骤:
步骤3.1),在第一时刻,对第二MongoDB数据库副本的第二时刻的备份数据与第一MongoDB数据库副本进行同步;其中,第一时刻可以为同步开始的时刻,第二时刻可以为物理备份的时刻。作为一个示例,物理备份为周期性备份,例如,每天2点后对2点之前生成的数据进行备份,该第二时刻可以为2点。
步骤3.2),在第二时刻的备份数据同步完成后,对第二MongoDB数据库副本在第二时刻到第三时刻所产生的增量备份与第一MongoDB数据库副本进行同步。该增量备份可以指上一次备份时刻开始,到第三时刻所生成的数据的备份,例如,该第一时刻为6点,该增量备份为每小时备份一次,则该增量备份可以为2点到5点生成的数据。
步骤3.3),在增量备份同步完成后,对第二MongoDB数据库副本在第三时刻后产生的实时数据与第一MongoDB数据库副本进行同步。例如,第三时刻为5点,则上述步骤3.1)至上述步骤3.2)实现了对5点之前的数据进行同步,本步骤实现对5点到当前时刻的数据进行同步。
作为一个示例,对于上述步骤3.3)具体可以通过如下步骤实现:
步骤4.1),应用oplog日志功能,获取第二MongoDB数据库副本从第三时刻到第一时刻的操作日志,并将操作日志导入至第一MongoDB数据库副本。其中,oplog日志功能为MongoDB数据库的功能。例如,第三时刻为5点,第一时刻为6点,则本步骤首先对5点到6点的数据进行同步,6点到当前时刻的数据通过下一步骤实现。
步骤4.2),应用oplog日志功能,获取第二MongoDB数据库副本从第一时刻到当前时刻的增量实时数据,并将增量实时数据导入至第一MongoDB数据库副本。
为了便于理解,下面对上述数据同步过程进行举例说明:
假设物理备份完成时刻是2点,增量备份完成时刻是5点,更新开始时刻是6点,更新结束时刻为7点;在第一MongoDB数据库副本和第二MongoDB数据库副本的数据同步过程中,首先需要通过MongoDB数据库的数据备份功能将物理备份完成时刻之前(包括物理备份完成时刻)的所有数据(例如,物理备份完成时刻可以为2点,可以将2点之前及2点的备份数据,称为物理备份数据)进行备份并导入到第一MongoDB数据库副本,使第一MongoDB数据库副本的数据恢复至第二MongoDB数据库副本在物理备份完成时刻的状态;然后通过MongoDB数据库的数据备份功能将第二MongoDB数据库副本的物理备份完成时刻与增量备份时刻之间的数据(例如,物理备份完成时刻为2点,增量备份完成时刻为5点,2点到5点之间的备份数据,称为增量备份数据)进行备份并导入到第一MongoDB数据库副本,使第一MongoDB数据库副本的数据恢复至第二MongoDB数据库副本在增量备份完成时刻的状态;接下来,通过MongoDB数据库的oplog日志功能将第二MongoDB数据库副本的增量备份完成时刻与更新开始时刻之间的数据(即5点到6点之间产生的数据,这里称为操作日志)导入到第一MongoDB数据库副本,使第一MongoDB数据库副本的数据恢复至第二MongoDB数据库副本在更新开始时刻的状态,最后,通过MongoDB数据库自带的oplog日志功能在更新期间(从更新开始时刻至更新结束时刻)实时获取上述第二MongoDB数据库副本在更新期间的数据(即从6点到7点的日志,这里称为增量数据),并将上述增量数据导入至上述第一MongoDB数据库副本,使第一MongoDB数据库副本与第二MongoDB数据库副本在更新期间的数据实时同步。通过上述步骤实现了第一MongoDB数据库副本的数据将与第二MongoDB数据库副本数据同步,并继续保持一致。
其中,对于第三MongoDB数据库副本与第四MongoDB数据库副本的数据同步过程与第一MongoDB数据库副本与第二MongoDB数据库副本的数据同步过程相同,可以相互参照理解,此处不再赘述。
本申请实施例通过对MongoDB数据库实例进行增加节点的操作,以及基于MongoDB数据库的自带的备份功能、oplog日志功能恢复新增节点数据,通过采用节点替换的方式实现实例的在线升级,对于用户来说仅存在IP切换的瞬间闪断,而不需要耗费更长时间等待原节点升配,缓解了停服升配影响用户体验的问题。
如图3所示,本发明实施例还提供一种对MongoDB数据库实例的配置更新装置,所述MongoDB数据库实例对应有多个待更新的MongoDB数据库副本,每一个待更新的MongoDB数据库副本对应一个角色,所述MongoDB数据库实例对应角色至少包括主和从,该装置包括:确定模块10、第一更新模块20以及第二更新模块30。
确定模块10用于确定针对MongoDB数据库实例的配置更新指令,所述配置更新指令用于指示所述MongoDB数据库实例的配置由原始配置更新为目标配置;
第一更新模块20用于针对每个角色为从的待更新的MongoDB数据库副本,执行如下步骤进行更新:新增第一MongoDB数据库副本,所述第一MongoDB数据库副本对应的配置为所述目标配置;将所述角色为从的待更新的第二MongoDB数据库副本的备份数据以及实时数据与所述第一MongoDB数据库副本进行同步;将所述第二MongoDB数据库副本对应的虚拟网络IP地址切换至所述第一MongoDB数据库副本;
第二更新模块30用于针对角色为主的待更新的MongoDB数据库副本,执行如下步骤进行更新:将指定的已更新完成的第一MongoDB数据库副本的角色设置为主,并将自身的角色设置为从;执行角色为从的待更新的MongoDB数据库副本对应的更新步骤。
在可选的实施方式中,每个MongoDB数据库副本对应一个容器,所述容器上配置有MongoDB数据库;所述MongoDB数据库副本对应的配置包括所述MongoDB数据库副本的容器的配置以及所述MongoDB数据库副本的MongoDB数据库的配置。
在可选的实施方式中,所述MongoDB数据库实例对应角色还包括隐藏,所述MongoDB数据库实例对应有容器IP地址;新增的第一MongoDB数据库副本的角色为隐藏;第一更新模块20在将所述第二MongoDB数据库副本对应的虚拟网络IP地址切换至所述第一MongoDB数据库副本时,用于:将所述第一MongoDB数据库副本的角色由隐藏设置为从;将所述第二MongoDB数据库副本的容器IP地址与虚拟网络IP地址解绑;将所述第一MongoDB数据库副本的容器IP地址与所述虚拟网络IP地址绑定。
在可选的实施方式中,该装置还包括:删除模块,用于在第一更新模块20将所述第一MongoDB数据库副本的容器IP地址与所述虚拟网络IP地址绑定之后,删除所述第二MongoDB数据库副本。
在可选的实施方式中,该装置还包括:第三更新模块,用于在确定模块10确定针对MongoDB数据库实例的配置更新指令之后,针对每个角色为隐藏的待更新的MongoDB数据库副本,执行如下步骤进行更新:新增第三MongoDB数据库副本,所述第三MongoDB数据库副本对应的配置为所述目标配置;将所述角色为隐藏的待更新的第四MongoDB数据库副本的备份数据以及实时数据与所述第二MongoDB数据库副本进行同步;删除所述第四MongoDB数据库副本。
在可选的实施方式中,所述角色为隐藏的待更新的MongoDB数据库副本、角色为从的待更新的MongoDB数据库副本与角色为主的待更新的MongoDB数据库副本同步进行更新;
或者,角色为隐藏的待更新的MongoDB数据库副本、角色为从的待更新的MongoDB数据库副本与角色为主的待更新的MongoDB数据库副本,按照角色为隐藏大于角色为从大于角色为主的顺序依次进行更新。
在可选的实施方式中,第一更新模块20在将所述角色为从的待更新的第二MongoDB数据库副本的备份数据以及实时数据与所述第一MongoDB数据库副本进行同步时,用于:在第一时刻,对所述第二MongoDB数据库副本的第二时刻的备份数据与所述第一MongoDB数据库副本进行同步;在所述第二时刻的备份数据同步完成后,对所述第二MongoDB数据库副本在第二时刻到第三时刻所产生的增量备份与所述第一MongoDB数据库副本进行同步;在所述增量备份同步完成后,对所述第二MongoDB数据库副本在第三时刻后产生的实时数据与所述第一MongoDB数据库副本进行同步。
在可选的实施方式中,第一更新模块20在对所述第二MongoDB数据库副本在第三时刻后产生的实时数据与所述第一MongoDB数据库副本进行同步时,用于:应用oplog日志功能,获取所述第二MongoDB数据库副本从第三时刻到第一时刻的操作日志,并将所述操作日志导入至所述第一MongoDB数据库副本;应用oplog日志功能,获取所述第二MongoDB数据库副本从第一时刻到当前时刻的增量实时数据,并将所述增量实时数据导入至所述第一MongoDB数据库副本。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例提供的一种对MongoDB数据库实例的配置更新装置,与上述实施例提供的一种对MongoDB数据库实例的配置更新方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在上述存储器上并可在上述处理器上运行的计算机程序,上述处理器执行上述计算机程序时实现上述一种对MongoDB数据库实例的配置更新方法的步骤。
参见图4所示的电子设备400的结构示意图,该电子设备包括:处理器40,存储器41,总线42和通信接口43,上述处理器40、通信接口43和存储器41通过总线42连接;处理器40用于执行存储器41中存储的可执行模块,例如计算机程序。
其中,存储器41可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口43(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接。
总线42可以是ISA总线、PCI总线或EISA总线等。图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器41用于存储程序,上述处理器40在接收到执行指令后,执行上述程序,前述本发明实施例任一实施例揭示的过程定义的装置所执行的方法可以应用于处理器40中,或者由处理器40实现。
处理器40可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器40中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器40可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。该存储介质位于存储器41,处理器40读取存储器41中的信息,结合其硬件完成上述方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器运行时执行上述一种对MongoDB数据库实例的配置更新方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行本申请实施例提供的上述的一种对MongoDB数据库实例的配置更新方法和/或一种对MongoDB数据库实例的配置更新方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可运行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地运行,它们有时也可以按相反的顺序运行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用运行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。

Claims (10)

1.一种对MongoDB数据库实例的配置更新方法,其特征在于,所述MongoDB数据库实例对应有多个待更新的MongoDB数据库副本,每一个待更新的MongoDB数据库副本对应一个角色,所述MongoDB数据库实例对应角色至少包括主和从,所述方法包括:
确定针对MongoDB数据库实例的配置更新指令,所述配置更新指令用于指示所述MongoDB数据库实例的配置由原始配置更新为目标配置;
针对每个角色为从的待更新的MongoDB数据库副本,执行如下步骤进行更新:新增第一MongoDB数据库副本,所述第一MongoDB数据库副本对应的配置为所述目标配置;将所述角色为从的待更新的第二MongoDB数据库副本的备份数据以及实时数据与所述第一MongoDB数据库副本进行同步;将所述第二MongoDB数据库副本对应的虚拟网络IP地址切换至所述第一MongoDB数据库副本;
针对角色为主的待更新的MongoDB数据库副本,执行如下步骤进行更新:将指定的已更新完成的第一MongoDB数据库副本的角色设置为主,并将自身的角色设置为从;执行角色为从的待更新的MongoDB数据库副本对应的更新步骤;
将所述角色为从的待更新的第二MongoDB数据库副本的备份数据以及实时数据与所述第一MongoDB数据库副本进行同步的步骤,包括:
在第一时刻,对所述第二MongoDB数据库副本的第二时刻的备份数据与所述第一MongoDB数据库副本进行同步;其中,所述第一时刻为同步开始的时刻,所述第二时刻为物理备份的时刻;
在所述第二时刻的备份数据同步完成后,对所述第二MongoDB数据库副本在第二时刻到第三时刻所产生的增量备份与所述第一MongoDB数据库副本进行同步;其中,所述第三时刻为增量备份完成时刻;
在所述增量备份同步完成后,对所述第二MongoDB数据库副本在第三时刻后产生的实时数据与所述第一MongoDB数据库副本进行同步。
2.根据权利要求1所述的配置更新方法,其特征在于,每个MongoDB数据库副本对应一个容器,所述容器上配置有MongoDB数据库;所述MongoDB数据库副本对应的配置包括所述MongoDB数据库副本的容器的配置以及所述MongoDB数据库副本的MongoDB数据库的配置。
3.根据权利要求2所述的配置更新方法,其特征在于,所述MongoDB数据库实例对应角色还包括隐藏,所述MongoDB数据库实例对应有容器IP地址;新增的第一MongoDB数据库副本的角色为隐藏;所述将所述第二MongoDB数据库副本对应的虚拟网络IP地址切换至所述第一MongoDB数据库副本的步骤,包括:
将所述第一MongoDB数据库副本的角色由隐藏设置为从;
将所述第二MongoDB数据库副本的容器IP地址与虚拟网络IP地址解绑;
将所述第一MongoDB数据库副本的容器IP地址与所述虚拟网络IP地址绑定。
4.根据权利要求3所述的方法,其特征在于,在将所述第一MongoDB数据库副本的容器IP地址与所述虚拟网络IP地址绑定的步骤之后,所述方法还包括:
删除所述第二MongoDB数据库副本。
5.根据权利要求3所述的方法,其特征在于,在确定针对MongoDB数据库实例的配置更新指令的步骤之后,所述方法还包括:
针对每个角色为隐藏的待更新的MongoDB数据库副本,执行如下步骤进行更新:新增第三MongoDB数据库副本,所述第三MongoDB数据库副本对应的配置为所述目标配置;将所述角色为隐藏的待更新的第四MongoDB数据库副本的备份数据以及实时数据与所述第三MongoDB数据库副本进行同步;删除所述第四MongoDB数据库副本。
6.根据权利要求5所述的方法,其特征在于,所述角色为隐藏的待更新的MongoDB数据库副本、角色为从的待更新的MongoDB数据库副本与角色为主的待更新的MongoDB数据库副本同步进行更新;
或者,角色为隐藏的待更新的MongoDB数据库副本、角色为从的待更新的MongoDB数据库副本与角色为主的待更新的MongoDB数据库副本,按照角色为隐藏大于角色为从大于角色为主的顺序依次进行更新。
7.根据权利要求1所述的方法,其特征在于,对所述第二MongoDB数据库副本在第三时刻后产生的实时数据与所述第一MongoDB数据库副本进行同步的步骤包括:
应用oplog日志功能,获取所述第二MongoDB数据库副本从第三时刻到第一时刻的操作日志,并将所述操作日志导入至所述第一MongoDB数据库副本;
应用oplog日志功能,获取所述第二MongoDB数据库副本从第一时刻到当前时刻的增量实时数据,并将所述增量实时数据导入至所述第一MongoDB数据库副本。
8.一种对MongoDB数据库实例的配置更新装置,其特征在于,所述MongoDB数据库实例对应有多个待更新的MongoDB数据库副本,每一个待更新的MongoDB数据库副本对应一个角色,所述MongoDB数据库实例对应角色至少包括主和从,所述装置包括:
确定模块,用于确定针对MongoDB数据库实例的配置更新指令,所述配置更新指令用于指示所述MongoDB数据库实例的配置由原始配置更新为目标配置;
第一更新模块,用于针对每个角色为从的待更新的MongoDB数据库副本,执行如下步骤进行更新:新增第一MongoDB数据库副本,所述第一MongoDB数据库副本对应的配置为所述目标配置;将所述角色为从的待更新的第二MongoDB数据库副本的备份数据以及实时数据与所述第一MongoDB数据库副本进行同步;将所述第二MongoDB数据库副本对应的虚拟网络IP地址切换至所述第一MongoDB数据库副本;
第二更新模块,用于针对角色为主的待更新的MongoDB数据库副本,执行如下步骤进行更新:将指定的已更新完成的第一MongoDB数据库副本的角色设置为主,并将自身的角色设置为从;执行角色为从的待更新的MongoDB数据库副本对应的更新步骤;
所述第一更新模块在将所述角色为从的待更新的第二MongoDB数据库副本的备份数据以及实时数据与所述第一MongoDB数据库副本进行同步时,用于:在第一时刻,对所述第二MongoDB数据库副本的第二时刻的备份数据与所述第一MongoDB数据库副本进行同步;其中,所述第一时刻为同步开始的时刻,所述第二时刻为物理备份的时刻;在所述第二时刻的备份数据同步完成后,对所述第二MongoDB数据库副本在第二时刻到第三时刻所产生的增量备份与所述第一MongoDB数据库副本进行同步;其中,所述第三时刻为增量备份完成时刻;在所述增量备份同步完成后,对所述第二MongoDB数据库副本在第三时刻后产生的实时数据与所述第一MongoDB数据库副本进行同步。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至7任一项所述的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行所述权利要求1至7任一项所述的方法。
CN202010247833.3A 2020-03-31 2020-03-31 一种对MongoDB数据库实例的配置更新方法及装置 Active CN113468190B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010247833.3A CN113468190B (zh) 2020-03-31 2020-03-31 一种对MongoDB数据库实例的配置更新方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010247833.3A CN113468190B (zh) 2020-03-31 2020-03-31 一种对MongoDB数据库实例的配置更新方法及装置

Publications (2)

Publication Number Publication Date
CN113468190A CN113468190A (zh) 2021-10-01
CN113468190B true CN113468190B (zh) 2024-08-27

Family

ID=77865885

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010247833.3A Active CN113468190B (zh) 2020-03-31 2020-03-31 一种对MongoDB数据库实例的配置更新方法及装置

Country Status (1)

Country Link
CN (1) CN113468190B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107329987A (zh) * 2017-06-02 2017-11-07 广州启辰电子科技有限公司 一种基于mongo数据库的搜索系统
CN108920637A (zh) * 2018-07-02 2018-11-30 北京科东电力控制系统有限责任公司 应用于同步子系统的数据库数据同步方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7865473B2 (en) * 2007-04-02 2011-01-04 International Business Machines Corporation Generating and indicating incremental backup copies from virtual copies of a data set
US10437681B2 (en) * 2013-10-30 2019-10-08 Trilio Data, Inc. Method and apparatus of managing application workloads on backup and recovery system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107329987A (zh) * 2017-06-02 2017-11-07 广州启辰电子科技有限公司 一种基于mongo数据库的搜索系统
CN108920637A (zh) * 2018-07-02 2018-11-30 北京科东电力控制系统有限责任公司 应用于同步子系统的数据库数据同步方法及装置

Also Published As

Publication number Publication date
CN113468190A (zh) 2021-10-01

Similar Documents

Publication Publication Date Title
US10437795B2 (en) Upgrading systems with changing constraints
US9031910B2 (en) System and method for maintaining a cluster setup
US11245758B2 (en) System and method for automatic cloud-based full-data restore to mobile devices
US11023448B2 (en) Data scrubbing method and apparatus, and computer readable storage medium
US8886609B2 (en) Backup and restore of data from any cluster node
CN102594849B (zh) 数据备份、恢复方法、虚拟机快照删除、回滚方法及装置
CN106802932B (zh) 一种数据库的路由方法、装置及数据库系统
US10445186B1 (en) Associating a guest application within a virtual machine to create dependencies in backup/restore policy
JP2017533520A (ja) データーベースのストレージ・スナップショットからの時間指定復元
US10489378B2 (en) Detection and resolution of conflicts in data synchronization
US20140081911A1 (en) Optimizing automatic deletion of backup files
CN111078667B (zh) 一种数据迁移的方法以及相关装置
CN111506592B (zh) 一种数据库的升级方法和装置
US9747291B1 (en) Non-disruptive upgrade configuration translator
US10620851B1 (en) Dynamic memory buffering using containers
JP6196389B2 (ja) 分散型ディザスタリカバリファイル同期サーバシステム
CN111240891A (zh) 基于数据库多表间数据一致性的数据恢复方法及装置
CN111694801A (zh) 一种应用于故障恢复的数据去重方法和装置
CN113946287A (zh) 分布式存储系统及其数据处理方法、相关装置
CN114661690A (zh) 多版本并发控制和日志清除方法、节点、设备和介质
CN111459913B (zh) 分布式数据库的容量扩展方法、装置及电子设备
CN112069152A (zh) 一种数据库集群升级方法、装置、设备以及存储介质
CN113468190B (zh) 一种对MongoDB数据库实例的配置更新方法及装置
CN108322542B (zh) 数据更新方法、系统、装置以及计算机可读存储介质
CN111159179A (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