CN110019066A - 数据库处理方法及装置、系统 - Google Patents

数据库处理方法及装置、系统 Download PDF

Info

Publication number
CN110019066A
CN110019066A CN201710862403.0A CN201710862403A CN110019066A CN 110019066 A CN110019066 A CN 110019066A CN 201710862403 A CN201710862403 A CN 201710862403A CN 110019066 A CN110019066 A CN 110019066A
Authority
CN
China
Prior art keywords
node
data page
record
lsn
shared memory
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
CN201710862403.0A
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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Group Holding 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 Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201710862403.0A priority Critical patent/CN110019066A/zh
Publication of CN110019066A publication Critical patent/CN110019066A/zh
Pending legal-status Critical Current

Links

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/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • 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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • 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/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • 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/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • 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/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems

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

Abstract

一种数据库处理方法及装置、系统,包括:主节点在执行数据记录的修改操作或写入操作时,将所述修改操作或写入操作产生的重做日志记录写入共享存储节点,并将相应的脏数据页更新到所述共享存储节点;副本节点将所述重做日志记录从所述共享存储节点读入内存,以便在需要时通过所述重做日志记录重构数据页。本申请能够降低数据库实现读写分离的部署成本和主备延迟。

Description

数据库处理方法及装置、系统
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库处理方法及装置、系统。
背景技术
目前,基于开源数据库的读写分离方案一般通过复制一个或多个副本节点实现。例如,PostgreSQL或MySQL通过复制功能实现读写分离。
上述读写分离的实现方式至少存在如下两个问题:1)需要将主节点的所有数据复制到备节点,而备节点的成本较高,备节点越多,成本越高;2)备节点需要应用主节点产生的重做日志,保持同步,主备延迟的可能性非常大。
发明内容
本申请旨在至少解决相关技术中的技术问题之一。
本申请提供一种数据库处理方法及装置、系统,至少能够降低读写分离部署成本和降低主备延迟。
本申请采用如下技术方案:
一种数据库处理方法,包括:
主节点在执行数据记录的修改操作或写入操作时,将所述修改操作或写入操作产生的重做日志记录写入共享存储节点,并将相应的脏数据页更新到所述共享存储节点;
副本节点将所述重做日志记录从所述共享存储节点读入内存,以便在需要时通过所述重做日志记录重构数据页。
其中,在进行数据记录的修改操作时,所述脏数据页包括数据页和回滚页。
其中,所述副本节点将所述重做日志记录从所述共享存储节点读入内存,包括:所述副本节点将所述重做日志记录按对应的数据页编号哈希存放,以便在需要通过数据页编号查找相应的重做日志记录。
其中,,所述方法还包括:副本节点根据用户的读请求,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,并通过查找到的重做日志记录重构所述数据页。
其中,所述方法还包括:副本节点根据用户的读请求,在发现需要读取修改之前的数据时,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,通过查找到的重做日志记录重构所述数据页,再从所述共享存储节点中读取所述数据页对应的回滚页。
其中,所述方法还包括:副本节点接收来自主节点的主节点刷新日志序号LSN,并将LSN不大于所述主节点刷新LSN的重做日志记录从内存中释放;其中,主节点刷新LSN表示此LSN之前的脏数据页已更新到所述共享存储节点。
其中,所述方法还包括:在所述主节点启动时,初始化所述主节点刷新LSN为写入共享存储节点的最后一笔重做记录的LSN,并将所述主节点刷新LSN提供给所述副本节点。
其中,所述将相应的脏数据页更新到所述共享存储节点,包括:将LSN满足如下条件的脏数据页更新到所述共享存储节点:不大于主节点已写入共享存储节点的重做日志记录的LSN;不大于所述副本节点提供的重做日志记录的最大LSN,所述最大LSN为所述副本节点中所有重做日志记录LSN中的最大值。
其中,所述方法还包括:在所述副本节点启动时,初始化所述重做日志记录的最大LSN为所述主节点提供的主节点刷新LSN;其中,主节点刷新LSN表示此LSN之前的脏数据页已更新到所述共享存储节点。
一种数据库系统,包括:
写入模块,用于在主节点执行数据记录的修改操作或写入操作时,将所述修改操作或写入操作产生的重做日志记录从主节点写入共享存储节点,并将相应的脏数据页从主节点更新到所述共享存储节点;
第一读模块,用于将所述重做日志记录从所述共享存储节点读入副本节点的内存,以便所述副本节点在需要时通过所述重做日志记录重构数据页。
其中,还包括:第一存储模块,用于将所述重做日志记录按对应的数据页编号哈希存放,以便在副本节点需要通过数据页编号查找相应的重做日志记录。
其中,还包括:第二读模块,用于实现如下之一或两项:
根据用户的读请求,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,并通过查找到的重做日志记录重构所述数据页;
根据用户的读请求,在发现需要读取修改之前的数据时,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,通过查找到的重做日志记录重构所述数据页,再从所述共享存储节点中读取所述数据页对应的回滚页。
其中,还包括:接收模块,可用于根据来自主节点的主节点刷新LSN;释放模块,用于将LSN不大于所述主节点刷新LSN的重做日志记录从副本节点的内存中释放;其中,主节点刷新LSN表示此LSN之前的脏数据页已更新到所述共享存储节点。
一种数据库系统,包括:主节点、副本节点和共享存储节点;其中,所述共享存储节点用于存放来自所述主节点的数据页、回滚页以及重做日志记录;
所述主节点,用于在执行数据记录的修改操作或写入操作时,将所述修改操作或写入操作产生的重做日志记录写入共享存储节点,并将相应的脏数据页更新到所述共享存储节点;
所述副本节点,用于将所述重做日志记录从所述共享存储节点读入内存,以便在需要时通过所述重做日志记录重构数据页。
其中,所述副本节点,具体用于将所述重做日志记录按对应的数据页编号哈希存放,以便在需要通过数据页编号查找相应的重做日志记录。
其中,所述副本节点,还用于执行如下之一或两项:
根据用户的读请求,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,并通过查找到的重做日志记录重构所述数据页;
根据用户的读请求,在发现需要读取修改之前的数据时,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,通过查找到的重做日志记录重构所述数据页,再从所述共享存储节点中读取所述数据页对应的回滚页。
本申请包括以下优点:
本申请中,主节点将重做日志记录和脏数据页存入共享存储节点,副本节点可以从共享存储节点读取重做日志记录,在需要时再通过相应的重做日志记录重构数据页,这样,使用一份共享存储、多个节点实现了数据库的读写分离,而且主节点与副本节点之间不再需要数据的完全复制,还可确保主节点和副本节点读取到一致的数据,不仅降低了副本节点的部署成本,便于扩展数据库的读能力,而且主节点与副本节点之间的数据延迟也能够大幅降低。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1为相关技术中数据库的读写分离架构示意图;
图2为实施例一数据库处理方法的流程示意图;
图3为实施例二数据库系统的架构示意图;
图4为实施例三数据库处理装置的结构示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一个典型的配置中,客户端或服务器的计算设备可包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存(memory)。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。内存可能包括模块1,模块2,……,模块N(N为大于2的整数)。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
相关技术中,基于开源数据库的读写分离方案多是通过复制一个或多个副本节点实现读写分离。如图1所示,该一写多读的架构中包含一个主节点和多个备节点,被节点为只读节点,主节点具有读写功能,其中,每个节点都需要管理数据文件(data file)、回滚文件(undo file)、重做日志文件(redo file),而这些数据文件(data file)、回滚文件(undofile)、重做日志文件(redo file)都需要从主节点(Primary)复制到备节点(slave),。
这样的一写多读架构至少存在如下缺陷:
1、需要将主节点的所有数据复制到备节点,备节点和主节点都需要存储并管理所有数据,这使得备节点的成本较高,而备节点越多,成本就会越高;
2、备节点需要应用主节点产生的所有重做日志,以保持同步,此方式必然会造成主节点与备节点之间发生延迟,进而造成数据的同步不够及时。
针对上述情况,本申请提出如下技术方案。需要说明的是,本申请技术方案可应用于多种类型的开源数据库。
本文术语解释如下:
数据文件(Data file):由数据页(Data page)组成的文件。
回滚文件(UNDO file):由回滚页(UNDO page)组成的文件。
重做日志(REDO log):可以用于恢复数据库,生成任意时间点的数据页。对数据库进行写操作时会导致数据页的修改,每一个数据页的修改都会产生对应的REDO log,本文将REDO log简称为REDO。
回滚页:用于保存更改前的数据。实际应用中,在更改数据前,会将更改前的数据(如,数据页中的记录)拷贝到UNDO file中的某个回滚页中,数据被写入回滚页时,还可以添加事务号标记,该事务号标记用于表示相应记录的创建事务号和被修改的事务号。例如,A会话修改了某条记录,提交事务前,B会话需要访问这个数据页的数据,此时,B会话可以通过数据页对应的记录指向的回滚页找到这条记录被修改前的状态。
共享存储缓冲区(Shared buffer):存储被访问的数据页,更新数据页也可以在Shared buffer中完成。
脏数据页(Dirty data page):指Shared buffer中被修改过但没有刷新到数据文件中的数据页。
日志序号(LSN,Log sequence number):表示重做日志文件的寻址地址。每一笔REDO记录都有一个LSN,该LSN表示该笔REDO记录在REDO文件中的寻址位置。
数据页的LSN(Data page LSN):指这个数据页最后一次被修改时产生的REDO的LSN。
回滚页的LSN(UNDO page LSN):指回滚页被修改时的REDO记录(redo record)。
脏数据页的LSN(Dirty data page LSN):指在shared buffer中已被修改但未刷新到data file中的数据页的LSN。
下面对本申请技术方案的具体实现方式进行详细说明。
实施例一
如图2所示,本实施例提供一种数据库处理方法,包括:
步骤201,主节点在执行数据记录的修改操作或写入操作时,主节点将所述修改操作或写入操作产生的重做日志记录写入共享存储节点,并将相应的脏数据页更新到所述共享存储节点;
步骤202,副本节点将所述重做日志记录从所述共享存储节点读入内存,以便在需要时通过所述重做日志记录重构数据页。
本实施例中,主节点将重做日志记录和脏数据页存入共享存储节点,副本节点可以从共享存储节点读取重做日志记录,在需要时再通过相应的重做日志记录重构数据页,这样,使用一份共享存储、多个节点实现了数据库的读写分离,而且主节点与副本节点之间不再需要数据的完全复制,还可确保主节点和副本节点读取到一致的数据,不仅降低了副本节点的部署成本,便于扩展数据库的读能力,而且主节点与副本节点之间的数据延迟也能够大幅降低。
本实施例中,在进行数据记录的修改操作时,所述脏数据页可以包括数据页和回滚页。在进行数据记录的写操作时,所述脏数据页可以包括数据页。
本实施例中,还可以包括:进行数据记录的修改操作之后,主节点将所述数据记录对应的回滚页存入共享存储节点的回滚文件。如此,副本节点可从共享存储节点获取相应的回滚页。
本实施例中,副本节点可以在内存中设置专用于存放重做日志记录的区域,以存储所述重做日志记录。一种实现方式中,所述副本节点将所述重做日志记录从所述共享存储节点读入内存,包括:所述副本节点将所述重做日志记录按对应的数据页编号哈希存放,以便在需要通过数据页编号查找相应的重做日志记录。如此,副本节点在需要读取数据页或回滚页时,可通过数据页编号快速找到相应的重做日志记录,从而有效提高副本节点重构数据页最新状态的速度。
本实施例中,副本节点可以根据用户的读请求,向共享存储节点读取数据。一种实现方式中,本实施例的上述方法还可以包括:副本节点根据用户的读请求,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,并通过查找到的重做日志记录重构所述数据页。此方式中,副本节点可在读取数据页时,按需应用重做日志记录,而不需要应用每一笔重做日志记录,不仅提高了副本节点推动重做日志记录的速度,还可以大幅降低副本节点对重做日志记录的维护成本。
另一种实现方式中,本实施例的方法还可以包括:副本节点根据用户的读请求,在发现需要读取修改之前的数据时,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,通过查找到的重做日志记录重构所述数据页,再从所述共享存储节点中读取所述数据页对应的回滚页。此方式中,副本节点可在读取回滚页时,按需应用重做日志记录,而不需要应用每一笔重做日志记录,不仅提高了副本节点推动重做日志记录的速度,还可以大幅降低副本节点对重做日志记录的维护成本。
本实施例中,副本节点还可以根据需要释放部分重做日志记录。一种实现方式中,本实施例的方法还可以包括:副本节点接收来自主节点的主节点刷新LSN(Primaryflushed LSN),并将日志序号LSN不大于所述主节点刷新LSN的重做日志记录从内存中释放;其中,主节点刷新LSN表示此LSN之前的脏数据页已更新到所述共享存储节点。
一种实现方式中,所述将相应的脏数据页更新到所述共享存储节点之前,还可以包括:在所述主节点启动时,初始化所述主节点刷新LSN为写入共享存储节点的最后一笔重做记录的LSN,并将所述主节点刷新LSN提供给所述副本节点。
本实施例中,所述将相应的脏数据页更新到所述共享存储节点之前,还可以包括:主节点从所述副本节点获取重做日志记录的最大LSN,所述最大LSN为所述副本节点中所有重做日志记录LSN中的最大值;所述将相应的脏数据页更新到所述共享存储节点,可以包括:将LSN满足如下条件的脏数据页更新到共享存储节点的数据文件中:1)不大于主节点已写入共享存储节点的重做日志记录的LSN;2)不大于副本节点的重做日志记录的最大LSN。需要说明的是,这里的脏数据页可以是数据页或回滚页。
一种实现方式中,所述将相应的脏数据页更新到所述共享存储节点之前,还可以包括:在所述副本节点启动时,初始化所述重做日志记录的最大LSN为所述主节点提供的主节点刷新LSN;其中,主节点刷新LSN表示此LSN之前的脏数据页已更新到所述共享存储节点。
本实施例的上述方法可通过下文实施例二的系统实现。
实施例二
一种数据库处理系统,应用于关系型数据库,如图3所示,包括:主节点31、副本节点32和共享存储节点33;其中,所述共享存储节点用于存放来自所述主节点的数据页、回滚页以及重做日志记录;
所述主节点,用于在执行数据记录的修改操作或写入操作时,主节点将所述修改操作或写入操作产生的重做日志记录写入共享存储节点,并将相应的脏数据页更新到所述共享存储节点;
所述副本节点,用于将所述重做日志记录从所述共享存储节点读入内存,以便在需要时通过所述重做日志记录重构数据页。
本实施例中,主节点31向用户提供读写访问,所述副本节点32向用户提供只读访问,所述共享存储节点33存储有数据文件、回滚文件和重做日志文件,所述数据文件包含来自所述主节点的数据页,所述回滚文件包含来自所述主节点的回滚页,所述重做日志文件包含来自所述主节点的重做日志记录。
如图3所示,主节点和副本节点之间只需要同步重做日志相关的元数据信息(即下文示例中主节点与副本节点之间交换的信息),逻辑上DB数据都存放在共享存储节点上,如此,该数据库系统可将计算和存储分离,通过共享副本节点的增加无需再进行数据的完全复制,而且副本节点与主节点之间的数据读取一致性更高。
实际应用中,上述读写分离架构可以通过分布式集群来实现。一种实现方式中,主节点可通过数据库服务器(DB Server)或数据库服务器集群实现,副本节点也可以通过数据库服务器(DB Server)或数据库服务器集群实现。共享存储节点可以通过支持数据分块(chunk)存储的服务器或其集群实现。主节点可以通过RDMA协议与共享存储节点进行数据传输,从而实现DB数据的读写操作,副本节点分别可以通过RDMA协议与共享存储节点进行数据传输,从而实现DB数据的只读操作。
其中,上述架构中,各副本节点只需要各自维护自身所需的重做日志,同时各副本节点还可以根据自己的负载灵活定制其重做日志。比如,某个副本节点可以基于其负载特性只维护某个或某些表或库的重做日志,而不再需要维护所有的重做日志。
其中,主节点和副本节点都分别具有共享存储缓冲区(Shared buffer),共享存储缓冲区存储被访问的数据页,更新数据页也可以在Shared buffer中完成。
本实施例中,所述副本节点32,具体可用于将所述重做日志记录按对应的数据页编号哈希存放,以便在需要通过数据页编号查找相应的重做日志记录。如此,副本节点读取数据页或回滚页的过程中,可提高重做日志记录的搜索速度,
本实施例中,所述副本节点32,还可用于执行如下之一或两项:1)根据用户的读请求,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,并通过查找到的重做日志记录重构所述数据页;2)根据用户的读请求,在发现需要读取修改之前的数据时,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,通过查找到的重做日志记录重构所述数据页,再从所述共享存储节点中读取所述数据页对应的回滚页。需要说明的是,读取数据页或回滚页的过程中,副本节点32还可以采用其他方式查找相应的重做日志记录,对此,本文不予限制。本实施例中的其他技术细节参照实施例一。
实施例三
如图4所示,本实施例提供一种数据库系统,可以包括:
写入模块41,用于在主节点执行数据记录的修改操作或写入操作时,将所述修改操作或写入操作产生的重做日志记录从主节点写入共享存储节点,并将相应的脏数据页从主节点更新到所述共享存储节点;
第一读取模块42,用于将所述重做日志记录从所述共享存储节点读入副本节点的内存,以便所述副本节点在需要时通过所述重做日志记录重构数据页。
本实施例中,上述数据库处理装置可设置于实施例二所述的数据库系统中。其中,写入模块41可以设置于主节点中,第一读取模块42可以设置该数据库系统的副本节点中。
本实施例中,写入模块41更新到共享存储节点的脏数据页可以是数据页、回滚页或两者。具体的,在进行数据记录的修改操作时,所述脏数据页可以包括数据页和回滚页。而在进行数据记录的修改操作时,所述脏数据页可以包括数据页。
本实施例中,上述数据库处理装置还可以包括:第一存储模块43,用于将所述重做日志记录按对应的数据页编号哈希存放,以便在副本节点需要通过数据页编号查找相应的重做日志记录。一种实现方式中,该第一存储模块可以为副本节点内存中的指定区域。
本实施例中,上述数据库处理装置还可以包括:第二读模块44,用于实现如下之一或两项:
根据用户的读请求,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,并通过查找到的重做日志记录重构所述数据页;
根据用户的读请求,在发现需要读取修改之前的数据时,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,通过查找到的重做日志记录重构所述数据页,再从所述共享存储节点中读取所述数据页对应的回滚页。
实际应用中,上述第二读模块44设置于上文数据库系统中的副本节点中,负责实现副本节点的数据读取操作。
本实施例中,上述数据库处理装置还可以包括:接收模块45,可用于根据来自主节点的主节点刷新LSN;释放模块46,用于将LSN不大于所述主节点刷新LSN的重做日志记录从副本节点的内存中释放;其中,主节点刷新LSN表示此LSN之前的脏数据页已更新到所述共享存储节点。实际应用中,该释放模块46和接收模块45可以设置于上文数据库系统的副本节点中。
需要说明的是,上述数据库处理装置中写入模块41可以是软件、硬件或两者的结合,负责将主节点的重做日志记录以及脏数据页写入共享存储节点;第一读取模块42、第一存储模块43、第二读模块44、接收模块45以及释放模块46分别可以是软件、硬件或两者的结合。
本实施例中的其他技术细节参照实施例一。
下面对上述各实施例的示例性实现方式进行详细说明。需要说明的是,下文各示例可相互结合。并且,下文示例中各流程、执行过程等也可以根据实际应用的需要进行调整。此外,在实际应用中,上述各实施例还可以有其他的实现方式。
示例1、主节点启动;
主节点启动时,初始化primary flushed LSN=redo log last LSN,redo loglast LSN为REDO文件的最后一笔重做日志记录的LSN。其中,Primary flushed LSN是主节点的一个LSN变量,表示主节点的共享存储缓冲区中的脏数据页的LSN,LSN在该Primaryflushed LSN之前的脏数据页(dirty page)均已刷新到了data file。
示例2、副本节点启动;
副本节点启动时,初始化Replica parsed min LSN=Replica parsed max LSN=Primary flushed LSN。
副本节点解析到的最大LSN(replica parsed max LSN):表示当前副本节点解析到的最大LSN,每个副本节点都具有一个这样的变量。
副本节点解析到的最小LSN(replica parsed min LSN):表示当前副本节点解析到的最小LSN,每个副本节点都具有一个这样的变量。比replica parsed min LSN更小的LSN对应的重做日志记录将从replica redo parsed memory中释放。
示例3、主节点产生脏数据页,并刷新共享存储缓冲区内的脏数据页到共享存储节点;
主节点对数据记录有更改、删除等修改操作或写入操作时,对共享存储缓冲区内的数据页会有修改。
首先,将数据页读入共享存储缓冲区中。修改数据记录时,将对应的回滚页从共享存储节点载入共享存储缓冲区,将修改之前的数据记录写入该回滚页中,产生重做日志记录(每一笔重做日志记录都具有一个LSN)并将该重做日志记录写入共享存储节点的重做日志文件,修改共享存储缓冲区内对应回滚页头部的LSN。
然后,修改共享存储缓冲区中数据页内的数据记录,该数据页变成共享存储缓冲区中的脏数据页,产生重做日志记录并将该重做日志记录写入共享存储节点的重做日志文件,修改共享存储缓冲区内对应数据页头部的LSN。
主节点的写入操作与之类似,只是没有回滚页的操作。
主节点刷新共享存储缓冲区内的脏数据页(包括回滚页和/或数据页)到共享存储节点之前,首先判断这个或这些脏数据页的LSN是否满足如下条件,在这个或这些脏数据页满足如下两个条件时将从共享存储缓冲区刷新到共享存储节点中:
1、小于或等于主节点已写入共享存储节点的重做日志记录的LSN,以确保REDO先落盘。
2、小于或等于所有副本节点中的重做日志记录的最大LSN(Replica parsed maxLSN),以保证副本节点不会读到对它来说是未来的数据块。
对于不满足上述条件的脏数据页可不刷新到共享存储节点。
在判断这个或这些脏数据页的LSN满足上述条件时,主节点还可以同步更新共享存储缓冲区中的Primary flushed LSN,并将该更新后的Primary flushed LSN提供给所有副本节点。其中,Primary flushed LSN表示共享存储缓冲区中的所有脏数据页的LSN中该LSN之前的脏数据页都已刷新到了共享存储节点。
示例4、副本节点解析重做日志文件;
为了提高副本节点apply数据页和/或回滚页的速度,副本节点需要先解析重做日志文件,包括:将重做日志记录读入内存,按对应的data page number hash存放重做日志记录,并更新replica parsed max LSN。
一种实现方式中,将重做日志记录按对应的data page number hash存放可以是将一个数据页的重做日志记录放入该数据页对应的哈希桶(hash bucket),一个数据页对应一个hash bucket,以实现重做日志记录的快速应用。例如,涉及数据页1的重做日志记录放到1号哈希桶(hash bucket),以此类推,hash bucket的冲突可以参考通用算法来解决。
比如,副本节点内存可以设置REDO解析内存区域(replica redo parsedmemory),该REDO解析内存区域用于存放从共享存储节点的重做日志文件中解析到的REDO。这里,解析REDO的目的是将重做日志文件中的重做日志记录按涉及的数据页编号哈希(data page number hash)存放,如此,可以在按数据页编号(data page number)搜索replica redo parsed memory中重做日志记录时提高搜索速度。
当副本节点发起的SQL读取请求需要读到某个数据页或回滚页时,可以根据相应的数据页编号(data page number)可以快速找到对应的hash bucket,进而找到对应的重做日志记录,这样,副本节点可在读取数据页或回滚页时可以按需应用重做日志记录,而不需要应用每一笔重做日志记录。
副本节点解析重做日志文件的过程中,还可以构建副本节点当前的事务快照,副本节点可以利用事务快照判断记录的可见性。其中,事务快照可以包括已提交最大事务号、未分配最小事务号、未提交事务列表等。
示例5,副本节点释放replica redo parsed memory;
本示例中,副本节点可以释放内存中的部分重做日志记录。一种实现方式中,副本节点可以释放内存中重做日志记录的LSN不大于Primary flushed LSN的重做日志记录,在释放之后还可同步更新Replica parsed min LSN。
示例6,主节点、副本节点交换信息;
本示例中,每次变量信息发生更新时,主节点和副本节点之间都可以交换所述变量信息,所述变量信息可以包括:Replica parsed min LSN、Replica parsed max LSN、Primary flushed LSN。
示例7,副本节点读数据页;
当副本节点发起的SQL读取请求需要读到某个数据页或回滚页时,可以先从共享存储节点获取相应数据页,再根据该数据页的data page number快速找到对应的hashbucket,获取到相应的重做日志记录,最后通过该重做日志记录重构所述数据页。如果需要获取回滚页,还需要在重构数据页之后从共享存储节点读取该数据页对应的回滚页。
本示例中,副本节点不需要应用(apply)所有的重做日志记录,只需要apply被业务读到的数据页和/或回滚页对应的重做日志记录。
示例8,副本节点读数据页指向的回滚页;
当副本节点发起SQL读取请求时,可以根据事务快照以及读的记录的版本判断可见性。如果发现需要的是旧版本(即修改之前的数据记录),则可以示例7重构数据页之后,可以根据该数据页对应行(row)中的回滚页链接,读取相应回滚页内的行(row),从而找到相应的旧版本并提供给用户。
如果对应回滚页已被清理,可以报快照太旧(snapshot too old)的错误。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。

Claims (16)

1.一种数据库处理方法,包括:
主节点在执行数据记录的修改操作或写入操作时,将所述修改操作或写入操作产生的重做日志记录写入共享存储节点,并将相应的脏数据页更新到所述共享存储节点;
副本节点将所述重做日志记录从所述共享存储节点读入内存,以便在需要时通过所述重做日志记录重构数据页。
2.根据权利要求1所述的方法,其特征在于,
在进行数据记录的修改操作时,所述脏数据页包括数据页和回滚页。
3.根据权利要求1所述的方法,其特征在于,所述副本节点将所述重做日志记录从所述共享存储节点读入内存,包括:
所述副本节点将所述重做日志记录按对应的数据页编号哈希存放,以便在需要通过数据页编号查找相应的重做日志记录。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
副本节点根据用户的读请求,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,并通过查找到的重做日志记录重构所述数据页。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
副本节点根据用户的读请求,在发现需要读取修改之前的数据时,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,通过查找到的重做日志记录重构所述数据页,再从所述共享存储节点中读取所述数据页对应的回滚页。
6.根据权利要求1或3所述的方法,其特征在于,所述方法还包括:
副本节点接收来自主节点的主节点刷新日志序号LSN,并将LSN不大于所述主节点刷新LSN的重做日志记录从内存中释放;
其中,主节点刷新LSN表示此LSN之前的脏数据页已更新到所述共享存储节点。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述主节点启动时,初始化所述主节点刷新LSN为写入共享存储节点的最后一笔重做记录的LSN,并将所述主节点刷新LSN提供给所述副本节点。
8.根据权利要求1或3所述的方法,其特征在于,所述将相应的脏数据页更新到所述共享存储节点,包括:
将LSN满足如下条件的脏数据页更新到所述共享存储节点:
不大于主节点已写入共享存储节点的重做日志记录的LSN;
不大于所述副本节点提供的重做日志记录的最大LSN,所述最大LSN为所述副本节点中所有重做日志记录LSN中的最大值。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
在所述副本节点启动时,初始化所述重做日志记录的最大LSN为所述主节点提供的主节点刷新LSN;
其中,主节点刷新LSN表示此LSN之前的脏数据页已更新到所述共享存储节点。
10.一种数据库系统,包括:
写入模块,用于在主节点执行数据记录的修改操作或写入操作时,将所述修改操作或写入操作产生的重做日志记录从主节点写入共享存储节点,并将相应的脏数据页从主节点更新到所述共享存储节点;
第一读模块,用于将所述重做日志记录从所述共享存储节点读入副本节点的内存,以便所述副本节点在需要时通过所述重做日志记录重构数据页。
11.根据权利要求10所述的数据库系统,其特征在于,还包括:第一存储模块,用于将所述重做日志记录按对应的数据页编号哈希存放,以便在副本节点需要通过数据页编号查找相应的重做日志记录。
12.根据权利要求10所述的数据库系统,其特征在于,还包括:第二读模块,用于实现如下之一或两项:
根据用户的读请求,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,并通过查找到的重做日志记录重构所述数据页;
根据用户的读请求,在发现需要读取修改之前的数据时,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,通过查找到的重做日志记录重构所述数据页,再从所述共享存储节点中读取所述数据页对应的回滚页。
13.根据权利要求10所述的数据库系统,其特征在于,还包括:
接收模块,可用于根据来自主节点的主节点刷新LSN;
释放模块,用于将LSN不大于所述主节点刷新LSN的重做日志记录从副本节点的内存中释放;其中,主节点刷新LSN表示此LSN之前的脏数据页已更新到所述共享存储节点。
14.一种数据库系统,包括:主节点、副本节点和共享存储节点;其中,所述共享存储节点用于存放来自所述主节点的数据页、回滚页以及重做日志记录;
所述主节点,用于在执行数据记录的修改操作或写入操作时,将所述修改操作或写入操作产生的重做日志记录写入共享存储节点,并将相应的脏数据页更新到所述共享存储节点;
所述副本节点,用于将所述重做日志记录从所述共享存储节点读入内存,以便在需要时通过所述重做日志记录重构数据页。
15.根据权利要求14所述的数据库系统,其特征在于,
所述副本节点,具体用于将所述重做日志记录按对应的数据页编号哈希存放,以便在需要通过数据页编号查找相应的重做日志记录。
16.根据权利要求14所述的数据库系统,其特征在于,
所述副本节点,还用于执行如下之一或两项:
根据用户的读请求,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,并通过查找到的重做日志记录重构所述数据页;
根据用户的读请求,在发现需要读取修改之前的数据时,从共享存储节点读取相应的数据页,按照所述数据页的数据页编号查找重做日志记录,通过查找到的重做日志记录重构所述数据页,再从所述共享存储节点中读取所述数据页对应的回滚页。
CN201710862403.0A 2017-09-21 2017-09-21 数据库处理方法及装置、系统 Pending CN110019066A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710862403.0A CN110019066A (zh) 2017-09-21 2017-09-21 数据库处理方法及装置、系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710862403.0A CN110019066A (zh) 2017-09-21 2017-09-21 数据库处理方法及装置、系统

Publications (1)

Publication Number Publication Date
CN110019066A true CN110019066A (zh) 2019-07-16

Family

ID=67186358

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710862403.0A Pending CN110019066A (zh) 2017-09-21 2017-09-21 数据库处理方法及装置、系统

Country Status (1)

Country Link
CN (1) CN110019066A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825763A (zh) * 2020-01-08 2020-02-21 上海爱可生信息技术股份有限公司 基于共享存储的MySQL数据库高可用系统及其高可用方法
CN111046024A (zh) * 2019-12-16 2020-04-21 上海达梦数据库有限公司 一种共享存储数据库的数据处理方法、装置、设备及介质
CN111475480A (zh) * 2020-04-13 2020-07-31 上海达梦数据库有限公司 一种日志处理方法及系统
CN111639087A (zh) * 2020-05-28 2020-09-08 北京金山云网络技术有限公司 数据库中数据更新方法、装置和电子设备
CN112182010A (zh) * 2020-11-30 2021-01-05 北京金山云网络技术有限公司 脏页刷新方法和装置、存储介质和电子设备
CN112637284A (zh) * 2020-12-09 2021-04-09 北京金山云网络技术有限公司 重做日志的存储方法和装置、电子设备和存储介质
CN112835915A (zh) * 2019-11-25 2021-05-25 中国移动通信集团辽宁有限公司 Mpp数据库系统、数据存储方法及数据查询方法
CN112988880A (zh) * 2019-12-12 2021-06-18 阿里巴巴集团控股有限公司 数据同步方法、装置、电子设备及计算机存储介质
WO2021185059A1 (zh) * 2020-03-20 2021-09-23 华为技术有限公司 一种针对数据库的数据迁移方法及装置
CN113553382A (zh) * 2021-08-06 2021-10-26 上海达梦数据库有限公司 数据页的刷盘方法、装置、设备及存储介质
CN113704361A (zh) * 2021-10-28 2021-11-26 腾讯科技(深圳)有限公司 事务执行方法、装置、计算设备及存储介质
CN113760926A (zh) * 2020-12-02 2021-12-07 北京沃东天骏信息技术有限公司 一种数据读写系统及数据写入方法
CN116382981A (zh) * 2023-04-06 2023-07-04 北京优炫软件股份有限公司 一种数据库刷脏的控制方法以及控制系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571850A (zh) * 2010-12-24 2012-07-11 中国移动通信集团山东有限公司 事务提交系统、方法及设备
CN105122241A (zh) * 2013-03-15 2015-12-02 亚马逊科技公司 具有数据库引擎和独立分布式存储服务的数据库系统
CN106815275A (zh) * 2015-12-02 2017-06-09 阿里巴巴集团控股有限公司 一种通过备用数据库实现主备数据库同步的方法与设备
CN106855822A (zh) * 2015-12-08 2017-06-16 阿里巴巴集团控股有限公司 用于分布式事务处理的方法及设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571850A (zh) * 2010-12-24 2012-07-11 中国移动通信集团山东有限公司 事务提交系统、方法及设备
CN105122241A (zh) * 2013-03-15 2015-12-02 亚马逊科技公司 具有数据库引擎和独立分布式存储服务的数据库系统
CN106815275A (zh) * 2015-12-02 2017-06-09 阿里巴巴集团控股有限公司 一种通过备用数据库实现主备数据库同步的方法与设备
CN106855822A (zh) * 2015-12-08 2017-06-16 阿里巴巴集团控股有限公司 用于分布式事务处理的方法及设备

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112835915B (zh) * 2019-11-25 2023-07-18 中国移动通信集团辽宁有限公司 Mpp数据库系统、数据存储方法及数据查询方法
CN112835915A (zh) * 2019-11-25 2021-05-25 中国移动通信集团辽宁有限公司 Mpp数据库系统、数据存储方法及数据查询方法
CN112988880B (zh) * 2019-12-12 2024-03-29 阿里巴巴集团控股有限公司 数据同步方法、装置、电子设备及计算机存储介质
CN112988880A (zh) * 2019-12-12 2021-06-18 阿里巴巴集团控股有限公司 数据同步方法、装置、电子设备及计算机存储介质
CN111046024A (zh) * 2019-12-16 2020-04-21 上海达梦数据库有限公司 一种共享存储数据库的数据处理方法、装置、设备及介质
CN111046024B (zh) * 2019-12-16 2023-05-23 上海达梦数据库有限公司 一种共享存储数据库的数据处理方法、装置、设备及介质
CN110825763A (zh) * 2020-01-08 2020-02-21 上海爱可生信息技术股份有限公司 基于共享存储的MySQL数据库高可用系统及其高可用方法
WO2021185059A1 (zh) * 2020-03-20 2021-09-23 华为技术有限公司 一种针对数据库的数据迁移方法及装置
CN111475480B (zh) * 2020-04-13 2023-08-15 上海达梦数据库有限公司 一种日志处理方法及系统
CN111475480A (zh) * 2020-04-13 2020-07-31 上海达梦数据库有限公司 一种日志处理方法及系统
CN111639087A (zh) * 2020-05-28 2020-09-08 北京金山云网络技术有限公司 数据库中数据更新方法、装置和电子设备
CN111639087B (zh) * 2020-05-28 2023-09-08 北京金山云网络技术有限公司 数据库中数据更新方法、装置和电子设备
WO2021238341A1 (zh) * 2020-05-28 2021-12-02 北京金山云网络技术有限公司 数据库中数据更新方法、装置和电子设备
CN112182010B (zh) * 2020-11-30 2021-03-12 北京金山云网络技术有限公司 脏页刷新方法和装置、存储介质和电子设备
CN112182010A (zh) * 2020-11-30 2021-01-05 北京金山云网络技术有限公司 脏页刷新方法和装置、存储介质和电子设备
CN113760926A (zh) * 2020-12-02 2021-12-07 北京沃东天骏信息技术有限公司 一种数据读写系统及数据写入方法
CN112637284A (zh) * 2020-12-09 2021-04-09 北京金山云网络技术有限公司 重做日志的存储方法和装置、电子设备和存储介质
CN113553382B (zh) * 2021-08-06 2023-06-02 上海达梦数据库有限公司 数据页的刷盘方法、装置、设备及存储介质
CN113553382A (zh) * 2021-08-06 2021-10-26 上海达梦数据库有限公司 数据页的刷盘方法、装置、设备及存储介质
CN113704361B (zh) * 2021-10-28 2022-02-15 腾讯科技(深圳)有限公司 事务执行方法、装置、计算设备及存储介质
CN113704361A (zh) * 2021-10-28 2021-11-26 腾讯科技(深圳)有限公司 事务执行方法、装置、计算设备及存储介质
CN116382981A (zh) * 2023-04-06 2023-07-04 北京优炫软件股份有限公司 一种数据库刷脏的控制方法以及控制系统

Similar Documents

Publication Publication Date Title
CN110019066A (zh) 数据库处理方法及装置、系统
CN111656340B (zh) 在数据库系统中的数据复制和数据故障转移
WO2018059032A1 (zh) 一种虚拟节点的数据迁移方法和虚拟节点
CN108509462B (zh) 一种同步活动事务表的方法及装置
CN103229171B (zh) 基于快照的复制
US20080306990A1 (en) System for performing a redistribute transparently in a multi-node system
CN105843702A (zh) 一种用于数据备份的方法以及装置
US10310904B2 (en) Distributed technique for allocating long-lived jobs among worker processes
EP2406736A2 (en) Composite hash and list partitioning of database tables
US20140101102A1 (en) Batch processing and data synchronization in cloud-based systems
US10628298B1 (en) Resumable garbage collection
WO2020191930A1 (zh) 一种有效降低容器化关系型数据库i/o消耗的方法
JP2004005358A5 (zh)
CN105426373A (zh) 一种数据库同步方法与设备
CN104881418A (zh) 用于MySQL的快速回收回滚空间的方法和装置
CN109271376A (zh) 数据库升级方法、装置、设备及存储介质
JP7038864B2 (ja) 検索サーバの集中型ストレージ
JP2007041888A (ja) データベース再構成装置、およびデータベース再構成プログラム
CN110121694A (zh) 一种日志管理方法、服务器和数据库系统
CN114741449A (zh) 一种基于分布式数据库的对象存储方法及装置
CN107943412A (zh) 一种分区分裂、删除分区中数据文件的方法、装置及系统
US9037762B2 (en) Balancing data distribution in a fault-tolerant storage system based on the movements of the replicated copies of data
CN110019130A (zh) 一种数据库更新的方法及装置
US11940972B2 (en) Execution of operations on partitioned tables
US11907162B2 (en) Minimizing data volume growth under encryption changes

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: 40010959

Country of ref document: HK

TA01 Transfer of patent application right

Effective date of registration: 20210922

Address after: Room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Applicant after: Alibaba (China) Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: ALIBABA GROUP HOLDING Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20211202

Address after: No.12 Zhuantang science and technology economic block, Xihu District, Hangzhou City, Zhejiang Province

Applicant after: Aliyun Computing Co.,Ltd.

Address before: 310052 room 508, 5th floor, building 4, No. 699 Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Applicant before: Alibaba (China) Co.,Ltd.

TA01 Transfer of patent application right
RJ01 Rejection of invention patent application after publication

Application publication date: 20190716

RJ01 Rejection of invention patent application after publication