CN113296804B - 升级数据库的方法以及装置 - Google Patents

升级数据库的方法以及装置 Download PDF

Info

Publication number
CN113296804B
CN113296804B CN202010906338.9A CN202010906338A CN113296804B CN 113296804 B CN113296804 B CN 113296804B CN 202010906338 A CN202010906338 A CN 202010906338A CN 113296804 B CN113296804 B CN 113296804B
Authority
CN
China
Prior art keywords
library
version
master library
low
version master
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
CN202010906338.9A
Other languages
English (en)
Other versions
CN113296804A (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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing 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 Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN202010906338.9A priority Critical patent/CN113296804B/zh
Publication of CN113296804A publication Critical patent/CN113296804A/zh
Application granted granted Critical
Publication of CN113296804B publication Critical patent/CN113296804B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例提供升级数据库的方法以及装置,其中所述升级数据库的方法包括:通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件以及所述只读备库在所述逻辑备份时的全局事务标识符的值;将所述备份文件导入所述高版本主库,以及,根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符;将所述高版本主库设置为所述低版本主库的备库,以使所述高版本主库利用设置的全局事务标识符复制所述低版本主库的更新;在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。

Description

升级数据库的方法以及装置
技术领域
本说明书实施例涉及数据库技术领域,特别涉及一种升级数据库的方法。本说明书一个或者多个实施例同时涉及一种升级数据库的装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
由于弥补安全漏洞等因素,数据库版本不断升级。例如,目前,MySQL 5.6版和5.7版本是使用最多的版本。但是,由于5.6版存在一些安全漏洞,官方已停止维护,并已推出了MySQL 8.0,提供了大量新特性、性能优化和安全特性。
目前,由于版本兼容性等原因,升级数据库暂无通用的热升级方案,一般是采用冷升级方案。但是在冷升级过程中,数据库须停止服务,会降低可用性。
发明内容
有鉴于此,本说明书施例提供了一种升级数据库的方法。本说明书一个或者多个实施例同时涉及一种升级数据库的装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种升级数据库的方法,包括:通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件以及所述只读备库在所述逻辑备份时的全局事务标识符的值;将所述备份文件导入所述高版本主库,以及,根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符;将所述高版本主库设置为所述低版本主库的备库,以使所述高版本主库利用设置的全局事务标识符复制所述低版本主库的更新;在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。
可选地,所述高版本主库在创建时未设置备库;所述根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符包括:在将所述备份文件导入所述高版本主库之前,在所述高版本主库执行清理数据库日志及重置全局事务标识符为空的指令;在所述备份文件导入所述高版本主库的情况下,利用所述备份文件包含的全局事务标识符的值,为所述高版本主库的数据库日志设置对应的全局事务标识符;所述方法还包括:在所述高版本主库与所述低版本主库的更新同步的情况下,为所述高版本主库建立备库。
可选地,所述将备份文件导入所述高版本主库包括:将所述备份文件上传到存储系统;在所述备份文件上传到所述存储系统的情况下,从所述存储系统下载所述备份文件到所述高版本主库所在机器;在所述高版本主库执行针对所述备份文件的导入命令。
可选地,所述在高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库包括:从所述高版本主库读取出已应用的低版本主库的日志的位点信息;从所述低版本主库读取出所述低版本主库的日志的最新位点信息;通过将所述高版本主库已应用的低版本主库的日志的位点信息与所述低版本主库的日志的最新位点信息进行比较,判断所述高版本主库与所述低版本主库是否接近更新同步或达到更新同步;如果否,返回到所述从高版本主库读取出已应用的低版本主库的日志的位点信息的步骤;如果接近更新同步,将所述低版本主库设置为只读模式,返回到所述从高版本主库读取出已应用的低版本主库的日志的位点信息的步骤;如果达到更新同步,将指向所述低版本主库的路由切换到所述高版本主库。
可选地,还包括:在对所述只读备库进行逻辑备份之前,停止应用低版本主库的日志;在对所述只读备库完成逻辑备份之后,开启应用低版本主库的日志。
可选地,所述在高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库包括:在所述高版本主库与所述低版本主库的更新同步的情况下,通过代理层将路由切换到所述高版本主库;或者,在所述高版本主库与所述低版本主库的更新同步的情况下,将所述低版本主库的域名修改为指向所述高版本主库。
可选地,还包括:在对所述低版本主库的只读备库进行所述逻辑备份之前,关闭所述低版本主库清理本地日志的功能。
根据本说明书实施例的第二方面,提供了一种升级数据库的装置,包括:备份模块,被配置为通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件以及所述只读备库在所述逻辑备份时的全局事务标识符的值;导入模块,被配置为将所述备份文件导入所述高版本主库,以及,根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符;复制更新模块,被配置为将所述高版本主库设置为所述低版本主库的备库,以使所述高版本主库利用设置的全局事务标识符复制所述低版本主库的更新;路由切换模块,被配置为在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件以及所述只读备库在所述逻辑备份时的全局事务标识符的值;将所述备份文件导入所述高版本主库,以及,根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符;将所述高版本主库设置为所述低版本主库的备库,以使所述高版本主库利用设置的全局事务标识符复制所述低版本主库的更新;在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意一项所述升级数据库的方法的步骤。
本说明书一个实施例提供了升级数据库的方法,该方法通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件,因为在备份期间备库是只读状态,不影响低版本主库的写操作,不必中断服务。因为高版本主库对低版本只读备库逻辑备份得到的备份文件具有兼容性,因此,可以将备份文件导入高版本主库。而且,由于根据只读备库备份时的全局事务标识符的值设置高版本主库的全局事务标识符,使备份文件中的SQL语句内容与高版本主库的全局事务标识符所代表的数据状态相一致,从而在高版本主库设置为低版本主库的备库的情况下,可以利用该全局事务标识符复制低版本主库的更新。从而,在高版本主库与低版本主库的更新同步的情况下,可以将指向低版本主库的路由切换到高版本主库,完成数据库热升级。可见,本说明书实施例提供的方法通过导入具有兼容性的备份文件与更新复制相结合的方式,实现了版本的热升级,保证了读写服务不间断,即高可用性。
附图说明
图1是本说明书一个实施例提供的一种升级数据库的方法的流程图;
图2是本说明书一个实施例提供的数据库结构示意图;
图3是本说明书一个实施例提供的一种升级数据库的方法的处理过程流程图;
图4是本说明书一个实施例提供的数据库结构示意图;
图5是本说明书一个实施例提供的一种升级数据库的装置的结构示意图;
图6是本说明书另一个实施例提供的一种升级数据库的装置的结构示意图;
图7是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在本说明书中,提供了一种升级数据库的方法,本说明书同时涉及一种升级数据库的装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一个实施例提供的一种升级数据库的方法的流程图,包括步骤102至步骤108。
步骤102:通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件以及所述只读备库在所述逻辑备份时的全局事务标识符的值。
逻辑备份,是指从数据库中导出与所存储数据等价的SQL语句集合到备份文件。逻辑恢复,是指将逻辑备份文件导入到数据库中,恢复原来的数据状态。由于SQL语法变化通常很小,不同版本的数据库对其具有良好的兼容性。例如,假设只读备库为mysql 5.6,则可以使用mysqldump命令对只读备库进行逻辑备份并使备份文件中包含只读备库在逻辑备份时的全局事务标识符的值。
全局事务标识符GTID,每个已提交的事务在当前MySQL集群内的唯一ID。GTID会被持续写入到数据库的binlog中。在逻辑备份时,可以通过设置适当参数将GTID写入到备份文件中。
步骤104:将所述备份文件导入所述高版本主库,以及,根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符。
步骤106:将所述高版本主库设置为所述低版本主库的备库,以使所述高版本主库利用设置的全局事务标识符复制所述低版本主库的更新。
步骤108:在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。
可见,由于该方法在高版本主库导入低版本主库的只读备库的逻辑备份文件,在低版本主库持续提供服务的过程中,即可使高版本主库达到只读备库逻辑备份时的状态,又将低版本主库与高版本主库建立主备复制关系来追赶低版本主库的更新,在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。因此,通过导入具有兼容性的备份文件与更新复制相结合的方式,在数据库升级过程中,能够持续提供服务或停止服务的时间占比很低,实现了版本的热升级,保证了读写服务不间断,即高可用性。
为了避免设置全局事务标识符失败,在高版本主库设置全局事务标识符之前,需要执行清理数据库日志及重置全局事务标识符为空的指令。而在已经有备库的情况下,执行清理数据库日志及重置全局事务标识符为空的指令,会影响高版本主库的备库的复制。因此,本说明书一个或多个实施例中,高版本主库在创建时未设置备库,在为所述高版本主库的数据库日志设置对应的全局事务标识符之后,才为高版本主库建立备库,从而避免影响高版本主库的备库的复制。具体地,例如,所述根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符包括:在将所述备份文件导入所述高版本主库之前,在所述高版本主库执行清理数据库日志及重置全局事务标识符为空的指令;在所述备份文件导入所述高版本主库的情况下,利用所述备份文件包含的全局事务标识符的值,为所述高版本主库的数据库日志设置对应的全局事务标识符。所述方法还包括:在为所述高版本主库的数据库日志设置对应的全局事务标识符之后,为所述高版本主库建立备库。
本说明书一个或多个实施例中,为了保证数据库数据的持久性以及数据库安全性,还可以在只读备库与高版本主库之间设置存储系统,从而通过存储系统保证数据的持久性,并且避免高版本主库对只读备库的暴露,保证了数据库的安全性。具体地,例如,所述将备份文件导入所述高版本主库可以包括:将所述备份文件上传到存储系统;在所述备份文件上传到所述存储系统的情况下,从所述存储系统下载所述备份文件到所述高版本主库所在机器;在所述高版本主库执行针对所述备份文件的导入命令。
本说明书一个或多个实施例中,为了保证用户使用的连续性,所述在高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库可以包括:从所述高版本主库读取出已应用的低版本主库的日志的位点信息;从所述低版本主库读取出所述低版本主库的日志的最新位点信息;通过将所述高版本主库已应用的低版本主库的日志的位点信息与所述低版本主库的日志的最新位点信息进行比较,判断所述高版本主库与所述低版本主库是否接近更新同步或达到更新同步;如果否,返回到所述从高版本主库读取出已应用的低版本主库的日志的位点信息的步骤;如果接近更新同步,将所述低版本主库设置为只读模式,返回到所述从高版本主库读取出已应用的低版本主库的日志的位点信息的步骤;如果达到更新同步,将指向所述低版本主库的路由切换到所述高版本主库。
日志位点:MySQL数据库的日志称为binlog。binlog的文件编号和文件内偏移量称为“位点”。在该实施例中,由于在接近更新同步的情况下,将低版本主库设置为只读模式,从而可以在即将完成升级的情况下可以暂停写入数据,尽快完成更新同步的轮询,保证用户使用的连续性。
本说明书一个或多个实施例中,为了确保逻辑备份时,写入备份文件的全局事务标识符所代表的数据状态与备份文件中的SQL语句内容保持一致,可以在对所述只读备库进行逻辑备份之前,停止应用低版本主库的日志,在对所述只读备库完成逻辑备份之后,开启应用低版本主库的日志。在该实施例中,由于在逻辑备份前后停止、开启应用低版本主库的日志,从而避免在逻辑备份过程中应用低版本主库的日志导致的数据变化,使全局事务标识符代表的数据状态与备份文件对应的数据状态相对应。
本说明书一个或多个实施例中,为了保证用户使用的连续性,还进一步为所述高版本主库设置与所述低版本主库相同的用户配置信息。在该实施例中,由于为高版本主库设置与低版本主库相同的用户配置信息,使得升级后的高版本主库能够直接实现低版本主库的用户管控功能,保证用户使用的连续性。
本说明书一个或多个实施例中,为了避免低版本主库清理本地日志造成高版本主库更新同步失败,所述方法还在对低版本主库的只读备库进行逻辑备份之前,关闭所述低版本主库清理本地日志的功能。
为了使本说明书实施例提供的方法切换路由的实施方式更加易于理解,下面,结合图2所示数据库结构示意图进行说明。例如,如图2所示,为了实现数据库的高可用性,通常会采用主备模式。一个数据库实例可以包括一个主库和一个备库或多个备库。其中主库对外提供读写服务。主库和备库之间建立了复制关系,备库会异步复制并应用主库的更新。在数据链路上,可以设置数据链路代理层,作为客户端到主库的连接代理。该代理层的作用可以包括:屏蔽主库地址信息,提供虚拟IP地址(Virtual IP Address);当主库故障时,迅速将路由切换到备库。当然也可以没有代理层,通过DNS直接指向主库地址;切换时需修改DNS指向备库地址。可见,根据数据库的结构,可以在高版本主库与低版本主库的更新同步的情况下,通过代理层将路由切换到所述高版本主库;或者,在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的域名修改为指向所述高版本主库。
下述结合附图3,以本说明书提供的升级数据库的方法在MySQL数据库的应用为例,对所述升级数据库的方法进行进一步说明。其中,图3示出了本说明书一个实施例提供的一种升级数据库的方法的处理过程流程图,具体步骤包括步骤302至步骤330。
步骤302:新建高版本实例作为目标实例,所述目标实例包括主库,未设置备库。
例如,基于图4所示数据库结构,新建的目标实例如图4所示可以与存储系统如FTP连接。
在该步骤中,可以同时为目标实例设置用户配置项如账号信息、白名单等,且与准备升级的低版本实例即源实例保持一致。此时目标实例中未插入数据,且未设置备库。该步骤中目标实例未设置备库,从而可以避免目标实例的主备复制受后续要执行的“resetmaster”命令影响。
步骤304:关闭源实例清理本地日志binlog的功能。
binlog:是记录MySQL数据库增量更新的二进制日志文件。其文件名和位点信息代表了确定的数据状态。
在该步骤中,通过关闭清理日志的功能,能够保留源实例最近的binlog,使得后续步骤中目标实例可以复制这些binlog,以实现异步追赶。
步骤306:使用mysql 5.6的mysqldump命令对源实例备库进行逻辑备份。
例如,所述mysqldump命令的参数如下:
“/u01/mysql56/bin/mysqldump-h<备库IP>-P<备库port>-u<用户名>-p<密码>
--lock-for-backup
--single-transaction
--dump-slave=2
--quick
--triggers--routines--events
--all-databases>dump.sql”
其中:
“--lock-for-backup”和“--single-transaction”共同保证数据在备份过程中不被修改,库置为只读状态;
“--dump-slave=2”自动在备份前关闭和在备份后开启sql_thread,保证备份文件中的SQL语句内容与高版本主库的全局事务标识符所代表的数据状态相一致;
“--quick”对大表进行加速。
“--triggers--routines--events”表示同时导出触发器、存储过程、定时任务等;
“--all-databases”表示导出用户的所有数据。
“dump.sql”表示备份文件名,此为示例,可以是其他名称。
步骤308:将备份文件上传至存储系统,如FTP、OSS等。
例如,如图4所示,包含全局事务标识符的值的备份文件从源实例的备库上传到FTP。
步骤310:登录目标实例,执行“reset master”命令。
在该步骤中,通过执行“reset master”命令,清理数据库日志及重置全局事务标识符为空。通过清理数据库日志及重置全局事务标识符为空,使得备份文件包含的“SET@@GLOBAL.GTID_PURGED“语句,在备份文件被导入时,能够成功设置GTID。
步骤312:从存储系统下载备份文件到目标实例所在机器上。
例如,如图4所示,包含全局事务标识符的值的备份文件从FTP下载到目标实例主库。
步骤314:通过执行sql命令“mysql-h<目标实例IP>-P<目标实例port>-u<用户名>-p<密码><dump.sql”,将备份文件导入到目标实例。
其中,“dump.sql”是步骤309生成的备份文件。
步骤316:通过执行“change master to<源实例主库IP>:<源实例主库Port>,master_auto_posotion=1;”,将源实例主库和目标实例主库建立复制关系。
例如,如图4所示,源实例主库与目标实例主库建立实时复制关系。该步骤后,目标实例主库将异步追赶源实例的更新。在主从复制过程中,一般备库会从设置的GTID开始,从主库获取日志、并在本地应用日志。例如,可以通过执行slow slave status命令返回的Relay_Master_Log_File和Exec_Master_Log_Pos等字段来查看备库复制日志、应用日志的进度。
步骤318:通过在目标实例主库执行sql语句“show slave status”,读取字段“Relay_Master_Log_File”和“Exec_Master_Log_Pos”。
步骤320:通过在源实例主库执行sql语句“show master status”,读取字段“File”和“Position”。
步骤322:通过将“Exec_Master_Log_Pos”的值与“Position”的值进行比较,判断目标实例与源实例是否接近更新同步或达到更新同步。
如果否,返回到步骤318,重复轮询。
步骤324:如果接近更新同步,在源实例主库执行sql语句“setread_only=true”,即将其设为只读模式,以及返回到步骤318。
步骤326:如果达到更新同步,切换代理层的路由,指向目标实例主库。
步骤328:为目标实例新建备库,与目标实例主库建立异步复制关系。
例如,可以新建一个库,在该库执行“change master to<目标实例主库IP>:<目标实例主库Port>,master_auto_posotion=1;”sql语句,使其成为目标实例的备库。
步骤330:异步释放源实例,完成升级。
与上述方法实施例相对应,本说明书还提供了升级数据库的装置实施例,图5示出了本说明书一个实施例提供的一种升级数据库的装置的结构示意图。如图5所示,该装置包括:备份模块502、导入模块504、复制更新模块506及路由切换模块508。
该备份模块502,可以被配置为通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件以及所述只读备库在所述逻辑备份时的全局事务标识符的值。
该导入模块504,可以被配置为将所述备份文件导入所述高版本主库,以及,根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符。
该复制更新模块506,可以被配置为将所述高版本主库设置为所述低版本主库的备库,以使所述高版本主库利用设置的全局事务标识符复制所述低版本主库的更新。
该路由切换模块508,可以被配置为在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。
例如,该路由切换模块508,可以被配置为在高版本主库与低版本主库的更新同步的情况下,通过代理层将路由切换到所述高版本主库;或者,在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的域名修改为指向所述高版本主库。
可见,由于该装置在高版本主库导入低版本主库的只读备库的逻辑备份文件,在低版本主库持续提供服务的过程中,即可使高版本主库达到只读备库逻辑备份时的状态,又将低版本主库与高版本主库建立主备复制关系来追赶低版本主库的更新,在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。因此,通过导入具有兼容性的备份文件与更新复制相结合的方式,在数据库升级过程中,能够持续提供服务或停止服务的时间占比很低,实现了版本的热升级,保证了读写服务不间断,即高可用性。
为了避免设置全局事务标识符失败,在高版本主库设置全局事务标识符之前,需要执行清理数据库日志及重置全局事务标识符为空的指令。而在已经有备库的情况下,执行清理数据库日志及重置全局事务标识符为空的指令,会影响高版本主库的备库的复制。因此,本说明书一个或多个实施例中,高版本主库在创建时未设置备库,在为所述高版本主库的数据库日志设置对应的全局事务标识符之后,才为高版本主库建立备库,从而避免影响高版本主库的备库的复制。具体地,例如,图6示出了本说明书另一个实施例提供的一种升级数据库的装置的结构示意图。如图6所示,所述导入模块504可以包括:文件导入子模块5041、标识符设置子模块5042、重置模块5043。该文件导入子模块5041,可以被配置为将所述备份文件导入所述高版本主库。该标识符设置子模块5042,可以被配置为在所述备份文件导入所述高版本主库的情况下,利用所述备份文件包含的全局事务标识符的值,为所述高版本主库的数据库日志设置对应的全局事务标识符。该重置模块5043,可以被配置为在将所述备份文件导入所述高版本主库之前,在所述高版本主库执行清理数据库日志及重置全局事务标识符为空的指令。相应地,所述装置还可以:备库建立模块510,可以被配置为在为所述高版本主库的数据库日志设置对应的全局事务标识符之后,为所述高版本主库建立备库。
本说明书一个或多个实施例中,为了保证数据库数据的持久性以及数据库安全性,还可以在只读备库与高版本主库之间设置存储系统,从而通过存储系统保证数据的持久性,并且避免高版本主库对只读备库的暴露,保证了数据库的安全性。具体地,如图6所示,例如,所述文件导入子模块5041可以包括:文件上传子模块5041a、文件下载子模块5041b及导入执行子模块5041c。
该文件上传子模块5041a,可以被配置为将所述备份文件上传到存储系统。
该文件下载子模块5041b,可以被配置为在所述备份文件上传到所述存储系统的情况下,从所述存储系统下载所述备份文件到所述高版本主库所在机器。
该导入执行子模块5041c,可以被配置为在所述高版本主库执行针对所述备份文件的导入命令。
本说明书一个或多个实施例中,为了保证用户使用的连续性,如图6所示,所述路由切换模块508可以包括:高版本位点获取子模块5081、低版本位点获取子模块5082、同步判断子模块5083、只读设置子模块5084及路由切换子模块5085。
该高版本位点获取子模块5081,可以被配置为从所述高版本主库读取出已应用的低版本主库的日志的位点信息。
该低版本位点获取子模块5082,可以被配置为从所述低版本主库读取出所述低版本主库的日志的最新位点信息。
该同步判断子模块5083,可以被配置为通过将所述高版本主库已应用的低版本主库的日志的位点信息与所述低版本主库的日志的最新位点信息进行比较,判断所述高版本主库与所述低版本主库是否接近更新同步或达到更新同步。
如果否,返回到所述从高版本主库读取出已应用的低版本主库的日志的位点信息的步骤;
该只读设置子模块5084,可以被配置为如果所述同步判断子模块5083判定接近更新同步,将所述低版本主库设置为只读模式,触发所述高版本位点获取子模块5081返回到所述从高版本主库读取出已应用的低版本主库的日志的位点信息的步骤。
该路由切换子模块5085,可以被配置为如果所述同步判断子模块5083判定达到更新同步,将指向所述低版本主库的路由切换到所述高版本主库。
在该实施例中,由于在接近更新同步的情况下,将低版本主库设置为只读模式,从而可以在即将完成升级的情况下可以暂停写入数据,尽快完成更新同步的轮询,保证用户使用的连续性。
本说明书一个或多个实施例中,为了确保逻辑备份时,写入备份文件的全局事务标识符的值与备份文件中的SQL语句内容保持一致,如图6所示,所述装置还可以包括:停止应用模块512及开启应用模块514。
该停止应用模块512,可以被配置为在对所述只读备库进行逻辑备份之前,停止应用低版本主库的日志。例如,可以停止应用低版本主库日志线程。
该开启应用模块514,可以被配置为在对所述只读备库完成逻辑备份之后,开启应用低版本主库的日志。例如,可以开启应用低版本主库日志线程。
在该实施例中,由于在逻辑备份前后关闭、开启应用低版本主库的日志,从而避免在逻辑备份过程中应用低版本主库的日志导致的数据变化,使全局事务标识符的值与备份文件中的SQL语句内容保持一致,全局事务标识符与备份文件对应的数据状态相对应。
本说明书一个或多个实施例中,为了避免低版本主库清理本地日志造成高版本主库更新同步失败,如图6所示,所述装置还可以包括:日志清理关闭模块516,可以被配置为在对所述低版本主库的只读备库进行逻辑备份之前,关闭所述低版本主库清理本地日志的功能。
上述为本实施例的一种升级数据库的装置的示意性方案。需要说明的是,该升级数据库的装置的技术方案与上述的升级数据库的方法的技术方案属于同一构思,升级数据库的装置的技术方案未详细描述的细节内容,均可以参见上述升级数据库的方法的技术方案的描述。
图7示出了根据本说明书一个实施例提供的一种计算设备700的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730相连接,数据库750用于保存数据。
计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备700还可以是移动式或静止式的服务器。
其中,处理器720用于执行如下计算机可执行指令:
通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件以及所述只读备库在所述逻辑备份时的全局事务标识符的值;
将所述备份文件导入所述高版本主库,以及,根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符;
将所述高版本主库设置为所述低版本主库的备库,以使所述高版本主库利用设置的全局事务标识符复制所述低版本主库的更新;
在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的升级数据库的方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述升级数据库的方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件以及所述只读备库在所述逻辑备份时的全局事务标识符的值;
将所述备份文件导入所述高版本主库,以及,根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符;
将所述高版本主库设置为所述低版本主库的备库,以使所述高版本主库利用设置的全局事务标识符复制所述低版本主库的更新;
在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的升级数据库的方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述升级数据库的方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

Claims (10)

1.一种升级数据库的方法,包括:
在低版本主库持续提供服务的过程中,通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件以及所述只读备库在所述逻辑备份时的全局事务标识符的值,其中,所述只读备库的只读状态用于保证数据在所述逻辑备份过程中不被修改,备份文件中内容与所述全局事务标识符所代表的数据状态相一致;
将所述备份文件导入所述高版本主库,以及,根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符;
将所述高版本主库设置为所述低版本主库的备库,以使所述高版本主库利用设置的全局事务标识符复制所述低版本主库的更新;
在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。
2.根据权利要求1所述的方法,所述高版本主库在创建时未设置备库;所述根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符包括:
在将所述备份文件导入所述高版本主库之前,在所述高版本主库执行清理数据库日志及重置全局事务标识符为空的指令;
在所述备份文件导入所述高版本主库的情况下,利用所述备份文件包含的全局事务标识符的值,为所述高版本主库的数据库日志设置对应的全局事务标识符;
所述方法还包括:
在为所述高版本主库的数据库日志设置对应的全局事务标识符之后,为所述高版本主库建立备库。
3.根据权利要求1所述的方法,所述将备份文件导入所述高版本主库包括:
将所述备份文件上传到存储系统;
在所述备份文件上传到所述存储系统的情况下,从所述存储系统下载所述备份文件到所述高版本主库所在机器;
在所述高版本主库执行针对所述备份文件的导入命令。
4.根据权利要求1所述的方法,所述在高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库包括:
从所述高版本主库读取出已应用的低版本主库的日志的位点信息;
从所述低版本主库读取出所述低版本主库的日志的最新位点信息;
通过将所述高版本主库已应用的低版本主库的日志的位点信息与所述低版本主库的日志的最新位点信息进行比较,判断所述高版本主库与所述低版本主库是否接近更新同步或达到更新同步;
如果否,返回到所述从高版本主库读取出已应用的低版本主库的日志的位点信息的步骤;
如果接近更新同步,将所述低版本主库设置为只读模式,返回到所述从高版本主库读取出已应用的低版本主库的日志的位点信息的步骤;
如果达到更新同步,将指向所述低版本主库的路由切换到所述高版本主库。
5.根据权利要求1所述的方法,还包括:
在对所述只读备库进行逻辑备份之前,停止应用低版本主库的日志;
在对所述只读备库完成逻辑备份之后,开启应用低版本主库的日志。
6.根据权利要求1所述的方法,所述在高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库包括:
在所述高版本主库与所述低版本主库的更新同步的情况下,通过代理层将路由切换到所述高版本主库;
或者,
在所述高版本主库与所述低版本主库的更新同步的情况下,将所述低版本主库的域名修改为指向所述高版本主库。
7.根据权利要求1所述的方法,还包括:
在对所述低版本主库的只读备库进行所述逻辑备份之前,关闭所述低版本主库清理本地日志的功能。
8.一种升级数据库的装置,包括:
备份模块,被配置为在低版本主库持续提供服务的过程中,通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件以及所述只读备库在所述逻辑备份时的全局事务标识符的值,其中,所述只读备库的只读状态用于保证数据在所述逻辑备份过程中不被修改,备份文件中内容与所述全局事务标识符所代表的数据状态相一致;
导入模块,被配置为将所述备份文件导入所述高版本主库,以及,根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符;
复制更新模块,被配置为将所述高版本主库设置为所述低版本主库的备库,以使所述高版本主库利用设置的全局事务标识符复制所述低版本主库的更新;
路由切换模块,被配置为在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。
9.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
在低版本主库持续提供服务的过程中,通过对低版本主库的只读备库进行逻辑备份,获得与高版本主库兼容的备份文件以及所述只读备库在所述逻辑备份时的全局事务标识符的值,其中,所述只读备库的只读状态用于保证数据在所述逻辑备份过程中不被修改,备份文件中内容与所述全局事务标识符所代表的数据状态相一致;
将所述备份文件导入所述高版本主库,以及,根据所述全局事务标识符的值设置所述高版本主库的全局事务标识符;
将所述高版本主库设置为所述低版本主库的备库,以使所述高版本主库利用设置的全局事务标识符复制所述低版本主库的更新;
在所述高版本主库与所述低版本主库的更新同步的情况下,将指向所述低版本主库的路由切换到所述高版本主库。
10.一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现权利要求1至7任意一项所述升级数据库的方法的步骤。
CN202010906338.9A 2020-09-01 2020-09-01 升级数据库的方法以及装置 Active CN113296804B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010906338.9A CN113296804B (zh) 2020-09-01 2020-09-01 升级数据库的方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010906338.9A CN113296804B (zh) 2020-09-01 2020-09-01 升级数据库的方法以及装置

Publications (2)

Publication Number Publication Date
CN113296804A CN113296804A (zh) 2021-08-24
CN113296804B true CN113296804B (zh) 2022-06-14

Family

ID=77318603

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010906338.9A Active CN113296804B (zh) 2020-09-01 2020-09-01 升级数据库的方法以及装置

Country Status (1)

Country Link
CN (1) CN113296804B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114928541A (zh) * 2022-05-24 2022-08-19 阿里云计算有限公司 一种版本升级方法、装置及升级规则的配置方法
CN117171266B (zh) * 2023-08-28 2024-05-14 北京逐风科技有限公司 一种数据同步方法、装置、设备和存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102902818A (zh) * 2012-10-26 2013-01-30 杭州迪普科技有限公司 一种数据库升级的方法及装置
CN104182255B (zh) * 2014-08-20 2017-11-21 青岛海信宽带多媒体技术有限公司 一种系统应用的库文件升级方法及终端
CN106909568A (zh) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 一种数据库集群主数据库的切换方法及装置
CN106611062A (zh) * 2016-12-29 2017-05-03 北京奇虎科技有限公司 数据库更新方法及装置
CN111198921A (zh) * 2019-12-31 2020-05-26 招银云创(深圳)信息技术有限公司 数据库的切换方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN113296804A (zh) 2021-08-24

Similar Documents

Publication Publication Date Title
US8996466B2 (en) Extend crud to support lifecyle management and business continuity
CN113296804B (zh) 升级数据库的方法以及装置
US6751674B1 (en) Method and system for replication in a hybrid network
US9515878B2 (en) Method, medium, and system for configuring a new node in a distributed memory network
US20140188793A1 (en) Using confidence values for synchronizing file systems
CN108804306B (zh) 用于自动测试系统的方法和系统
US20150213100A1 (en) Data synchronization method and system
US8046329B2 (en) Incremental backup of database for non-archive logged servers
WO2012177445A2 (en) Managing replicated virtual storage at recovery sites
CN108628874A (zh) 迁移数据的方法、装置、电子设备和可读存储介质
US20120054477A1 (en) Providing a backup service from a remote backup data center to a computer through a network
CN106371875B (zh) 一种基于html5的手机应用更新方法
CN104216802B (zh) 一种内存数据库恢复方法和设备
EP2542976B1 (en) Method and apparatus of backing-up subversion repository
CN113760234B (zh) 一种软件开发方法和系统
De Jong et al. Continuous deployment and schema evolution in SQL databases
CN110134489A (zh) 应用迁移方法及装置、系统、存储介质、应用上云工具
CN111949311B (zh) 灰度发布方法及系统
CN111125060B (zh) 一种数据库管理方法、系统、设备及存储介质
CN112069152A (zh) 一种数据库集群升级方法、装置、设备以及存储介质
WO2017000586A1 (zh) 虚拟网元的升级方法、装置和计算机存储介质
US11593098B2 (en) Synchronization of source code under development in multiple concurrent instances of an integrated development environment
CN109241071A (zh) 一种Android数据库升级方法、装置及终端
CN114153480A (zh) 代码同步、组件发布方法及其装置、计算机存储介质
CN108874592B (zh) 一种针对Log-structured存储引擎的数据冷备方法及系统

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40059146

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant