CN114896261A - 数据库的升级方法、装置、计算机设备和存储介质 - Google Patents
数据库的升级方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN114896261A CN114896261A CN202210709062.4A CN202210709062A CN114896261A CN 114896261 A CN114896261 A CN 114896261A CN 202210709062 A CN202210709062 A CN 202210709062A CN 114896261 A CN114896261 A CN 114896261A
- Authority
- CN
- China
- Prior art keywords
- database
- data
- server
- application environment
- data synchronization
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 128
- 230000008569 process Effects 0.000 claims abstract description 78
- 230000000153 supplemental effect Effects 0.000 claims abstract description 16
- 230000006870 function Effects 0.000 claims description 42
- 230000001360 synchronised effect Effects 0.000 claims description 38
- 238000013507 mapping Methods 0.000 claims description 12
- 238000012795 verification Methods 0.000 claims description 12
- 238000004519 manufacturing process Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 5
- 238000013508 migration Methods 0.000 description 4
- 230000005012 migration Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出一种数据库的升级方法、装置、计算机设备和存储介质,该方法包括:将第一数据库的数据同步至第二数据库,拦截在第一数据同步过程中的第一数据更新操作及通过第一数据读操作;第一数据同步完成后将第二数据库切换为主数据库,停止拦截操作;执行第一数据更新操作以对第二数据库进行补充更新;将第一数据库的数据同步至第三数据库后将第二数据库的数据同步至第三数据库,拦截在第三数据同步过程中的第二数据更新操作及通过第二数据读操作;第三数据同步完成后将第三数据库切换为主数据库,停止拦截操作;执行第二数据更新操作以对第三数据库进行补充更新。本申请在不影响正确业务请求及不丢失业务数据的同时完成了数据库的升级。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据库的升级方法、装置、计算机设备和存储介质。
背景技术
随着应用功能的发展和使用用户的扩展,应用程序对资源的要求也越来越高。数据库作为应用***的底层支撑组件,如果版本老旧硬件不足,则不可避免会使应用***出现问题。因此,数据库的迭代更新非常有必要。
现有技术中对老旧的数据库进行升级由于数据的导出导入会耗费大量时间,因此不可避免地会较长时间暂停***的运行。对于大数据量的应用***以及搭建较多应用程序的数据库而言,长时间的***停机,会导致大量用户无法正常使用应用程序,给用户造成极大的影响。
发明内容
为了解决现有技术中数据库升级更新导致较长时间应用***停机、业务停滞,严重影响用户体验的技术问题。本申请提供了一种数据库的升级方法、装置、计算机设备和存储介质,其主要目的在于本申请在不影响正确业务请求及不丢失业务数据的同时完成数据库的升级且缩短数据库升级的时间。
为实现上述目的,本申请提供了一种数据库的升级方法,该方法包括:
通过第一数据同步将第一数据库的数据同步至第二数据库,拦截在第一数据同步过程中服务器端对数据库的第一数据更新操作及通过在第一数据同步过程中服务器端对数据库的第一数据读操作,以保留服务器端对数据库的读操作;
若第一数据同步完成,则将第二数据库切换为主数据库,停止拦截操作,以恢复服务器端对第二数据库的数据库操作,数据库操作包括读操作和更新操作;
执行第一数据更新操作以对第二数据库进行第一补充更新;
通过第二数据同步将第一数据库的数据同步至已升级的第三数据库;
若第二数据同步完成,则通过第三数据同步将第二数据库的数据同步至已升级的第三数据库,拦截在第三数据同步过程中服务器端对数据库的第二数据更新操作及通过在第三数据同步过程中服务器端对数据库的第二数据读操作,以保留服务器端对数据库的读操作;
若第三数据同步完成,则将第三数据库切换为主数据库,停止拦截操作,以恢复服务器端对第三数据库的数据库操作;
执行第二数据更新操作以对第三数据库进行第二补充更新。
此外,为实现上述目的,本申请还提供了一种数据库的升级装置,该装置包括:
第一数据同步模块,用于通过第一数据同步将第一数据库的数据同步至第二数据库,拦截在第一数据同步过程中服务器端对数据库的第一数据更新操作及通过在第一数据同步过程中服务器端对数据库的第一数据读操作,以保留服务器端对数据库的读操作;
第一切换模块,用于若第一数据同步完成,则将第二数据库切换为主数据库,停止拦截操作,以恢复服务器端对第二数据库的数据库操作,数据库操作包括读操作和更新操作;
第一补录模块,用于执行第一数据更新操作以对第二数据库进行第一补充更新;
第二数据同步模块,用于通过第二数据同步将第一数据库的数据同步至已升级的第三数据库;
第三数据同步模块,用于若第二数据同步完成,则通过第三数据同步将第二数据库的数据同步至已升级的第三数据库,拦截在第三数据同步过程中服务器端对数据库的第二数据更新操作及通过在第三数据同步过程中服务器端对数据库的第二数据读操作,以保留服务器端对数据库的读操作;
第二切换模块,用于若第三数据同步完成,则将第三数据库切换为主数据库,停止拦截操作,以恢复服务器端对第三数据库的数据库操作;
第二补录模块,用于执行第二数据更新操作以对第三数据库进行第二补充更新。
为实现上述目的,本申请还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,处理器执行计算机可读指令时执行如前面任一项的数据库的升级方法的步骤。
为实现上述目的,本申请还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行如前面任一项的数据库的升级方法的步骤。
本申请提出的数据库的升级方法、装置、计算机设备和存储介质,通过在第一数据同步期间,只拦截数据更新操作不拦截读操作,服务器端可以正常对数据库进行读操作,因此不需要停用数据库、可以满足大部分业务请求。将第一数据库同步至第二数据库后,执行拦截的第一数据更新操作以更新第二数据库,以将第一数据同步期间服务器端对数据库的更新操作补充执行,以对数据库中的数据进行补录,避免了数据丢失。在第二数据库作为临时的主数据库期间,由于第二数据库承接服务器端的读写操作,因此将第一数据库的数据同步至第三数据库虽然耗时较长但是不影响大部分业务的正常运行。第一数据库的数据同步至第三数据库后,将第二数据库的数据同步至第三数据库,由于第三数据库已存储有第一数据库的数据,因此第三数据同步节省了大量数据同步时间,且减少了对第二数据库的影响,保证了业务的正常运行。将第二数据库同步至第三数据库后,执行拦截的第二数据更新操作以更新第三数据库,以将第三数据同步期间服务器端对数据库的更新操作补充执行,以对数据库中的数据进行补录,避免了数据丢失。本申请在切换窗口期利用有效资源保证了业务请求的正常响应及不丢失业务数据的同时高效地完成了数据库的平滑升级,保障数据库对外提供服务不受到影响且缩短数据库升级的时间,降低了在数据库切换过程中对应用***的影响,增加了用户体验。升级后的第三数据库加快了应用***的运行速度和对业务请求的响应,提高了应用***的运行效率,满足日益提升的用户需求。
附图说明
图1为本申请一实施例中数据库的升级方法的应用场景图;
图2为本申请一实施例中数据库的升级方法的流程示意图;
图3为本申请一实施例中数据库的升级装置的结构框图;
图4为本申请一实施例中计算机设备的内部结构框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据库的升级方法,可应用在如图1的数据库的升级***,改数据库的升级***包括第一数据库10、第二数据库20、第三数据库30和服务器端40。数据库的升级***还包括数据库的升级装置(图中未示出),该数据库的升级装置用于控制第一数据库10、第二数据库20、第三数据库30和服务器端40。
其中,服务器端40可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
数据库的升级装置通过第一数据同步将第一数据库的数据同步至第二数据库,拦截在第一数据同步过程中服务器端对数据库的第一数据更新操作及通过在第一数据同步过程中服务器端对数据库的第一数据读操作,以保留服务器端对数据库的读操作;
若第一数据同步完成,则将第二数据库切换为主数据库,停止拦截操作,以恢复服务器端对第二数据库的数据库操作,数据库操作包括读操作和更新操作;
执行第一数据更新操作以对第二数据库进行第一补充更新;
通过第二数据同步将第一数据库的数据同步至已升级的第三数据库;
若第二数据同步完成,则通过第三数据同步将第二数据库的数据同步至已升级的第三数据库,拦截在第三数据同步过程中服务器端对数据库的第二数据更新操作及通过在第三数据同步过程中服务器端对数据库的第二数据读操作,以保留服务器端对数据库的读操作;
若第三数据同步完成,则将第三数据库切换为主数据库,停止拦截操作,以恢复服务器端对第三数据库的数据库操作;
执行第二数据更新操作以对第三数据库进行第二补充更新。
图2为本申请一实施例中数据库的升级方法的流程示意图。参考图2,该数据库的升级包括以下步骤S100-S700。
S100:通过第一数据同步将第一数据库的数据同步至第二数据库,拦截在第一数据同步过程中服务器端对数据库的第一数据更新操作及通过在第一数据同步过程中服务器端对数据库的第一数据读操作,以保留服务器端对数据库的读操作。
具体地,第一数据库具体为旧库,第二数据库具体为旧库对应的备份库或cow数据库。在第一数据同步之前,第二数据库中已存储有第一数据库大部分的数据。即,在第一数据同步之前不可避免的第一数据库中有增量数据没有来得及同步到第二数据库中或在第一数据同步之前第二数据库与第一数据库的数据存在差异。
由于第二数据库存储有第一数据库大部分的数据,第二数据库与第一数据库之间的数据仅存在数据差异,因此,第一数据同步不会花费较长时间,进而也不会因为数据同步时间过长影响服务器端对数据库的读操作或更新操作,数据库能够承载正常的业务请求。
在将第一数据库的数据同步到第二数据库的过程中,不可避免地服务器端会接收到从数据库读数据或更新数据的业务请求。如果将第一数据库的数据同步到第二数据库的同时还根据业务请求来更新第一数据库,可能会导致数据错乱,不能保证第一数据库的数据与第二数据库的数据同步。因此,本实施例在将第一数据库的数据同步到第二数据库的过程中会拦截服务器端对第一数据库和第二数据库的第一数据更新操作,保证第一数据库中的数据不再更新,进而保证第一数据库中的数据与同步后的第二数据库的数据的同步。在拦截过程中,会区分服务器端对数据库的操作类型,进而拦截服务器端对数据库的更新操作,通过服务器端对数据库的读操作。
为了不影响第一数据同步过程中的正常业务请求,本实施例还会保证在数据同步的过程中第一数据库和第二数据库能够被用来正常处理业务请求中的读请求。本实施例不会拦截服务器端对数据库的读操作,因此,不论是第一数据库作为主数据库还是第二数据库作为主数据库,服务器端都能够从第一数据库或第二数据库中读取数据。主数据库为当前服务器端可以访问的数据库,在同时存在多个数据库时,只有一个数据库为主数据库,其他数据库为从数据库,从数据库暂时不被服务器端访问。
另外,本申请的数据更新操作和读操作都属于DML流量(数据库流量)。
本实施例实现了第一数据库到第二数据库的数据迁移,同时拦截了对数据库的更新操作,以及维持了对数据库的正常读操作。
S200:若第一数据同步完成,则将第二数据库切换为主数据库,停止拦截操作,以恢复服务器端对第二数据库的数据库操作,数据库操作包括读操作和更新操作。
具体地,在第一数据同步之前第一数据库为主数据库,第二数据库为从数据库。在第一数据同步过程中也可能发生从主数据库切换。如果第一数据同步完成,则将第二数据库确定为主数据库。由于停止了拦截操作,因此服务器端对数据库的数据更新操作不会被拦截,服务器端的更新操作和读操作都会直接作用于第二数据库。此时,第二数据库作为主数据库来承接正常业务请求。
S300:执行第一数据更新操作以对第二数据库进行第一补充更新。
具体地,在将第一数据库的数据向第二数据库迁移或同步的过程中,服务器端对第一数据库或第二数据库的更新操作都会被拦截,因此,在第一数据同步完成且第二数据库为主数据库后,要对第二数据库进行补录,即执行第一数据更新操作以对第二数据库进行第一补充更新。第一补充更新包括写入新数据和更新或更改数据库的原始数据。
在第一补充更新过程中,第二数据库依然能够正常被读和更新,即服务器端可以正常对第二数据库进行新的读操作和新的更新操作。
S400:通过第二数据同步将第一数据库的数据同步至已升级的第三数据库。
具体地,已升级的第三数据库为已经经过硬件升级或已经经过硬件升级和软件升级的新数据库。第三数据库与第一数据库均为生产库,可以长期用来处理业务请求。第二数据库为第一数据库的备份库。第二数据库可以临时使用,但不能长期用来处理业务请求。
在第二数据库作为主数据库的时候,第一数据库和第三数据库均为从数据库。此时第三数据库没有第一数据库的数据,但是由于此时是第二数据库被访问来承载正常的业务请求,因此,在此阶段将第一数据库中的大量数据同步至第三数据库不会影响第二数据库承载业务的压力。
因为此时第二数据库可以承载服务器端的读操作和更新操作,所以此时不需要执行拦截操作。
如果已升级的第三数据库为已经经过硬件升级的数据库,则在第二数据同步完成过程后还可以根据需要和用户指令对第三数据库进行软件升级。
S500:若第二数据同步完成,则通过第三数据同步将第二数据库的数据同步至已升级的第三数据库,拦截在第三数据同步过程中服务器端对数据库的第二数据更新操作及通过在第三数据同步过程中服务器端对数据库的第二数据读操作,以保留服务器端数据库的读操作。
具体地,在将第二数据库的数据同步到第三数据库的过程中,不可避免地服务器端会接收到从数据库读数据或更新数据的业务请求。如果将第二数据库的数据同步到第三数据库的同时还根据业务请求来更新第二数据库,可能会导致数据错乱,不能保证第二数据库的数据与第三数据库的数据同步。因此,本实施例在将第二数据库的数据同步到第三数据库的过程中会拦截服务器端对第二数据库和第三数据库的第二数据更新操作,保证第二数据库中的数据不再更新,进而保证第二数据库中的数据与同步后的第三数据库的数据的同步和一致。在拦截过程中,会区分服务器端对数据库的操作类型,进而拦截服务器端对数据库的更新操作,通过服务器端对数据库的读操作。
为了不影响第三数据同步过程中的正常业务请求,本实施例还会保证在数据同步的过程中第二数据库和第三数据库能够被用来正常处理业务请求中的读请求。本实施例不会拦截服务器端对数据库的读操作,因此,不论是第二数据库作为主数据库还是第三数据库作为主数据库,服务器端都能够从第二数据库或第三数据库中读取数据。
由于在步骤S400中实现了将第一数据库中数据迁移至第三数据库中,因此,在步骤S500中第三数据库与第二数据库中的数据的差异得以缩小。因此,在步骤S500中将第二数据库中的数据同步至第三数据库中所花费的时间大大减短,也保证了第二数据库正常承载服务器端的读操作或更新操作的功能。
本实施例实现了第二数据库到第三数据库的数据迁移,同时拦截了对数据库的更新操作,以及维持了对数据库的正常读操作。
S600:若第三数据同步完成,则将第三数据库切换为主数据库,停止拦截操作,以恢复服务器端对第三数据库的数据库操作。
具体地,在第二数据同步完成之后第三数据同步之前第二数据库为主数据库,第一数据库和第三数据库为从数据库。在第三数据同步过程中也可能发生从主数据库切换。如果第三数据同步完成,则将第三数据库确定为主数据库。由于停止了拦截操作,因此服务器端对数据库的数据更新操作不会被拦截,服务器端的更新操作和读操作都会直接作用于第三数据库。此时,第三数据库作为主数据库来承接正常业务请求。
S700:执行第二数据更新操作以对第三数据库进行第二补充更新。
具体地,在将第二数据库的数据向第三数据库迁移或同步的过程中,服务器端对第二数据库或第三数据库的更新操作都会被拦截,因此,在第三数据同步完成且第三数据库为主数据库后,要对第三数据库进行补录,即执行第二数据更新操作以对第三数据库进行第二补充更新。第二补充更新包括写入新数据和更新或更改数据库的原始数据。
在第二补充更新过程中,第三数据库依然能够正常被读和更新,即服务器端可以正常对第三数据库进行新的读操作和新的更新操作。
经过步骤S100-S700即实现了第一数据库到第三数据库的数据库升级。
本实施例通过在第一数据同步期间,只拦截数据更新操作不拦截读操作,服务器端可以正常对数据库进行读操作,因此不需要停用数据库、可以满足大部分业务请求。将第一数据库同步至第二数据库后,执行拦截的第一数据更新操作以更新第二数据库,以将第一数据同步期间服务器端对数据库的更新操作补充执行,以对数据库中的数据进行补录,避免了数据丢失。在第二数据库作为临时的主数据库期间,由于第二数据库承接服务器端的读写操作,因此将第一数据库的数据同步至第三数据库虽然耗时较长但是不影响大部分业务的正常运行。第一数据库的数据同步至第三数据库后,将第二数据库的数据同步至第三数据库,由于第三数据库已存储有第一数据库的数据,因此第三数据同步节省了大量数据同步时间,且减少了对第二数据库的影响,保证了业务的正常运行。将第二数据库同步至第三数据库后,执行拦截的第二数据更新操作以更新第三数据库,以将第三数据同步期间服务器端对数据库的更新操作补充执行,以对数据库中的数据进行补录,避免了数据丢失。本申请在切换窗口期利用有效资源实现了数据库的“零停机”,在数据库不停机的情况下保证了业务请求的正常响应及不丢失业务数据的同时高效地完成了数据库平稳地更新换代和升级,保障数据库对外提供服务不受到影响且缩短数据库升级的时间,降低了在数据库切换过程中对应用***的影响,增加了用户体验。升级后的第三数据库加快了应用***的运行速度和对业务请求的响应,提高了应用***的运行效率,满足日益提升的用户需求。
在另外一个应用场景中,如果第一数据库和第二数据库为主从数据库,且可以根据需要主从切换,且第二数据库不再是第一数据库的备份数据库,第一数据库与第二数据库都属于生产库,数据存储方式相同,那么先将第一数据库和第二数据库中的任意一个数据库停用后进行升级,未停用的数据库作为承载服务器端的数据更新操作的数据库。停用的数据库升级完成后重启并设置为可读,将升级后的数据库切换为承载服务器端的数据更新操作的数据库,停用未升级的数据库,并对未升级的数据库进行升级。在此期间,拦截数据更新操作,在两个数据库都升级完成后,执行数据更新操作以对两个数据库进行补充更新。
在一个实施例中,步骤S100具体包括:
运行于第一应用环境,将运行于第一应用环境的第一数据库设置为可读写,以开启服务器端对第一数据库的数据库操作功能,
关闭服务器端对目标消息的消费功能,
将第二数据库设置为只读,
开启***,利用***拦截服务器端对第一数据库和第二数据库的第一数据更新操作及通过服务器端对数据库的第一数据读操作,其中,每次第一数据更新操作为服务器端根据接收到的第一数据更新请求对运行于第一应用环境的第一数据库或运行于第二应用环境的第二数据库所执行的数据更新操作,每次第一数据读操作为服务器端根据接收到的第一数据读请求对第一数据库或第二数据库的数据读操作,
根据每次拦截的第一数据更新操作生产对应的第一消息,将第一消息推送至消息中间件,
将运行环境由第一应用环境切换至第二应用环境,以开启服务器端对运行于第二应用环境的第二数据库的读操作,
在切换至第二应用环境后,重启第一数据库,将第一数据库设置为只读,
将运行环境由第二应用环境切换至第一应用环境,以开启服务器端对运行于第一应用环境的第一数据库的读操作,
通过第一数据同步将第一数据库的数据同步至第二数据库,
若第一数据同步完成,则重启第二数据库,将第二数据库设置为可读写。
具体地,在第一数据同步之前,第一数据库为主数据库,第一数据库运行于第一应用环境下。且在第一数据同步之前,第一数据库为可读写模式,可以被服务器端访问以执行读操作和数据更新操作。
为了保证第二数据库不被服务器端进行更新操作将第二数据库设置为只读模式。
开启***的目的是为了拦截服务器端对数据库的数据更新操作,对于服务器端对数据库的读操作***不会拦截,因此读操作会被***通过,进而使得服务器端能够从数据库中读取数据。
在第一数据同步过程中可能会多次拦截不同时刻的第一数据更新操作,且每次拦截的第一数据更新操作可能是服务器端对第一数据库的更新操作也可能是对第二数据库的更新操作。另外,当运行环境运行于第一应用环境的时候第一数据库才能被服务器端访问,当运行环境运行于第二应用环境的时候第二数据库才能被服务器端访问。
对于拦截到的每个第一数据更新操作,都会生产出对应的第一消息,并将第一消息推送至消息中间件,第一消息用于指示服务器端对数据库的数据更新操作。第一消息可以包括接口信息,接口信息包括接口名称及更新操作对应的接口参数等不局限于此。消息中间件可以采用kafka或rabbitMQ等方式实现,本申请对此不作限定。
第一消息的生产者可以是***。
消息中间件存储有消息的主题(topic)等信息,因此,根据消息的主题可以允许服务器端可以消费哪些消息以及禁止服务器端消费哪些消息。
本实施例在开启***之前先关闭服务器端对目标消息的消费功能,可以防止在第一数据同步过程中第一数据库或第二数据库被服务器端进行数据更新操作,使得数据库之间的数据不同步,也防止数据错乱。服务器端根据消息中间件中消息的主题可以确定能够消费哪些消息不能够消费哪些消息。另外,关闭服务器端对目标消息的消费功能不影响服务器端对其他非目标消息的消费功能。其中,目标消息包括第一消息。
将运行环境由第一应用环境切换至第二应用环境过程,依然是第一数据库承接服务器端的读操作(更新操作被拦截)。当切换至第二应用环境后,由第二数据库承接服务器端的读操作(更新操作被拦截)。
将运行环境由第一应用环境切换至第二应用环境的目的是暂停服务器端对第一数据库的读操作,使第二数据库配合服务器端承接用户的业务请求。暂停第一数据库的使用使得能够重启第一数据库。重启第一数据库的目的是断开长连接。如果长连接还在,第一数据库中的数据可能依然会被修改,而且与第一数据库连接的长连接可能有多个,一个一个地断开长连接速度慢效率不高,因此需要重启第一数据库。重启可以一次性快速关闭现有连接,且重启后将第一数据库设置为只读可以确保确保第一数据库不会数据更新,保障数据一致性。
重启第一数据库后,将运行环境由第二应用环境切换至第一应用环境,在第一应用环境下,第一数据库重新承接服务器端的读操作。且此时,将第一数据库的数据同步至第二数据库。由于第二数据库存储有大部分第一数据库的数据,因此第一数据同步实质是增量数据的同步以及不一致数据的同步。因此,第一数据同步不会花费大量时间。
第一数据同步完成后,第二数据库存储有第一数据库的全部数据,重启第二数据库,将第二数据库设置为可读写。此时,由于仍运行于第一应用环境,因此,即使第二数据库为可读写,但是服务器端仍然对第一数据库进行读操作。
其中,第一应用环境和第二应用环境用于承接数据库外部流量即承接服务器端对数据库的数据库操作,将第一应用环境与连接第一数据库,将第二应用环境与第二数据库连接,通过将流量在第一应用环境和第二应用环境进行切换来快速实现不同数据库的访问。单环境切换数据库连接串至少需要15分钟,本申请通过第一应用环境和第二应用环境来切换数据库的访问甚至可以控制在1秒以内,达到了快速切换数据库的目的。
步骤S200中若第一数据同步完成,则将第二数据库切换为主数据库具体包括:若第一数据同步完成,则将运行环境由第一应用环境切换至第二应用环境,以将第二数据库切换为主数据库。
具体地,重启第二数据库且将第二数据库由只读设置为可读写后,将运行环境由第一应用环境切换至第二应用环境后,第二数据库作为主数据库,由于第二数据库可读写,因此服务器端可以正常地对第二数据库进行数据读操作和数据更新操作。
本实施例通过增加***与消息中间件,拦截并存储拦截第一数据同步过程中服务器端对数据库的数据更新操作(数据更新流量),通过服务器端对数据库的读操作,因此既可以很好的暂停对数据库的数据更新,保证数据同步过程中两个数据库中的数据同步,减少数据错乱,保障应用的请求不丢失,有效地利用了***资源,也尽可能保证了带大部分业务请求不受影响,增加了用户体验。
在一个实施例中,执行第一数据更新操作以对第二数据库进行第一补充更新,包括:
关闭***和消息生产及推送功能;
开启服务器端对目标消息的消费功能;
通过服务器端消费消息中间件的第一消息,以执行第一数据更新操作对第二数据库进行第一补充更新操作。
具体地,由于在第一数据同步过程中拦截了数据更新操作,因此第一数据库和第二数据库没有增量数据、数据也没有更改,为了保证业务请求被响应,本实施例会在第一数据同步完成后继续执行之前暂缓执行的第一数据更新操作,使得之前的增量数据被写入第二数据库,同时第二数据库的数据得到更改。
在一个实施例中,步骤S500具体包括:
运行于第二应用环境,将运行于第二应用环境的第二数据库设置为可读写,以开启服务器端对第二数据库的数据库操作功能,
若第二数据同步完成,则关闭服务器端对目标消息的消费功能,
将第一数据库设置为只读,
开启***,利用***拦截服务器端对第一数据库和第二数据库的第二数据更新操作及通过服务器端对数据库的第二数据读操作,其中,每次第二数据更新操作为服务器端根据接收到的第二数据更新请求对运行于第一应用环境的第一数据库或运行于第二应用环境的第二数据库所执行的数据更新操作,每次第二数据读操作为服务器端根据接收到的第二数据读请求对第一数据库或第二数据库的数据读操作,
根据每次拦截的第二数据更新操作生产对应的第二消息,将第二消息推送至消息中间件,
将运行环境由第二应用环境切换至第一应用环境,以开启服务器端对运行于第一应用环境的第一数据库的读操作,
在切换至第一应用环境后,重启第二数据库,将第二数据库设置为只读,
将运行环境由第一应用环境切换至第二应用环境,以开启服务器端对运行于第二应用环境的第二数据库的读操作,
通过第三数据同步将第二数据库的数据同步至第三数据库,
若第三数据同步完成,则重启第三数据库,将第三数据库设置为可读写。
具体地,第二数据同步不影响第二数据库正常承接服务器端的读操作和数据更新操作。因此,在第三数据同步之前,第二数据库为主数据库,第二数据库运行于第二应用环境下,第二数据库为可读写模式,可以被服务器端访问以执行读操作和数据更新操作。
为了保证第一数据库不被服务器端进行更新操作将第一数据库设置为只读模式。
开启***的目的是为了拦截服务器端对数据库的数据更新操作,对于服务器端对数据库的读操作***不会拦截,因此读操作会被***通过,进而使得服务器端能够从数据库中读取数据。
在第三数据同步过程中可能会多次拦截不同时刻的第二数据更新操作,且每次拦截的第二数据更新操作可能是服务器端对第一数据库的更新操作也可能是对第二数据库的更新操作。另外,当运行环境运行于第一应用环境的时候第一数据库才能被服务器端访问,当运行环境运行于第二应用环境的时候第二数据库才能被服务器端访问。
对于拦截到的每个第二数据更新操作,都会生产出对应的第二消息,并将第二消息推送至消息中间件,第二消息用于指示服务器端对数据库的数据更新操作。第二消息可以包括接口信息,接口信息包括接口名称及更新操作对应的接口参数等不局限于此。消息中间件可以采用kafka或rabbitMQ等方式实现,本申请对此不作限定。
第二消息的生产者可以是***。
消息中间件存储有消息的主题(topic)等信息,因此,根据消息的主题可以允许服务器端可以消费哪些消息以及禁止服务器端消费哪些消息。
本实施例在开启***之前先关闭服务器端对目标消息的消费功能,可以防止在第三数据同步过程中第一数据库或第二数据库被服务器端进行数据更新操作,使得数据库之间的数据不同步,也防止数据错乱。服务器端根据消息中间件中消息的主题可以确定能够消费哪些消息不能够消费哪些消息。另外,关闭服务器端对目标消息的消费功能不影响服务器端对其他非目标消息的消费功能。其中,目标消息包括第二消息。第一消息和第二消息为同一个主题的消息。
将运行环境由第二应用环境切换至第一应用环境过程,依然是第二数据库承接服务器端的读操作(更新操作被拦截)。当切换至第一应用环境后,由第一数据库承接服务器端的读操作(更新操作被拦截)。第三数据库与第一数据库都是在第一应用环境下运行的数据库,但是第三数据库还不能正常运行于第一应用环境下作为被访问的数据库,因此,此时仍然是第一数据库来承载配合业务请求。
将运行环境由第二应用环境切换至第一应用环境的目的是暂停服务器端对第二数据库的读操作,使第一数据库配合服务器端承接用户的业务请求。暂停第二数据库的使用使得能够重启第二数据库。重启第二数据库的目的是断开长连接。如果长连接还在,第二数据库中的数据可能依然会被修改,而且与第二数据库连接的长连接可能有多个,一个一个地断开长连接速度慢效率不高,因此需要重启第二数据库。重启可以一次性快速关闭现有连接,且重启后将第二数据库设置为只读可以确保第二数据库不会数据更新,保障数据一致性。
重启第二数据库后,将运行环境由第一应用环境切换至第二应用环境,在第二应用环境下,第二数据库重新承接服务器端的读操作。且此时,将第二数据库的数据同步至第三数据库。由于第三数据库存储有第一数据库的数据,因此第三数据同步实质是增量数据的同步以及不一致数据的同步。因此,第三数据同步不会花费大量时间。
另外,本申请重启数据库可以是在监听到对应触发事件后自动执行的,也可以是由工程人员在获取到提示消息后通过输入指令提供给***来执行的。这样可以便于工程人员掌握数据库升级的进程,同时观测数据库升级过程中的各种事件,及时阻止或解决突发事件。
第三数据同步完成后,第三数据库存储有第二数据库的全部数据,重启第三数据库,将第三数据库设置为可读写。此时,由于仍运行于第二应用环境,因此,即使第三数据库为可读写,但是服务器端仍然对第二数据库进行读操作。
步骤S600中若第三数据同步完成,则将第三数据库切换为主数据库具体包括:若第三数据同步完成,则将运行环境由第二应用环境切换至第一应用环境,将第三数据库设置为运行于第一应用环境的主数据库。
具体地,重启第三数据库且将第三数据库由只读设置为可读写后,将运行环境由第二应用环境切换至第一应用环境后,由于第一应用环境有第一数据库和第三数据库,因此需要将第三数据库设置为主数据库且需要使第三数据库能够在第一应用环境下正常被访问,由于第三数据库可读写,因此服务器端可以正常地对第三数据库进行数据读操作和数据更新操作。
本实施例通过***拦截第三数据同步过程中服务器端对数据库的数据更新操作,通过服务器端对数据库的读操作,因此既可以很好的暂停对数据库的数据更新,保证数据同步过程中两个数据库中的数据同步,减少数据错乱,也尽可能保证了一定的业务请求不受影响。又由于第三数据库是升级过的数据库,因此从第一数据库到第三数据库实现了数据库的升级。
在一个实施例中,执行第二数据更新操作以对第三数据库进行第二补充更新,包括:
关闭***和消息生产及推送功能;
开启服务器端对目标消息的消费功能;
通过服务器端消费消息中间件的第二消息,以执行第二数据更新操作对第三数据库进行第二补充更新操作。
具体地,由于在第三数据同步过程中拦截了数据更新操作,因此第一数据库和第二数据库没有增量数据、数据也没有更改,为了保证业务请求被响应,本实施例会在第三数据同步完成后继续执行之前暂缓执行的第二数据更新操作,使得之前的增量数据被写入第三数据库,同时第三数据库的数据得到更改。
在一个实施例中,将第三数据库设置为运行于第一应用环境的主数据库,包括:通过更改域名与数据库地址之间的映射关系使域名与第三数据库的地址形成映射关系,以将第三数据库设置为当前运行于第一应用环境的主数据库。
具体地,服务器端访问数据库是通过域名与数据库地址之间的映射关系来访问的。对于同一个域名,如果是访问第一数据库,则该域名与第一数据库的地址建立映射关系。如果访问第三数据库,则该域名与第三数据库的地址建立映射关系。同一时间,同一个域名与一个数据库的地址建立映射关系。数据库的地址具体为数据库的IP地址。
对于第一数据库与第二数据库的切换或第三数据库与第二数据库的切换,则是通过网关来切换运行环境,进而确定服务器端是访问第一数据库还是访问第二数据库或访问第三数据库还是访问第二数据库。
在一个实施例中,在步骤S700中第二补充更新完成后,该方法还包括:
对第三数据库进行业务验证;
若验证未通过,则通过回退将第一数据库或第二数据库切换为主数据库。
具体地,对第三数据库进行业务验证,将验证通过的第三数据库应用于大量的业务请求处理中;若验证未通过,则通过回撤将第一数据库或第二数据库切换为主数据库。然后对第三数据库进行异常诊断和抢修,抢修完成后再将第三数据库切换为主数据库。
业务验证具体是进行全流程功能测试与性能测试,以验证第三数据库是否能够配合完成服务器端对每种业务请求的正确响应。将不能出现报错的业务请求和错误原因记录并输出提供给测试人员,以供测试人员对第三数据库的异常进行诊断。
其中,将主数据库由第三数据库切换为第一数据库是通过更改域名与数据库地址之间的映射关系使域名与第一数据库的地址形成映射关系实现的。
将主数据库由第三数据库切换为第二数据库是通过将运行环境由第一应用环境切换为第二应用环境实现的。
将主数据库由第二数据库切换为第一数据库或第三数据库是通过将运行环境由第二应用环境切换为第一应用环境实现的。
本实施例通过业务验证来验证升级的第三数据库的性能,并在出现异常时将主数据库切换为第一数据库或第二数据库以恢复正常业务,同时及时对第三数据库进行抢修,及时发现解决第三数据库的问题,使得升级后的第三数据库能够稳定地承接业务。
本申请通过减少数据库升级对应用的影响时间,增加备用数据库后可以将数据库升级的影响时段控制在2个切换时间段,大大缩短了数据库升级所耗费的时间,降低了在数据库切换过程中对应用的影响,通过第一数据库-第二数据库-第三数据库之间数据的同步和迁移,实现数据库“零停机”的平稳升级。增加***与消息中间件存储数据库切换过程中的数据更新流量,读请求正常进行,使得在切换窗口期利用有效资源保障应用正常服务,增加用户体验,待数据库切换成功后再消费数据更新操作对应的消息,保障应用的请求不丢失即保证了数据库数据的更新。
另外,本申请不停机实现数据库的升级,因此可以适用于搭建有大数据量的应用***以及搭建有多个应用***的数据库的升级,适用范围广。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图3为本申请一实施例中数据库的升级装置的结构框图。参考图3,该装置包括:
第一数据同步模块100,用于通过第一数据同步将第一数据库的数据同步至第二数据库,拦截在第一数据同步过程中服务器端对数据库的第一数据更新操作及通过在第一数据同步过程中服务器端对数据库的第一数据读操作,以保留服务器端对数据库的读操作;
第一切换模块200,用于若第一数据同步完成,则将第二数据库切换为主数据库,停止拦截操作,以恢复服务器端对第二数据库的数据库操作,数据库操作包括读操作和更新操作;
第一补录模块300,用于执行第一数据更新操作以对第二数据库进行第一补充更新;
第二数据同步模块400,用于通过第二数据同步将第一数据库的数据同步至已升级的第三数据库;
第三数据同步模块500,用于若第二数据同步完成,则通过第三数据同步将第二数据库的数据同步至已升级的第三数据库,拦截在第三数据同步过程中服务器端对数据库的第二数据更新操作及通过在第三数据同步过程中服务器端对数据库的第二数据读操作,以保留服务器端数据库的读操作;
第二切换模块600,用于若第三数据同步完成,则将第三数据库切换为主数据库,停止拦截操作,以恢复服务器端对第三数据库的数据库操作;
第二补录模块700,用于执行第二数据更新操作以对第三数据库进行第二补充更新。
在一个实施例中,第一数据同步模块100具体包括:
第一设置单元,用于运行于第一应用环境,将运行于第一应用环境的第一数据库设置为可读写,以开启服务器端对第一数据库的数据库操作功能,
第一关闭单元,用于关闭服务器端对目标消息的消费功能,
第二设置单元,用于将第二数据库设置为只读,
第一拦截单元,用于开启***,利用***拦截服务器端对第一数据库和第二数据库的第一数据更新操作及通过服务器端对数据库的第一数据读操作,其中,每次第一数据更新操作为服务器端根据接收到的第一数据更新请求对运行于第一应用环境的第一数据库或运行于第二应用环境的第二数据库所执行的数据更新操作,每次第一数据读操作为服务器端根据接收到的第一数据读请求对第一数据库或第二数据库的数据读操作,
第一消息生产推送单元,用于根据每次拦截的第一数据更新操作生产对应的第一消息,将第一消息推送至消息中间件,
第一切换单元,用于将运行环境由第一应用环境切换至第二应用环境,以开启服务器端对运行于第二应用环境的第二数据库的读操作,
第一重启单元,用于在切换至第二应用环境后,重启第一数据库,将第一数据库设置为只读,
第二切换单元,用于将运行环境由第二应用环境切换至第一应用环境,以开启服务器端对运行于第一应用环境的第一数据库的读操作,
第一同步单元,用于通过第一数据同步将第一数据库的数据同步至第二数据库,
第二重启单元,用于若第一数据同步完成,则重启第二数据库,将第二数据库设置为可读写;
第一切换模块200具体包括:
第三切换单元,用于若第一数据同步完成,则将运行环境由第一应用环境切换至第二应用环境,以将第二数据库切换为主数据库。
在一个实施例中,第一补录模块300具体包括:
第二关闭单元,用于关闭***;
第三关闭单元,用于关闭消息生产及推送功能;
第一开启单元,用于开启服务器端对目标消息的消费功能;
第一消费单元,用于通过服务器端消费消息中间件的第一消息,以执行第一数据更新操作对第二数据库进行第一补充更新操作。
在一个实施例中,第三数据同步模块500具体包括:
第二设置单元,用于运行于第二应用环境,将运行于第二应用环境的第二数据库设置为可读写,以开启服务器端对第二数据库的数据库操作功能,
第一关闭单元,用于若第二数据同步完成,则关闭服务器端对目标消息的消费功能,
第三设置单元,用于将第一数据库设置为只读,
第二拦截单元,用于开启***,利用***拦截服务器端对第一数据库和第二数据库的第二数据更新操作及通过服务器端对数据库的第二数据读操作,其中,每次第二数据更新操作为服务器端根据接收到的第二数据更新请求对运行于第一应用环境的第一数据库或运行于第二应用环境的第二数据库所执行的数据更新操作,每次第二数据读操作为服务器端根据接收到的第二数据读请求对第一数据库或第二数据库的数据读操作,
第二消息生产推送单元,用于根据每次拦截的第二数据更新操作生产对应的第二消息,将第二消息推送至消息中间件,
第二切换单元,用于将运行环境由第二应用环境切换至第一应用环境,以开启服务器端对运行于第一应用环境的第一数据库的读操作,
第二重启单元,用于在切换至第一应用环境后,重启第二数据库,将第二数据库设置为只读,
第一切换单元,用于将运行环境由第一应用环境切换至第二应用环境,以开启服务器端对运行于第二应用环境的第二数据库的读操作,
第二同步单元,用于通过第三数据同步将第二数据库的数据同步至第三数据库,
第三重启单元,用于若第三数据同步完成,则重启第三数据库,将第三数据库设置为可读写;
第二切换模块600包括:
第四切换单元,用于若第三数据同步完成,则将运行环境由第二应用环境切换至第一应用环境,将第三数据库设置为运行于第一应用环境的主数据库。
在一个实施例中,第二补录模块700具体包括:
第二关闭单元,用于关闭***;
第三关闭单元,用于关闭消息生产及推送功能;
第一开启单元,用于开启服务器端对目标消息的消费功能;
第二消费单元,用于通过服务器端消费消息中间件的第二消息,以执行第二数据更新操作对第三数据库进行第二补充更新操作。
在一个实施例中,第四切换单元,具体用于通过更改域名与数据库地址之间的映射关系使域名与第三数据库的地址形成映射关系,以将第三数据库设置为当前运行于第一应用环境的主数据库。
在一个实施例中,该装置还包括:
验证模块,用于对第三数据库进行业务验证;
回退模块,用于若验证未通过,则通过回退将第一数据库或第二数据库切换为主数据库。
其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。
关于数据库的升级装置的具体限定可以参见上文中对于数据库的升级方法的限定,在此不再赘述。上述数据库的升级装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图4为本申请一实施例中计算机设备的内部结构框图。如图4所示,该计算机设备包括通过***总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,该计算机设备的处理器用于提供计算和控制能力。存储器包括存储介质和内存储器。存储介质可以是非易失性存储介质,也可以是易失性存储介质。存储介质存储有操作***,还可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器实现数据库的升级方法。该内存储器为存储介质中的操作***和计算机可读指令的运行提供环境。该内存储器中也可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行数据库的升级方法。该计算机设备的网络接口用于与外部服务器通过网络连接通信。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令(例如计算机程序),处理器执行计算机可读指令时实现上述实施例中数据库的升级方法的步骤,例如图2所示的步骤S100至步骤S700及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机可读指令时实现上述实施例中数据库的升级装置的各模块/单元的功能,例如图3所示模块100至模块700的功能。为避免重复,这里不再赘述。
处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机可读指令和/或模块,处理器通过运行或执行存储在存储器内的计算机可读指令和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。
存储器可以集成在处理器中,也可以与处理器分开设置。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令被处理器执行时实现上述实施例中数据库的升级方法的步骤,例如图2所示的步骤S100至步骤S700及该方法的其它扩展和相关步骤的延伸。或者,计算机可读指令被处理器执行时实现上述实施例中数据库的升级装置的各模块/单元的功能,例如图3所示模块100至模块700的功能。为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指示相关的硬件来完成,所述的计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍速率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种数据库的升级方法,其特征在于,所述方法包括:
通过第一数据同步将第一数据库的数据同步至第二数据库,拦截在所述第一数据同步过程中服务器端对数据库的第一数据更新操作及通过在所述第一数据同步过程中所述服务器端对数据库的第一数据读操作,以保留所述服务器端对数据库的读操作;
若所述第一数据同步完成,则将所述第二数据库切换为主数据库,停止拦截操作,以恢复所述服务器端对所述第二数据库的数据库操作,所述数据库操作包括读操作和数据更新操作;
执行所述第一数据更新操作以对所述第二数据库进行第一补充更新;
通过第二数据同步将所述第一数据库的数据同步至已升级的第三数据库;
若所述第二数据同步完成,则通过第三数据同步将所述第二数据库的数据同步至已升级的第三数据库,拦截在所述第三数据同步过程中所述服务器端对数据库的第二数据更新操作及通过在所述第三数据同步过程中所述服务器端对数据库的第二数据读操作,以保留所述服务器端对数据库的读操作;
若所述第三数据同步完成,则将所述第三数据库切换为主数据库,停止拦截操作,以恢复所述服务器端对所述第三数据库的数据库操作;
执行所述第二数据更新操作以对所述第三数据库进行第二补充更新。
2.根据权利要求1所述的方法,其特征在于,所述通过第一数据同步将第一数据库的数据同步至第二数据库,拦截在所述第一数据同步过程中服务器端对数据库的第一数据更新操作及通过在所述第一数据同步过程中所述服务器端对数据库的第一数据读操作,以保留所述服务器端对数据库的读操作,包括:
运行于第一应用环境,将运行于所述第一应用环境的第一数据库设置为可读写,以开启服务器端对所述第一数据库的数据库操作功能,
关闭服务器端对目标消息的消费功能,
将第二数据库设置为只读,
开启***,利用所述***拦截所述服务器端对所述第一数据库和所述第二数据库的第一数据更新操作及通过所述服务器端对数据库的第一数据读操作,其中,每次所述第一数据更新操作为所述服务器端根据接收到的第一数据更新请求对运行于第一应用环境的第一数据库或运行于第二应用环境的第二数据库所执行的数据更新操作,每次所述第一数据读操作为所述服务器端根据接收到的第一数据读请求对所述第一数据库或第二数据库的数据读操作,
根据每次拦截的所述第一数据更新操作生产对应的第一消息,将所述第一消息推送至消息中间件,
将运行环境由所述第一应用环境切换至所述第二应用环境,以开启所述服务器端对运行于所述第二应用环境的第二数据库的读操作,
在切换至所述第二应用环境后,重启所述第一数据库,将所述第一数据库设置为只读,
将运行环境由所述第二应用环境切换至所述第一应用环境,以开启所述服务器端对运行于所述第一应用环境的第一数据库的读操作,
通过第一数据同步将所述第一数据库的数据同步至所述第二数据库,
若所述第一数据同步完成,则重启所述第二数据库,将所述第二数据库设置为可读写;
所述若所述第一数据同步完成,则将所述第二数据库切换为主数据库,包括:若所述第一数据同步完成,则将运行环境由所述第一应用环境切换至所述第二应用环境,以将所述第二数据库切换为主数据库。
3.根据权利要求2所述的方法,其特征在于,所述执行所述第一数据更新操作以对所述第二数据库进行第一补充更新,包括:
关闭所述***和消息生产及推送功能;
开启所述服务器端对所述目标消息的消费功能;
通过所述服务器端消费所述消息中间件的第一消息,以执行所述第一数据更新操作对所述第二数据库进行第一补充更新操作。
4.根据权利要求1所述的方法,其特征在于,所述若所述第二数据同步完成,则通过第三数据同步将所述第二数据库的数据同步至已升级的第三数据库,拦截在所述第三数据同步过程中所述服务器端对数据库的第二数据更新操作及通过在所述第三数据同步过程中所述服务器端对数据库的第二数据读操作,以保留所述服务器端对数据库的读操作,包括:
运行于第二应用环境,将运行于所述第二应用环境的第二数据库设置为可读写,以开启服务器端对所述第二数据库的数据库操作功能,
若所述第二数据同步完成,则关闭服务器端对目标消息的消费功能,
将所述第一数据库设置为只读,
开启***,利用所述***拦截所述服务器端对所述第一数据库和所述第二数据库的第二数据更新操作及通过所述服务器端对数据库的第二数据读操作,其中,每次所述第二数据更新操作为所述服务器端根据接收到的第二数据更新请求对运行于第一应用环境的第一数据库或运行于第二应用环境的第二数据库所执行的数据更新操作,每次所述第二数据读操作为所述服务器端根据接收到的第二数据读请求对所述第一数据库或第二数据库的数据读操作,
根据每次拦截的所述第二数据更新操作生产对应的第二消息,将所述第二消息推送至消息中间件,
将运行环境由所述第二应用环境切换至所述第一应用环境,以开启所述服务器端对运行于所述第一应用环境的第一数据库的读操作,
在切换至所述第一应用环境后,重启所述第二数据库,将所述第二数据库设置为只读,
将运行环境由所述第一应用环境切换至所述第二应用环境,以开启所述服务器端对运行于所述第二应用环境的第二数据库的读操作,
通过第三数据同步将所述第二数据库的数据同步至所述第三数据库,
若所述第三数据同步完成,则重启所述第三数据库,将所述第三数据库设置为可读写;
所述若所述第三数据同步完成,则将所述第三数据库切换为主数据库,包括:若所述第三数据同步完成,则将运行环境由所述第二应用环境切换至所述第一应用环境,将所述第三数据库设置为运行于所述第一应用环境的主数据库。
5.根据权利要求4所述的方法,其特征在于,所述执行所述第二数据更新操作以对所述第三数据库进行第二补充更新,包括:
关闭所述***和消息生产及推送功能;
开启所述服务器端对所述目标消息的消费功能;
通过所述服务器端消费所述消息中间件的第二消息,以执行所述第二数据更新操作对所述第三数据库进行第二补充更新操作。
6.根据权利要求4所述的方法,其特征在于,所述将所述第三数据库设置为运行于所述第一应用环境的主数据库,包括:
通过更改域名与数据库地址之间的映射关系使所述域名与所述第三数据库的地址形成映射关系,以将所述第三数据库设置为当前运行于所述第一应用环境的主数据库。
7.根据权利要求1所述的方法,其特征在于,在所述第二补充更新完成后,所述方法还包括:
对所述第三数据库进行业务验证;
若验证未通过,则通过回退将所述第一数据库或第二数据库切换为主数据库。
8.一种数据库的升级装置,其特征在于,所述装置包括:
第一数据同步模块,用于通过第一数据同步将第一数据库的数据同步至第二数据库,拦截在所述第一数据同步过程中服务器端对数据库的第一数据更新操作及通过在所述第一数据同步过程中所述服务器端对数据库的第一数据读操作,以保留所述服务器端对数据库的读操作;
第一切换模块,用于若所述第一数据同步完成,则将所述第二数据库切换为主数据库,停止拦截操作,以恢复所述服务器端对所述第二数据库的数据库操作,所述数据库操作包括读操作和数据更新操作;
第一补录模块,用于执行所述第一数据更新操作以对所述第二数据库进行第一补充更新;
第二数据同步模块,用于通过第二数据同步将所述第一数据库的数据同步至已升级的第三数据库;
第三数据同步模块,用于若所述第二数据同步完成,则通过第三数据同步将所述第二数据库的数据同步至已升级的第三数据库,拦截在所述第三数据同步过程中所述服务器端对数据库的第二数据更新操作及通过在所述第三数据同步过程中所述服务器端对数据库的第二数据读操作,以保留所述服务器端对数据库的读操作;
第二切换模块,用于若所述第三数据同步完成,则将所述第三数据库切换为主数据库,停止拦截操作,以恢复所述服务器端对所述第三数据库的数据库操作;
第二补录模块,用于执行所述第二数据更新操作以对所述第三数据库进行第二补充更新。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时执行如权利要求1-7任一项所述的数据库的升级方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时,使得所述处理器执行如权利要求1-7任一项所述的数据库的升级方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210709062.4A CN114896261B (zh) | 2022-06-22 | 2022-06-22 | 数据库的升级方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210709062.4A CN114896261B (zh) | 2022-06-22 | 2022-06-22 | 数据库的升级方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114896261A true CN114896261A (zh) | 2022-08-12 |
CN114896261B CN114896261B (zh) | 2024-04-05 |
Family
ID=82728634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210709062.4A Active CN114896261B (zh) | 2022-06-22 | 2022-06-22 | 数据库的升级方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114896261B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213764A (zh) * | 2018-08-20 | 2019-01-15 | 中国平安财产保险股份有限公司 | 数据仓库内数据处理方法、装置、计算机设备和存储介质 |
CN111651296A (zh) * | 2020-04-30 | 2020-09-11 | 中国平安财产保险股份有限公司 | 数据删除操作的拦截备份方法、装置、设备及存储介质 |
CN112256676A (zh) * | 2020-11-11 | 2021-01-22 | 腾讯科技(深圳)有限公司 | 一种数据库迁移的方法、装置、设备和介质 |
CN112487097A (zh) * | 2020-12-11 | 2021-03-12 | 杭州安恒信息技术股份有限公司 | 一种分布式领域数据同步的方法、***及设备 |
CN112631627A (zh) * | 2020-12-10 | 2021-04-09 | 武汉联影医疗科技有限公司 | 软件升级方法、装置、计算机设备和存储介质 |
CN112783868A (zh) * | 2021-02-10 | 2021-05-11 | 中国工商银行股份有限公司 | 分布式数据库表结构灰度升级方法、装置及*** |
CN113590643A (zh) * | 2021-09-28 | 2021-11-02 | 太平金融科技服务(上海)有限公司深圳分公司 | 基于双轨数据库的数据同步方法、装置、设备和存储介质 |
-
2022
- 2022-06-22 CN CN202210709062.4A patent/CN114896261B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213764A (zh) * | 2018-08-20 | 2019-01-15 | 中国平安财产保险股份有限公司 | 数据仓库内数据处理方法、装置、计算机设备和存储介质 |
CN111651296A (zh) * | 2020-04-30 | 2020-09-11 | 中国平安财产保险股份有限公司 | 数据删除操作的拦截备份方法、装置、设备及存储介质 |
CN112256676A (zh) * | 2020-11-11 | 2021-01-22 | 腾讯科技(深圳)有限公司 | 一种数据库迁移的方法、装置、设备和介质 |
CN112631627A (zh) * | 2020-12-10 | 2021-04-09 | 武汉联影医疗科技有限公司 | 软件升级方法、装置、计算机设备和存储介质 |
CN112487097A (zh) * | 2020-12-11 | 2021-03-12 | 杭州安恒信息技术股份有限公司 | 一种分布式领域数据同步的方法、***及设备 |
CN112783868A (zh) * | 2021-02-10 | 2021-05-11 | 中国工商银行股份有限公司 | 分布式数据库表结构灰度升级方法、装置及*** |
CN113590643A (zh) * | 2021-09-28 | 2021-11-02 | 太平金融科技服务(上海)有限公司深圳分公司 | 基于双轨数据库的数据同步方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114896261B (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101847148B (zh) | 实现应用高可用性的方法和装置 | |
US7089550B2 (en) | Method and system for performing SW upgrade in a real-time system | |
WO2022111097A1 (zh) | 一种文件更新方法及装置、设备、存储介质 | |
CN109710317B (zh) | ***启动方法、装置、电子设备及存储介质 | |
JP2002507022A (ja) | ソフトウェア更新のための状態コピー方法 | |
US11995453B2 (en) | Method and apparatus for generating image file and computer-readable storage medium | |
CN109639818B (zh) | 一种云环境下的服务发现方法、装置、服务器和存储介质 | |
CN106293846B (zh) | 模拟处理器的升级方法及装置 | |
CN112434008A (zh) | 分布式数据库升级方法、设备及介质 | |
CN110348826A (zh) | 异地多活容灾方法、***、设备及可读存储介质 | |
CN104516744A (zh) | 软件更新方法及*** | |
CN113900863A (zh) | 一种对PostgreSQL服务故障自动转移的方法 | |
CN114896261A (zh) | 数据库的升级方法、装置、计算机设备和存储介质 | |
CN101252464A (zh) | 双机***和双机在线升级的方法 | |
CN111813606A (zh) | 一种双节点虚拟机容错的方法、***、设备及介质 | |
CN110489491A (zh) | 一种适用于a/b网双集群的全量数据同步装置 | |
CN106909410A (zh) | 一种用于服务器***的更新方法以及服务器*** | |
CN112632032B (zh) | 一种数据迁移方法、装置、存储介质及终端设备 | |
AU2021240195A1 (en) | Data processing method, apparatus, system and device and computer-readable storage medium | |
JP2001154896A (ja) | 計算機およびそのファイル更新方法 | |
JP4985642B2 (ja) | 初期診断プログラムの管理装置、管理方法およびプログラム | |
CN109960522B (zh) | 一种软件升级方法及装置 | |
JP2001067214A (ja) | コンピュータシステム及びプログラムファイル更新方法 | |
WO2023050947A1 (zh) | 网络升级方法、电子设备及存储介质 | |
CN114896258B (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 |