CN116089359A - 数据库快照的生成方法、装置、电子设备和介质 - Google Patents

数据库快照的生成方法、装置、电子设备和介质 Download PDF

Info

Publication number
CN116089359A
CN116089359A CN202211736313.4A CN202211736313A CN116089359A CN 116089359 A CN116089359 A CN 116089359A CN 202211736313 A CN202211736313 A CN 202211736313A CN 116089359 A CN116089359 A CN 116089359A
Authority
CN
China
Prior art keywords
database
transaction
snapshot
information
consistent
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.)
Pending
Application number
CN202211736313.4A
Other languages
English (en)
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.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud 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 Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202211736313.4A priority Critical patent/CN116089359A/zh
Publication of CN116089359A publication Critical patent/CN116089359A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • 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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种数据库快照的生成方法、装置、电子设备和介质,所述方法包括:在接收到数据库快照生成指令时,检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务;在每个所述数据库分片的分片状态和事务状态均为正常时,给每个所述数据库添加读锁;开启事务的一致性快照操作,获取所述事务的一致性快照信息;将所述一致性快照信息中的binlog位置作为一致性位点,并全局释放读锁,所述binlog位置记录了数据库的修改操作;结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系。实现了在获取到数据库快照时保持数据库的读写可用性的同时也可以保证数据的一致性。

Description

数据库快照的生成方法、装置、电子设备和介质
技术领域
本申请涉及数据库领域,具体涉及一种数据库快照的生成方法、装置、电子设备和介质。
背景技术
随着数据量的快速增加,当数据量过于庞大,单机数据库难以支撑时,就需要使用到分布式数据库。在使用分布式数据库时,当存储设备发生应用故障或者文件损坏等情况时,就需要使用数据库快照来进行在线数据恢复。目前获取一致性快照的方法存在着一些缺陷,比如需要在数据导出的整个过程中不再对数据库的数据做更新操作或者是直接关闭应用,这些方法都不能在获取到数据一致性快照的同时,保持数据库本身的读写可用性。
发明内容
为了解决上述问题,本申请实施例提供一种数据库快照的生成方法、装置、电子设备和介质,可以在不破坏数据库数据一致性的前提下,生成一个数据库快照,并导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系,这对于数据库的备份、还原和灾难恢复都具有重要意义。并且在获取到数据库快照时保持数据库的读写可用性,同时也可以保证数据的一致性。
本申请一些实施例公开了一种数据库快照的生成方法,所述方法包括:
在接收到数据库快照生成指令时,检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务;
在每个所述数据库分片的分片状态和事务状态均为正常时,给每个所述数据库添加读锁;
开启事务的一致性快照操作,获取所述事务的一致性快照信息;
将所述一致性快照信息中的binlog位置作为一致性位点,并全局释放读锁,所述binlog位置记录了数据库的修改操作;
结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系。
可选地,所述在接收到数据库快照生成指令时,检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务,包括:
在接收到数据库快照生成指令时,利用分布式锁或分布式事务协调器来实现禁止跨分片事务;
其中,所述分布式锁是通过使用分布式系统中的锁服务器来协调分布式系统中的事务,所述分布式事务协调器是通过使用事务协调器来管理分布式系统中的事务。
可选地,所述在接收到数据库快照生成指令时,检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务,包括:
在接收到数据库快照生成指令时,在所述数据库内部设置标识变量作为跨分片事务执行标志位;其中,所述标识变量值为true表示允许跨分片事务的执行,值为false表示禁止跨分片事务的执行;
将所述标识变量设置为false以禁止跨分片事务执行。
可选地,所述开启事务的一致性快照操作,获取所述事务的一致性快照信息,包括:
将当前事务的隔离级别更改为可重复读;
接收更改成功信息后,执行所述数据库内部语句,开启事务的一致性快照操作,获取所述事务的一致性快照信息。
可选地,在所述将当前事务的隔离级别更改为可重复读之前,所述方法还包括:
将所述数据库的所有读操作缓存到系统内存中以避免脏读;其中,所述脏读是指在一个事务内,读取了另一个事务未提交的修改。
可选地,所述将所述一致性快照信息中的binlog位置作为一致性位点,并全局释放读锁,所述binlog位置记录了数据库的修改操作,包括:
在释放全局读锁之前,将所述数据库的所有表进行解锁;
接收到所述所有表解锁成功信息后,释放全局读锁。
可选地,在所述结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系之后,所述方法包括:
断开与所述数据库的连接,并恢复允许跨分片事务的执行。
可选地,在所述结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系之后,所述方法包括:
使用所述逻辑库表结构、物理库表结构以及逻辑物理拓扑关系恢复数据库镜像。
可选地,所述开启事务的一致性快照操作,获取所述事务的一致性快照信息,包括:
使用基于版本的并发控制技术来开启事务的一致性快照,获取所述事务的一致性快照信息;
其中,所述基于版本的并发控制技术是一种数据库技术,它通过在事务执行期间保留对数据的多个版本的快照来实现事务的一致性。
可选地,在所述结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系之后,所述方法包括:
利用分布式存储引擎将数据库的数据信息存储在多台服务器内。
本申请一些实施例提供一种数据库客户端,包括:
第一事务单元和缓存管理单元;所述第一事务单元用于向数据库服务器发送数据库快照生成指令,接收所述数据库服务器返回的每个数据库分片的分片状态和事务状态信息,向数据库服务器发送添加读锁请求;向所述缓存管理单元发送查询事务的一致性快照信息和一致性位点信息,发送导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系的第一请求信息,接收所述数据库服务器返回的目标查询结果。
本申请一些实施例提供一种数据库服务器,包括:
接收单元,用于接收数据库客户端的第一事务单元发送的数据库快照生成指令和读锁请求,接收所述数据库客户端的缓存管理单元发送的第一请求信息;
处理单元,用于判断所述数据库快照生成指令对应的查询结果缓存是否有效,若是,向所述数据库客户端的第一事务单元发送用于指示所述数据库快照生成指令对应的查询结果缓存有效的指示信息,使得所述数据库客户端的第一事务单元向所述数据库客户端的缓存管理单元发送查询事务的一致性快照信息和一致性位点信息获取第一查询结果,将所述第一查询结果和所述逻辑库表结构、物理库表结构以及逻辑物理拓扑关系合并为目标查询结果并返回给所述缓存管理单元。
本申请一些实施例提供一种数据库快照的生成装置,所述装置包括:
接收模块,用于在接收到数据库快照生成指令时,检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务;
处理模块,用于在每个所述数据库分片的分片状态和事务状态均为正常时,给每个所述数据库添加读锁;开启事务的一致性快照操作,获取所述事务的一致性快照信息;将所述一致性快照信息中的binlog位置作为一致性位点,并全局释放读锁,所述binlog位置记录了数据库的修改操作;
输出模块,用于结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系。
可选地,所述接收模块,还用于:
在接收到数据库快照生成指令时,利用分布式锁或分布式事务协调器来实现禁止跨分片事务;
其中,所述分布式锁是通过使用分布式系统中的锁服务器来协调分布式系统中的事务,所述分布式事务协调器是通过使用事务协调器来管理分布式系统中的事务。
可选地,所述接收模块,还用于:
在接收到数据库快照生成指令时,在所述数据库内部设置标识变量作为跨分片事务执行标志位;其中,所述标识变量值为true表示允许跨分片事务的执行,值为false表示禁止跨分片事务的执行;
将所述标识变量设置为false以禁止跨分片事务执行。
可选地,所述处理模块,还用于:
将当前事务的隔离级别更改为可重复读;
接收更改成功信息后,执行所述数据库内部语句,开启事务的一致性快照操作,获取所述事务的一致性快照信息。
可选地,所述处理模块,还用于:
将所述数据库的所有读操作缓存到系统内存中以避免脏读;其中,所述脏读是指在一个事务内,读取了另一个事务未提交的修改。
可选地,所述处理模块,还用于:
在释放全局读锁之前,将所述数据库的所有表进行解锁;
接收到所述所有表解锁成功信息后,释放全局读锁。
可选地,所述输出模块,还用于:
断开与所述数据库的连接,并恢复允许跨分片事务的执行。
可选地,所述输出模块,还用于:
使用所述逻辑库表结构、物理库表结构以及逻辑物理拓扑关系恢复数据库镜像。
可选地,所述接收模块,还用于:
使用基于版本的并发控制技术来开启事务的一致性快照,获取所述事务的一致性快照信息;
其中,所述基于版本的并发控制技术是一种数据库技术,它通过在事务执行期间保留对数据的多个版本的快照来实现事务的一致性。
可选地,所述输出模块,还用于:
利用分布式存储引擎将数据库的数据信息存储在多台服务器内。
本申请实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据库快照的生成方法的步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据库快照的生成方法的步骤。
本申请实施例提供的数据库快照的生成方法、系统、电子设备及介质,可以在不破坏数据库数据一致性的前提下,生成一个数据库快照,并导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系,这对于数据库的备份、还原和灾难恢复都具有重要意义。并且在获取到数据库快照时保持数据库的读写可用性,同时也可以保证数据的一致性。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性地示出了本申请一些实施例提供的一种数据库快照的生成方法的流程示意图;
图2示意性地示出了本申请一些实施例提供的另一种数据库快照的生成方法的流程示意图之一;
图3示意性地示出了本申请一些实施例提供的另一种数据库快照的生成方法的流程示意图之二;
图4示意性地示出了本申请一些实施例提供的另一种数据库快照的生成方法的数据库客户端结构示意图;
图5示意性地示出了本申请一些实施例提供的一种数据库快照的生成方法的数据库客户端的结构示意图;
图6示意性地示出了本申请一些实施例提供的一种数据库快照的生成方法的数据库服务器的结构示意图;
图7示意性地示出了本申请一些实施例提供的一种数据库快照的生成装置的结构示意图;
图8示意性地示出了用于执行根据本申请一些实施例的方法的计算处理设备的框图;
图9示意性地示出了用于保持或者携带实现根据本申请一些实施例的方法的程序代码的存储单元。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1示意性地示出了本申请一些实施例提供的一种数据库快照的生成方法的流程示意图,所述方法包括:
步骤101,在接收到数据库快照生成指令时,检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务。
需要说明的是,分布式数据库:分布式数据库是一种将数据库存储在多个节点上的数据库系统。它通常用于处理大型数据集,能够提供更高的可扩展性和可用性。快照:快照是数据库的一个拷贝,可以用于数据恢复、数据分析等用途。分片:分片是分布式数据库中的一个概念,指将数据库的表或索引按照一定的规则划分为若干个部分,每个部分存储在不同的节点上。事务:事务是数据库的一个概念,指数据库对数据的一组修改操作,要么全部执行,要么全部回滚。事务可以保证数据的一致性和完整性。
在本申请实施例中,需要检测每个数据库分片的分片状态和事务状态。分片状态指的是数据库分片在当前时间是否正常可用。事务状态指的是当前事务是否正常,比如是否被锁定或者超时。如果检测到有数据库分片或者事务状态不正常,那么就应该禁止跨分片事务的执行,以避免对数据库的不一致性造成影响。示例性的,假设我们有一个分布式数据库,包含两个数据库分片A和B。当接收到数据库快照生成指令时,会检测数据库分片A和B的分片状态和事务状态。如果分片A的分片状态是“正常”,但分片B的分片状态是“故障”,那么会禁止生成快照,因为不能保证所有分片都处于相同的状态。如果所有分片的分片状态均为正常,但存在跨分片事务,那么也会禁止生成快照,因为这些事务可能会在快照生成时仍在进行,导致数据不一致。
步骤102,在每个所述数据库分片的分片状态和事务状态均为正常时,给每个所述数据库添加读锁。
需要说明的是,在分布式数据库中,数据库分片是指将数据库中的数据按照一定规则分割成多个部分,存储在不同的数据库实例中的过程。分片状态指的是每个分片的运行状态,例如是否正常、是否处于异常状态等。事务状态指的是当前数据库中的事务执行状态,例如是否处于提交状态、是否处于回滚状态等。在数据库中,锁是一种机制,用于在并发访问数据库时保护数据的完整性和一致性。锁的类型有多种,其中读锁是允许多个事务同时读取数据的锁,但不允许任何事务对数据进行修改。在这个步骤中,我们给数据库添加读锁,意味着在生成数据库快照的过程中,其他事务只能读取数据,而不能对数据进行修改。
在本申请实施例中,在接收到数据库快照生成指令并且所有数据库分片的分片状态和事务状态均正常后,为了避免在生成快照过程中数据被更新,可以给每个数据库分片添加读锁。读锁可以保证在快照生成过程中,数据库分片只能被读取,不能被修改,从而保证快照数据的一致性。举个例子,假设我们有一个分布式数据库,包含三个数据库分片A、B、C。在接收到快照生成指令时,如果A、B、C的状态和事务状态均正常,则可以给每个数据库分片添加读锁,从而保证在生成快照的过程中,A、B、C的数据不会被修改。
步骤103,开启事务的一致性快照操作,获取所述事务的一致性快照信息。
需要说明的是,事务是一组用来保证数据库操作的原子性、一致性、隔离性和持久性的操作集合。
在本申请实施例中,在所有数据库分片上开启事务的一致性快照操作。所谓一致性快照,是指在一个事务内,可以查询到所有数据的一个完整的快照。这意味着,在开启一致性快照操作后,所有的数据库分片都不能再进行修改操作,直到事务结束。通过获取所有数据库分片的一致性快照信息,我们就可以在事务结束后获得一个包含所有数据的完整快照。这样可以保证在事务过程中数据的一致性,即在事务提交之前,数据库中的数据状态是固定不变的。
步骤104,将所述一致性快照信息中的binlog位置作为一致性位点,并全局释放读锁,所述binlog位置记录了数据库的修改操作。
需要说明的是,Binlog:Binlog是MySQL数据库的二进制日志,记录了数据库的所有修改操作,包括数据的增、删、改操作。Binlog可以帮助数据库恢复到某个特定的时间点。它对于数据库的可用性和容错性有很大的帮助。通过获取当前事务的binlog位置,我们就可以知道数据库在当前事务之前的所有修改操作,从而获取到数据库的一致性快照。
在本申请实施例中,示例性的,在我们执行了一系列修改操作后,我们可以通过提取当前事务的binlog位置,获取到数据库在当前事务之前的所有修改操作。这样,我们就可以通过使用这些修改操作来恢复数据库的一致性,在不影响数据库的读写可用性的情况下,获取到数据库的一致性快照。接下来,我们要将所有的读锁全局释放。这样,就可以保证数据库的读写可用性,同时也可以避免在获取快照过程中,对数据库造成不必要的影响。
步骤105,结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系。
需要说明的是,在本申请实施例中需要使用到所谓的一致性位点。一致性位点是指在生成数据库快照的过程中,记录下数据库最后一次修改操作的位置(通常是binlog位置)。这个位置被称为一致性位点,因为它记录了数据库在生成快照时的一致性状态。在使用一致性位点时,可以通过导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系来获取数据库快照。逻辑库表结构指的是分布式数据库中的逻辑库中的表的结构,包括表的字段名称、类型、长度等信息。物理库表结构指的是分布式数据库中的物理库中的表的结构,也包括表的字段名称、类型、长度等信息。逻辑物理拓扑关系指的是分布式数据库中逻辑库和物理库之间的关系,包括哪些表属于逻辑库,哪些表属于物理库,以及这些表之间的关联关系。
在本申请实施例中,示例性的,假设我们的分布式数据库中有一个逻辑库,名为"customer_database",其中包含两张表:"customers"和"orders"。"customers"表包含了所有的客户信息,包括客户名、地址和电话号码。"orders"表包含了所有的订单信息,包括订单编号、产品名称和数量。在我们导出这个逻辑库的信息时,我们会获取到这两张表的表结构,以及这两张表之间的逻辑物理拓扑关系。也就是说,我们会知道"customers"表包含了哪些字段,以及这些字段的数据类型。同时,我们也会知道"orders"表包含了哪些字段,以及这些字段的数据类型。此外,我们还会知道"orders"表中的"customer_id"字段与"customers"表中的"id"字段之间是外键关联关系,也就是说,"orders"表中的"customer_id"字段只能包含"customers"表中已经存在的"id"值。这些信息都是通过导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系来获得的。
在本申请实施例中,通过上述内容,我们可以在不破坏数据库数据一致性的前提下,生成一个数据库快照,并导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系,这对于数据库的备份、还原和灾难恢复都具有重要意义。并且在获取到数据库快照时保持数据库的读写可用性,同时也可以保证数据的一致性。
可选地,所述步骤101,包括:
在接收到数据库快照生成指令时,利用分布式锁或分布式事务协调器来实现禁止跨分片事务;
其中,所述分布式锁是通过使用分布式系统中的锁服务器来协调分布式系统中的事务,所述分布式事务协调器是通过使用事务协调器来管理分布式系统中的事务。
在本申请实施例中,在接收到数据库快照生成指令时,需要检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务。这可以通过使用分布式锁或分布式事务协调器来实现。分布式锁是一种在分布式系统中使用的锁机制,可以通过使用锁服务器来协调事务。这样,当某个进程试图获取锁时,锁服务器会检查该锁是否可用,如果可用则将锁授予该进程,否则会拒绝获取该锁的请求。分布式事务协调器是一种在分布式系统中使用的事务管理机制,可以通过使用事务协调器来管理分布式系统中的事务。事务协调器会跟踪每个事务的状态,并在必要时协调事务之间的依赖关系。这样,当某个事务执行时,事务协调器会检查其他事务是否完成。
在本申请实施例中,通过利用分布式锁或分布式事务协调器来禁止跨分片事务,这样可以保证在数据库快照生成过程中的数据的一致性,从而为后续的数据恢复提供便利。
可选地,所述步骤101,包括:
步骤A1,在接收到数据库快照生成指令时,在所述数据库内部设置标识变量作为跨分片事务执行标志位;其中,所述标识变量值为true表示允许跨分片事务的执行,值为false表示禁止跨分片事务的执行;
在本申请实施例中,示例性的,可以通过在数据库中创建一个表来实现变量的设置,表中包含一个名为"cross_shard_transaction_flag"的布尔型字段,用于记录是否允许跨分片事务的执行。可以使用如下SQL语句创建这个表:CREATE TABLE cross_shard_transaction_flag(cross_shard_transaction_flag BOOLEAN NOT NULL);然后,在接收到数据库快照生成指令时,可以使用如下SQL语句来设置标识变量的值:UPDATE cross_shard_transaction_flag SET cross_shard_transaction_flag=false;这样,当跨分片事务执行标志位为false时,跨分片事务就被禁止执行。
步骤A2,将所述标识变量设置为false以禁止跨分片事务执行。
在本申请实施例中,使用某种存储方式(如数据库表、缓存服务器、文件系统等)来存储标识变量。使用数据库查询或编程语言的相关API来更新标识变量的值。示例性的,如果我们使用数据库表来存储标识变量,我们可以执行以下SQL语句来将标识变量设置为false:UPDATE flags SET value=false WHERE name='allow_cross_shard_transactions';如果我们使用缓存服务器来存储标识变量,我们可以使用缓存服务器的相关API来更新标识变量的值。示例性的,如果我们使用Redis(Remote Dictionary Server)作为缓存服务器,我们可以使用以下代码来将标识变量设置为false:redis.set('allow_cross_shard_transactions','false')。Redis的英文全称是Remote Dictionary Server,它是一个开源的内存数据库,提供存储键值对的数据结构,可以用来存储各种类型的数据,包括字符串、列表、集合、有序集合、哈希表、位图和计数器。它的特点是速度快,可以将数据存储在内存中,并支持将数据持久化到硬盘上。它常用作缓存服务器,也可用作消息队列、计数器、分布式锁、发布订阅系统等。
在本申请实施例中,通过在数据库内部设置跨分片事务执行标志位,我们可以在生成数据库快照时禁止跨分片事务的执行,从而保证生成的快照是一致的。
可选地,如图2所示,所述步骤103,包括:
步骤201,将当前事务的隔离级别更改为可重复读;
在本申请实施例中,在事务开始时,设置当前事务的隔离级别为可重复读。示例性的,这可以通过在SQL语句中使用"SET TRANSACTION ISOLATION LEVEL REPEATABLE READ"来实现。在执行事务的过程中,需要保证当前事务的隔离级别始终保持为可重复读。这意味着,在当前事务中执行的所有查询都会获得一致的数据结果,并且在当前事务提交前,不会有其他事务对数据进行修改。在事务提交或回滚时,清除当前事务的隔离级别设置。
步骤202,接收更改成功信息后,执行所述数据库内部语句,开启事务的一致性快照操作,获取所述事务的一致性快照信息。
在本申请实施例中,需要使用数据库内部语句来开启事务的一致性快照操作。具体的,可以使用SQL语句START TRANSACTION WITH CONSISTENT SNAPSHOT来开启一致性快照操作。在执行完这条语句后,就可以获取当前事务的一致性快照信息。获取到的一致性快照信息包括事务的起始位置、事务的隔离级别以及所有在事务中执行的操作的日志信息。这些信息将用于在后续的数据恢复过程中回滚或提交事务。
在本申请实施例中,通过执行上述步骤,可以保证在当前事务中获得一致的数据结果,并且在提交前不会有其他事务对数据进行修改。这有助于避免脏读、不可重复读以及幻读的情况发生。
可选地,在所述步骤201之前,所述方法还包括:
将所述数据库的所有读操作缓存到系统内存中以避免脏读;其中,所述脏读是指在一个事务内,读取了另一个事务未提交的修改。
在本申请实施例中,通常还需要将数据库的所有读操作缓存到系统内存中,以避免出现脏读的情况。这意味着在当前事务内,读取的数据都是来自系统内存的缓存,而不是直接从数据库中读取。这样,就可以避免在一个事务内读取另一个事务未提交的修改。
在本申请实施例中,通过上述内容,系统内存中就会有一个包含了所有读操作的缓存,这样在后续的事务操作中,就可以直接使用缓存中的数据,而不需要再次读取数据库。这样可以显著提高事务处理的效率。
可选地,所述步骤104,包括:
步骤S1,在释放全局读锁之前,将所述数据库的所有表进行解锁;
在本申请实施例中,需要先检查数据库中哪些表是被锁定的,然后对这些表执行解锁操作。解锁的具体操作可能会根据数据库的类型和版本而有所不同,但通常来说都是通过执行一条特定的SQL语句来实现的。示例性的,在MySQL数据库中,可以使用"UNLOCKTABLES"语句来解锁表。在执行这条语句之后,MySQL会将所有当前正在使用的表锁解除,以便在之后的操作中再次对这些表进行加锁。执行完这一步后,就可以将全局读锁释放掉,这样其他事务就可以在这个数据库上进行操作了。解锁表的操作对于保证数据库的正常运行非常重要,因为如果表锁一直被占用,其他事务就无法访问这些表,可能会导致数据库性能下降或者数据库无法正常工作。
步骤S2,接收到所述所有表解锁成功信息后,释放全局读锁。
在本申请实施例中,示例性的,可以使用"RELEASE LOCK"语句来释放MySQL数据库中的全局读锁。在执行这条语句之后,MySQL会将全局读锁释放,以便在之后的操作中再次对数据库进行加锁。释放全局读锁的过程中,还可以使用分布式系统中的锁服务器或分布式事务协调器来维护一个锁列表,该锁列表记录了当前正在使用的锁,并在释放全局读锁的时候,将所述全局读锁从锁列表中删除。可以通过这种方式来确保所有被锁住的表在释放全局读锁之后都已经被解锁。此外,在释放全局读锁之前,还可以在数据库内部执行一些必要的清理操作,例如清空临时表、关闭游标等,以保证数据库在释放全局读锁后的状态是一致的。
在本申请实施例中,通过上述步骤,可以将全局读锁释放,以便其他事务可以对数据库进行操作。
可选地,在所述步骤105之后,所述方法包括:
断开与所述数据库的连接,并恢复允许跨分片事务的执行。
需要说明的是,断开连接是为了避免一致性快照占用太多的系统资源。对于大型数据库来说,导出数据库的一致性快照可能会占用较多的内存和CPU资源,如果没有断开连接,就可能会导致其他的读写操作受到影响。此外,恢复允许跨分片事务的执行也是为了保证数据库在快照生成后的正常运行。跨分片事务在数据库中扮演着重要的角色,如果没有恢复跨分片事务的执行,就可能会导致数据库的读写和事务执行受到影响。
在本申请实施例中,在断开与数据库的连接之前,需要先执行一条语句来恢复允许跨分片事务的执行。示例性的,在MySQL数据库中,可以使用"SET SESSION TRANSACTIONISOLATION LEVEL READ COMMITTED"语句来恢复允许跨分片事务的执行。执行这条语句后,MySQL会将当前事务的隔离级别设置为可重复读,从而允许跨分片事务的执行。然后,可以使用"DISCONNECT"语句来断开与数据库的连接,并在断开连接之后清空所有缓存数据,以便在之后的操作中再次连接数据库。
可选地,在所述步骤105之后,所述方法包括:
使用所述逻辑库表结构、物理库表结构以及逻辑物理拓扑关系恢复数据库镜像。
需要说明的,在数据库的水平扩展场景中,恢复数据库镜像也是很有必要的。因为当数据库的数据量增加或者访问量增加时,可能会导致数据库的性能下降。这时候就需要通过将数据库的数据分布到多台服务器上来扩展数据库的性能。恢复数据库镜像可以用于将数据库的数据迁移到新的服务器上,从而实现数据库的水平扩展。
在本申请实施例中,根据逻辑库表结构、物理库表结构以及逻辑物理拓扑关系,在数据库中创建表。这可能需要使用数据库内部的语句,如"CREATE TABLE"或"ALTERTABLE"。根据逻辑库表结构和逻辑物理拓扑关系,在数据库中建立适当的约束条件,如外键约束、唯一约束等。接下来,可以使用物理库表中记录的表数据,逐条插入到对应的逻辑库表中。在插入数据的过程中,需要注意遵循逻辑物理拓扑关系,保证数据的一致性和正确性。
在恢复数据库镜像的过程中,可以使用多线程技术加速数据的插入,提高恢复效率。此外,还可以使用数据库中的批量插入功能,一次性插入多条数据,进一步提升恢复效率。在所有数据插入完成后,可以使用数据库中的检查点功能,将数据库的修改操作记录到日志文件中,方便在后续的操作中使用。
在本申请实施例中,通过上述过程,恢复数据库镜像,并保证恢复后的数据库与原始数据库的一致性。这样,在数据库恢复的过程中,我们就可以保证不会丢失任何重要的数据,也不会出现数据不一致的情况。
可选地,所述步骤202,包括:
使用基于版本的并发控制技术来开启事务的一致性快照,获取所述事务的一致性快照信息;
其中,所述基于版本的并发控制技术是一种数据库技术,它通过在事务执行期间保留对数据的多个版本的快照来实现事务的一致性。
需要说明的是,基于版本的并发控制(Version Concurrency Control,VCC)是一种数据库技术,它通过在事务执行期间保留对数据的多个版本的快照来实现事务的一致性。多版本并发控制是指当两个事务同时对一条记录进行修改时,为了避免冲突,系统会对这两个事务分别生成一个版本号,并在事务提交时才将修改写回数据库。这样,当一个事务读取一条记录时,系统会根据事务的版本号来决定是返回哪个版本的记录。
在本申请实施例中,示例性的,在MySQL数据库中,可以使用"START TRANSACTIONWITH CONSISTENT SNAPSHOT"语句来开启事务的一致性快照。执行这条语句之后,MySQL会获取当前事务的一致性快照信息,并在之后的操作中保证读取到的数据是一致的。
可选地,在所述步骤105之后,包括:
利用分布式存储引擎将数据库的数据信息存储在多台服务器内。
在本申请实施例中,示例性的,利用NDB存储引擎将数据库的数据信息存储在多台服务器内;NDB存储引擎(NDB stands for Network Database)是MySQL数据库管理系统的一个存储引擎,它可以将数据存储在多台机器上,并使用MySQL协议访问这些数据。NDB存储引擎可以与MySQL Server集成,也可以独立部署。它是一个分布式存储引擎,能够支持大规模并发访问,并可以提供高可用性、可扩展性和数据一致性。NDB存储引擎可以用来存储各种类型的数据,包括数值、字符串、二进制数据等。它还提供了一些特殊的存储类型,如日期、时间、精确的数值等。
在本申请实施例中,通过使用分布式存储引擎,可以将数据分布在多台机器上,并使用MySQL协议访问这些数据。用于存储大量数据,并支持高并发场景下的数据访问。
如图3所示,Apache Zookeeper是一个开源的分布式协调服务。它提供了一种高效的机制来协调分布式系统中的许多进程。Zookeeper提供了一个简单的接口来实现诸如分布式锁、分布式队列、分布式命名服务等功能。Zookeeper还提供了高度可靠的数据一致性服务,可以在多个进程之间同步数据。分布式数据库节点1和分布式数据库节点2都包括dn1、dn2、dn3,那么这意味着分布式数据库节点1和分布式数据库节点2都有三个数据节点,分别为dn1、dn2、dn3。这三个数据节点在分布式数据库节点1和分布式数据库节点2中的角色是一致的,并且负责存储和维护数据库中的数据。
如图4所示,在本申请实施例中,示例性的,基于天翼云分布式数据库udal进行验证,需部署两套实例udal1与udal2,每套实例具有两个节点,并且关联2台天翼云数据库rds,使用zookeeper作为消息中心,保存逻辑与物理库表的拓扑关系。在开始实施前,需要保证实例节点间网络通畅,节点正常运行。UDAL是一种分布式数据库系统,它为用户提供了一种在分布式环境下进行数据管理的方式。UDAL能够通过在多台服务器上分布数据来提高数据的可用性和性能。UDAL的特点是可以对数据进行水平分片,从而在分布式环境下提供高性能的读写能力。UDAL还具有高可用性和自动故障转移功能,可以保证数据在系统故障时能够得到保护。RDS是Amazon Relational Database Service的简称,中文名为亚马逊关系数据库服务。RDS是亚马逊提供的关系型数据库服务,它可以帮助用户在云中管理和运行MySQL、MariaDB、PostgreSQL、Oracle和Microsoft SQL Server数据库。RDS可以自动进行数据库的自动备份、恢复、扩展和缩放,并提供免费的内置可用性和安全性功能,从而简化了用户管理数据库的过程。
具体地,检测所有分片状态,检测事务状态,禁止跨分片事务;给所有数据库加上读锁;可以使用FLUSH TABLES WITH READ LOCK语句,这个全局锁会在开启事务的一致性快照之后很快的释放。更改可重复读的事务隔离级别,开启事务的一致性快照;可以使用SETSESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ来设置RR隔离级别,然后用START TRANSACTION WITH CONSISTENT SNAPSHOT来开启MySQL数据库的事务的一致性快照。
进一步地,获取binlog位点作为一致性位点,释放全局读锁;可以使用UDAL SHOWMASTER STATUS获取到每一个分片的binlog位点信息,主要包括binlog文件名称,gtid和position。结合一致性位点导出逻辑库表结构、物理库表结构及逻辑物理拓扑关系,对每个分片数据顺序导出;获取到zookeeper中存储的逻辑-物理拓扑关系,转换为拓扑关系对象进行导出;表结构用show create table进行导出;用SELECT*FROM tab的方式来导出表数据。最后导出结束,断开连接,恢复允许跨分片事务。
图5示意性地示出了本申请一些实施例提供的一种数据库快照的生成方法的数据库客户端1的结构示意图,包括:
第一事务单元11和缓存管理单元12;所述第一事务单元11用于向数据库服务器发送数据库快照生成指令,接收所述数据库服务器返回的每个数据库分片的分片状态和事务状态信息,向数据库服务器发送添加读锁请求;向所述缓存管理单元发送查询事务的一致性快照信息和一致性位点信息,发送导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系的第一请求信息,接收所述数据库服务器返回的目标查询结果。
图6示意性地示出了本申请一些实施例提供的一种数据库快照的生成方法的数据库服务器2的结构示意图,所述数据库服务器2包括:
接收单元21,用于接收数据库客户端的第一事务单元发送的数据库快照生成指令和读锁请求,接收所述数据库客户端的缓存管理单元发送的第一请求信息;
处理单元22,用于判断所述数据库快照生成指令对应的查询结果缓存是否有效,若是,向所述数据库客户端的第一事务单元11发送用于指示所述数据库快照生成指令对应的查询结果缓存有效的指示信息,使得所述数据库客户端的第一事务单元11向所述数据库客户端的缓存管理单元12发送查询事务的一致性快照信息和一致性位点信息获取第一查询结果,将所述第一查询结果和所述逻辑库表结构、物理库表结构以及逻辑物理拓扑关系合并为目标查询结果并返回给所述缓存管理单元12。
图7示意性地示出了本申请一些实施例提供的一种数据库快照的生成装置30的结构示意图,所述装置30包括:
接收模块301,用于在接收到数据库快照生成指令时,检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务;
处理模块302,用于在每个所述数据库分片的分片状态和事务状态均为正常时,给每个所述数据库添加读锁;开启事务的一致性快照操作,获取所述事务的一致性快照信息;将所述一致性快照信息中的binlog位置作为一致性位点,并全局释放读锁,所述binlog位置记录了数据库的修改操作;
输出模块303,用于结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系。
可选地,所述接收模块301,还用于:
在接收到数据库快照生成指令时,利用分布式锁或分布式事务协调器来实现禁止跨分片事务;
其中,所述分布式锁是通过使用分布式系统中的锁服务器来协调分布式系统中的事务,所述分布式事务协调器是通过使用事务协调器来管理分布式系统中的事务。
可选地,所述接收模块301,还用于:
在接收到数据库快照生成指令时,在所述数据库内部设置标识变量作为跨分片事务执行标志位;其中,所述标识变量值为true表示允许跨分片事务的执行,值为false表示禁止跨分片事务的执行;
将所述标识变量设置为false以禁止跨分片事务执行。
可选地,所述处理模块302,还用于:
将当前事务的隔离级别更改为可重复读;
接收更改成功信息后,执行所述数据库内部语句,开启事务的一致性快照操作,获取所述事务的一致性快照信息。
可选地,所述处理模块302,还用于:
将所述数据库的所有读操作缓存到系统内存中以避免脏读;其中,所述脏读是指在一个事务内,读取了另一个事务未提交的修改。
可选地,所述处理模块302,还用于:
在释放全局读锁之前,将所述数据库的所有表进行解锁;
接收到所述所有表解锁成功信息后,释放全局读锁。
可选地,所述输出模块303,还用于:
断开与所述数据库的连接,并恢复允许跨分片事务的执行。
可选地,所述输出模块303,还用于:
使用所述逻辑库表结构、物理库表结构以及逻辑物理拓扑关系恢复数据库镜像。
可选地,所述接收模块301,还用于:
使用基于版本的并发控制技术来开启事务的一致性快照,获取所述事务的一致性快照信息;
其中,所述基于版本的并发控制技术是一种数据库技术,它通过在事务执行期间保留对数据的多个版本的快照来实现事务的一致性。
在本申请实施例中,通过上述内容,我们可以在不破坏数据库数据一致性的前提下,生成一个数据库快照,并导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系,这对于数据库的备份、还原和灾难恢复都具有重要意义。并且在获取到数据库快照时保持数据库的读写可用性,同时也可以保证数据的一致性。
以上所描述的设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例的计算处理设备中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在非瞬态计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
例如,图8示出了可以实现根据本申请的方法的计算处理设备。该计算处理设备传统上包括处理器410和以存储器420形式的计算机程序产品或者非瞬态计算机可读介质。存储器420可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。存储器420具有用于执行上述方法中的任何方法步骤的程序代码431的存储空间430。例如,用于程序代码的存储空间430可以包括分别用于实现上面的方法中的各种步骤的各个程序代码431。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(CD)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为如参考图9所述的便携式或者固定存储单元。该存储单元可以具有与图8的计算处理设备中的存储器420类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元包括计算机可读代码431’,即可以由例如诸如410之类的处理器读取的代码,这些代码当由计算处理设备运行时,导致该计算处理设备执行上面所描述的方法中的各个步骤。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本文中所称的“一个实施例”、“实施例”或者“一个或者多个实施例”意味着,结合实施例描述的特定特征、结构或者特性包括在本申请的至少一个实施例中。此外,请注意,这里“在一个实施例中”的词语例子不一定全指同一个实施例。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (15)

1.一种数据库快照的生成方法,其特征在于,所述方法包括:
在接收到数据库快照生成指令时,检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务;
在每个所述数据库分片的分片状态和事务状态均为正常时,给每个所述数据库添加读锁;
开启事务的一致性快照操作,获取所述事务的一致性快照信息;
将所述一致性快照信息中的binlog位置作为一致性位点,并全局释放读锁,所述binlog位置记录了数据库的修改操作;
结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系。
2.根据权利要求1所述的方法,其特征在于,所述在接收到数据库快照生成指令时,检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务,包括:
在接收到数据库快照生成指令时,利用分布式锁或分布式事务协调器来实现禁止跨分片事务;
其中,所述分布式锁是通过使用分布式系统中的锁服务器来协调分布式系统中的事务,所述分布式事务协调器是通过使用事务协调器来管理分布式系统中的事务。
3.根据权利要求1所述的方法,其特征在于,所述在接收到数据库快照生成指令时,检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务,包括:
在接收到数据库快照生成指令时,在所述数据库内部设置标识变量作为跨分片事务执行标志位;其中,所述标识变量值为true表示允许跨分片事务的执行,值为false表示禁止跨分片事务的执行;
将所述标识变量设置为false以禁止跨分片事务执行。
4.根据权利要求1所述的方法,其特征在于,所述开启事务的一致性快照操作,获取所述事务的一致性快照信息,包括:
将当前事务的隔离级别更改为可重复读;
接收更改成功信息后,执行所述数据库内部语句,开启事务的一致性快照操作,获取所述事务的一致性快照信息。
5.根据权利要求4所述的方法,其特征在于,在所述将当前事务的隔离级别更改为可重复读之前,所述方法还包括:
将所述数据库的所有读操作缓存到系统内存中以避免脏读;其中,所述脏读是指在一个事务内,读取了另一个事务未提交的修改。
6.根据权利要求1所述的方法,其特征在于,所述将所述一致性快照信息中的binlog位置作为一致性位点,并全局释放读锁,所述binlog位置记录了数据库的修改操作,包括:
在释放全局读锁之前,将所述数据库的所有表进行解锁;
接收到所述所有表解锁成功信息后,释放全局读锁。
7.根据权利要求1所述的方法,其特征在于,在所述结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系之后,所述方法包括:
断开与所述数据库的连接,并恢复允许跨分片事务的执行。
8.根据权利要求1所述的方法,其特征在于,在所述结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系之后,所述方法包括:
使用所述逻辑库表结构、物理库表结构以及逻辑物理拓扑关系恢复数据库镜像。
9.根据权利要求1所述的方法,其特征在于,所述开启事务的一致性快照操作,获取所述事务的一致性快照信息,包括:
使用基于版本的并发控制技术来开启事务的一致性快照,获取所述事务的一致性快照信息;
其中,所述基于版本的并发控制技术是一种数据库技术,它通过在事务执行期间保留对数据的多个版本的快照来实现事务的一致性。
10.根据权利要求1所述的方法,其特征在于,在所述结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系之后,所述方法包括:
利用分布式存储引擎将数据库的数据信息存储在多台服务器内。
11.一种数据库客户端,其特征在于,包括:
第一事务单元和缓存管理单元;所述第一事务单元用于向数据库服务器发送数据库快照生成指令,接收所述数据库服务器返回的每个数据库分片的分片状态和事务状态信息,向数据库服务器发送添加读锁请求;向所述缓存管理单元发送查询事务的一致性快照信息和一致性位点信息,发送导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系的第一请求信息,接收所述数据库服务器返回的目标查询结果。
12.一种数据库服务器,其特征在于,包括:
接收单元,用于接收数据库客户端的第一事务单元发送的数据库快照生成指令和读锁请求,接收所述数据库客户端的缓存管理单元发送的第一请求信息;
处理单元,用于判断所述数据库快照生成指令对应的查询结果缓存是否有效,若是,向所述数据库客户端的第一事务单元发送用于指示所述数据库快照生成指令对应的查询结果缓存有效的指示信息,使得所述数据库客户端的第一事务单元向所述数据库客户端的缓存管理单元发送查询事务的一致性快照信息和一致性位点信息获取第一查询结果,将所述第一查询结果和所述逻辑库表结构、物理库表结构以及逻辑物理拓扑关系合并为目标查询结果并返回给所述缓存管理单元。
13.一种数据库快照的生成装置,其特征在于,所述装置包括:
接收模块,用于在接收到数据库快照生成指令时,检测每个数据库分片的分片状态和事务状态,并禁止跨分片事务;
处理模块,用于在每个所述数据库分片的分片状态和事务状态均为正常时,给每个所述数据库添加读锁;开启事务的一致性快照操作,获取所述事务的一致性快照信息;将所述一致性快照信息中的binlog位置作为一致性位点,并全局释放读锁,所述binlog位置记录了数据库的修改操作;
输出模块,用于结合所述一致性位点的信息导出逻辑库表结构、物理库表结构以及逻辑物理拓扑关系。
14.一种电子设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储计算机程序;
所述处理器用于根据所述计算机程序执行权利要求1-10中任一项所述的数据库快照的生成方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行权利要求1-10中任一项所述的数据库快照的生成方法。
CN202211736313.4A 2022-12-30 2022-12-30 数据库快照的生成方法、装置、电子设备和介质 Pending CN116089359A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211736313.4A CN116089359A (zh) 2022-12-30 2022-12-30 数据库快照的生成方法、装置、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211736313.4A CN116089359A (zh) 2022-12-30 2022-12-30 数据库快照的生成方法、装置、电子设备和介质

Publications (1)

Publication Number Publication Date
CN116089359A true CN116089359A (zh) 2023-05-09

Family

ID=86187809

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211736313.4A Pending CN116089359A (zh) 2022-12-30 2022-12-30 数据库快照的生成方法、装置、电子设备和介质

Country Status (1)

Country Link
CN (1) CN116089359A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117076147A (zh) * 2023-10-13 2023-11-17 支付宝(杭州)信息技术有限公司 死锁检测方法、装置、设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117076147A (zh) * 2023-10-13 2023-11-17 支付宝(杭州)信息技术有限公司 死锁检测方法、装置、设备和存储介质
CN117076147B (zh) * 2023-10-13 2024-04-16 支付宝(杭州)信息技术有限公司 死锁检测方法、装置、设备和存储介质

Similar Documents

Publication Publication Date Title
CN111143389B (zh) 事务执行方法、装置、计算机设备及存储介质
Taft et al. Cockroachdb: The resilient geo-distributed sql database
US10180946B2 (en) Consistent execution of partial queries in hybrid DBMS
US10503699B2 (en) Metadata synchronization in a distrubuted database
CA3121919C (en) System and method for augmenting database applications with blockchain technology
US10754875B2 (en) Copying data changes to a target database
CN101567805B (zh) 并行文件系统发生故障后的恢复方法
US7117229B2 (en) Method and system for online reorganization of databases
US11132350B2 (en) Replicable differential store data structure
US11386065B2 (en) Database concurrency control through hash-bucket latching
US10754854B2 (en) Consistent query of local indexes
US9576038B1 (en) Consistent query of local indexes
US20050055445A1 (en) High availability data replication of an R-tree index
CN108509462B (zh) 一种同步活动事务表的方法及装置
CN111444027B (zh) 事务处理方法、装置、计算机设备及存储介质
US6725242B2 (en) Multiple-computer data processing system and method with time-versioned data storage
CN109902127B (zh) 历史态数据处理方法、装置、计算机设备及存储介质
US20230098963A1 (en) Object processing method and apparatus, computer device, and storage medium
CN116089359A (zh) 数据库快照的生成方法、装置、电子设备和介质
Kang et al. Remus: Efficient live migration for distributed databases with snapshot isolation
CN114691307A (zh) 事务处理方法及计算机系统
CN114816224A (zh) 数据管理方法和数据管理装置
CN110096389A (zh) 一种数据库的启动方法、装置、设备和存储介质
CN117076147B (zh) 死锁检测方法、装置、设备和存储介质
US11914615B2 (en) Managing shared objects in hybrid distributed database systems

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing

Applicant after: Tianyiyun Technology Co.,Ltd.

Address before: 100093 Floor 4, Block E, Xishan Yingfu Business Center, Haidian District, Beijing

Applicant before: Tianyiyun Technology Co.,Ltd.