一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据库升级方法与流程

2022-06-11 08:35:59 来源:中国专利 TAG:


1.本发明涉及数据库升级技术领域,尤其涉及一种数据库升级方法。


背景技术:

2.数据库升级是数据库使用中的一个常见问题。随着数据库版本的更新,用户想要获得新版数据库的新功能,就需要将旧版本数据库升级到新版本数据库,在数据库更新时,为了保护用户数据的安全以及保证用户业务的持续顺利进行,需要将旧数据迁移到新版本数据库中。
3.传统的数据库升级是一个数据导入和导出的过程,即先将旧数据库的数据导出为sql脚本(或者为其他形式),然后建立新版本数据库,最后将旧库版本的数据导入到新版本的数据库完成版本的升级,导入的过程即为执行sql脚本重建旧库数据的过程。在实际应用中,这种升级机制存在以下不足:1)升级过程涉及数据库的所有数据,工作量大,升级过程占用资源较多;2)升级步骤繁琐,需要开发或者管理员对升级过程非常熟悉;3)一些数据库信息数据如oid(对象标识符)等在经过导出和导入后会被更改。
4.因此,如何提供一种数据库升级方法,在简化升级过程的同时,降低开发以及运行维护成本,成为亟待解决的技术问题。


技术实现要素:

5.有鉴于此,为了解决传统的数据库升级的不足,本发明提供了一种数据库升级方法。
6.一方面,本发明提供一种数据库升级方法,包括:
7.步骤s1:将升级包放到待升级的数据节点,实现升级准备;
8.步骤s2:根据升级准备,对数据库执行升级;
9.步骤s3:对数据库是否升级成功进行验证,并根据验证结果决定是否提交升级。
10.进一步地,本发明的数据库升级方法还包括:在数据库升级成功后,可以通过手动的回滚,使数据库所有信息恢复到旧库状态。
11.进一步地,步骤s2中,根据升级准备,对数据库执行升级,包括:
12.步骤s201:寻找能够执行升级sql脚本的主节点;
13.步骤s202:备份每个节点上的系统表、配置文件;
14.步骤s203:筛选并汇集需要执行的脚本,将主节点设置为升级模式;
15.步骤s204:根据筛选并汇集得到的脚本,更新数据库,完成执行升级。
16.进一步地,步骤s201中,当数据库部署为单节点时,将单节点自身作为主节点;当数据库部署为高可用时,将主库作为主节点。
17.进一步地,步骤s202中,备份每个节点上的系统表、配置文件,包括:在每个节点上,遍历所有数据库,将其保存的系统表进行备份;对依赖于各自节点的配置文件进行备份。
18.进一步地,步骤s203中,筛选并汇集需要执行的脚本,包括:
19.使用内核版本号对数据库内核进行升级的管理,当功能的更新涉及到系统表结构和内容的更改时,为该功能编写相应的脚本,所述脚本包括升级脚本和回滚脚本,脚本的名称包含内核版本号,根据新版数据库和旧版数据库的内核版本号筛选出需要执行的脚本;
20.按内核版本号的递增关系从小到大地将升级脚本的内容汇集到一个sql文件中;按内核版本号的递增关系从大到小地将回滚脚本的内容汇集到一个sql文件中,采用事务块分别对所述sql文件进行包裹以保证执行的原子性。
21.进一步地,步骤s204中,根据筛选并汇集得到的脚本,更新数据库,完成执行升级,包括:
22.对数据库依次执行前置回滚脚本和前置升级脚本;前置回滚脚本和前置升级脚本各自包含maindb和otherdb脚本,其中,maindb脚本仅在postgres数据库中执行,otherdb脚本在除postgres数据库外的所有数据库中执行;
23.通过软连接管理二进制文件,将软连接指向新版数据库的二进制文件,更新数据库二进制文件,并重启数据库管理系统;
24.对数据库依次执行后置回滚脚本和后置升级脚本;后置回滚脚本和后置升级脚本各自包含maindb和otherdb脚本,其中,maindb脚本仅在postgres数据库中执行,otherdb脚本在除postgres数据库外的所有数据库执行。
25.进一步地,步骤s2中,根据升级准备,对数据库执行升级,还包括当数据库执行升级的过程出现错误导致不能再进行升级时,可以根据升级的过程和备份的信息逐步回退实现自动回滚到升级前的状态,具体的,包括:
26.当回滚脚本执行成功,系统表的恢复仅在主库执行;
27.当回滚脚本执行失败,使用在每个节点上备份的物理文件在各自节点以覆盖的方式对系统表进行恢复;使用在每个节点上备份的物理文件在每个节点以覆盖的方式对依赖于各自节点的配置信息的回退进行恢复。
28.另一方面,本发明还提供一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现所述方法的步骤。
29.最后,本发明还他提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现所述方法的步骤。
30.本发明的数据库升级方法与传统的升级方式相比,涉及的范围更小、步骤简单、占用资源少、执行结果更加完善,能够有效的节约开发和运维成本。
附图说明
31.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
32.图1为根据本发明示例性第一实施例的数据库升级方法的方法流程图。
33.图2为根据本发明示例性第一实施例的数据库升级方法的执行流程图。
34.图3为根据本发明示例性第二实施例的数据库升级方法中执行升级的方法流程
图。
35.图4为根据本发明示例性第二实施例的数据库升级方法中执行升级的执行流程图。
具体实施方式
36.下面结合附图对本发明实施例进行详细描述。
37.需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合;并且,基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
38.需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
39.本发明的理论技术简述如下:
40.数据库升级的方法可划分成两大类,第一类为可以通过直接替换数据库的二进制文件就能达到升级目的的数据库升级;第二类是在第一类的基础上还需要修改数据库数据才能达到升级的目的的数据库升级。修改数据库数据的原因在于,当新版数据库中系统表的结构和内容变更时,旧版数据库的数据与新版数据库的数据结构和内容会发生不兼容,造成通过直接替换数据库的二进制文件无法完成升级的情况。从优化升级过程的角度,如何通过原地升级的方式对需要修改数据的数据库升级,是在简化升级、降低开发以及运行维护成本的重要途经。
41.opengauss可以通过支持升级模式开关upgrade_mode提供修改系统表的方式。在该模式下不仅可以通过sql语句对系统表的结构和内容进行更改,还可以为通过sql语句新建的对象指定使用的oid。这样对于在新版数据库中引进的新功能,就可以在旧版数据库的基础上通过二进制文件的替换和sql脚本的执行达到升级的目的。
42.本发明涉及的名词解释如下:
43.原地升级:相对于传统导入导出进行数据库升级的方式,原地升级不需要对数据进行导入导出,在原有的数据上直接进行升级操作。
44.opengauss:一种内核源自postgresql的开源关系型数据库,采用木兰宽松许可证协议发行,具有高性能、高可用、高安全、易运维和全开放的特点,面向大并发、大数据量、以以联机事务处理为主的交易型应用以及传感监控设备多、采样率高、数据存储为追加模型、操作和分析并重的物联网数据应用场景。
45.sql:结构化查询语言(structured query language),简称sql,一种高级的非过程化的数据库查询和程序设计语言,具有数据定义、数据操纵和数据控制的功能,用于存取数据以及查询、更新和管理关系数据库系统。
46.oid:对象标识符(object identifier),简称oid,是与对象相关联的用来无歧义
地标识对象的全局唯一的值,可保证对象在通信与信息处理中正确地定位和管理。通俗地讲,oid就是网络通信中对象的身份证。
47.内核版本号:形式为{内核大版本号}.{内核小版本号},用于表明系统表结构和内容上的更改,单调递增。
48.脚本:涉及有升级脚本和回滚脚本,这两大类脚本说明如下,
49.表1
[0050][0051]
需要说明的是,前置脚本为升级到新版数据库二进制前需要执行的脚本,后置脚本为升级到新版数据库二进制后需要执行的脚本。脚本的命名包括前缀和后缀两部分,脚本命名的前缀见表1,脚本命名的后缀格式为:{内核大版本号}_{内核小版本号}.sql。当升级的系统表是数据库之间共享的,仅在maindb类型的脚本中编写升级sol/回滚sql(opengauss中maindb为postgres数据库,其余的所有数据库称为otherdb);当升级的系统表不是数据库之间共享的,在maindb和otherdb中编写升级sql/回滚sql。
[0052]
主库、备库:使用高可用时主库只有一个备库可有多个,主库用于客户业务,备库用于对主库进行数据备份;当不使用高可用时(单节点),此时只有主库没有备库。
[0053]
图1为根据本发明示例性第一实施例的数据库升级方法的方法流程图。如图1所示,本实施例中数据库升级方法包括:
[0054]
步骤s1:将升级包放到待升级的数据节点,实现升级准备;
[0055]
步骤s2:根据升级准备,对数据库执行升级;
[0056]
步骤s3:对数据库是否升级成功进行验证,并根据验证结果决定是否提交升级。
[0057]
图2为本发明示例性第一实施例的数据库升级方法的执行流程图,图2为图1所示数据库升级方法的优选实施方式。由图2可见,本示例性实施例中的数据库升级方法,当数据库升级成功时,提交升级,此时不支持自动回滚;当数据库升级不成功时,回滚版本;在数据库升级成功后,可以通过手动的回滚,使数据库所有信息恢复到旧库状态。
[0058]
图3为根据本发明示例性第二实施例的数据库升级方法的方法流程图。图3为图1所示数据库升级方法的优选实施方式。如图3所示,本实施例数据库升级方法,对数据库执行升级,包括:
[0059]
步骤s201:寻找能够执行升级sql脚本的主节点;
[0060]
步骤s202:备份每个节点上的系统表、配置文件;
[0061]
步骤s203:筛选并汇集需要执行的脚本,将主节点设置为升级模式;
[0062]
步骤s204:根据筛选并汇集得到的脚本,更新数据库,完成执行升级;
[0063]
具体的,步骤s201中,当数据库部署为单节点时,将单节点自身作为主节点;当数据库部署为高可用时(即存在主库/备库/级联备库),将主库作为主节点。
[0064]
步骤s202中,备份每个节点上的系统表、配置文件包括:在每个节点上,遍历所有数据库,将其保存的系统表进行备份;对依赖于各自节点的配置文件进行备份。
[0065]
步骤s203中,筛选并汇集需要执行的脚本,包括:
[0066]
为了便于升级的管理,使用内核版本号对数据库内核进行升级的管理,当功能的更新涉及到系统表结构和内容的更改时,为该功能编写相应的脚本,所述脚本包括升级脚本和回滚脚本,脚本的名称包含内核版本号,升级时根据新版数据库和旧版数据库的内核版本号筛选出需要执行的脚本;
[0067]
按内核版本号的递增关系从小到大地将升级脚本的内容汇集到一个sql文件中;按内核版本号的递增关系从大到小地将回滚脚本的内容汇集到一个sql文件中,采用事务块分别对所述sql文件进行包裹以保证执行的原子性。
[0068]
步骤s204中,根据筛选并汇集得到的脚本,更新数据库,完成执行升级,包括:
[0069]
对数据库依次执行前置回滚脚本和前置升级脚本;前置回滚脚本和前置升级脚本各自包含maindb和otherdb脚本,其中,maindb脚本仅在postgres数据库中执行,otherdb脚本在除postgres数据库外的所有数据库中执行;
[0070]
通过软连接管理二进制文件,将软连接指向新版数据库的二进制文件,更新数据库二进制文件,并重启数据库管理系统;
[0071]
对数据库依次执行后置回滚脚本和后置升级脚本;后置回滚脚本和后置升级脚本各自包含maindb和otherdb脚本,其中,maindb脚本仅在postgres数据库中执行,otherdb脚本在除postgres数据库外的所有数据库执行。
[0072]
步骤s2中,根据升级准备,对数据库执行升级,还包括当数据库执行升级的过程出现错误导致不能再进行升级时,可以根据升级的过程和备份的信息逐步回退实现自动回滚到升级前的状态,具体的,包括:
[0073]
当回滚脚本执行成功,系统表的恢复仅在主库执行;
[0074]
当回滚脚本执行失败,使用在每个节点上备份的物理文件在各自节点以覆盖的方式对系统表进行恢复;使用在每个节点上备份的物理文件在每个节点以覆盖的方式对依赖于各自节点的配置信息的回退进行恢复。回滚的实现主要依赖数据库数据的原地备份,备份的内容包括系统表、配置信息等,配置信息包括postgresql.conf、pg_hba.conf等,并不需要备份所有内容。
[0075]
图4为本发明示例性第二实施例的数据库升级方法的执行流程图,图3所示数据库升级方法中执行升级的方法按照图4所示流程具体执行。
[0076]
本发明还提供一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现所述方法的步骤。
[0077]
本发明还提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现所述方法的步骤。
[0078]
该介质以及计算机设备具有上述数据库升级方法相应的技术效果。
[0079]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献