CN105446825B - 数据库测试方法及装置 - Google Patents
数据库测试方法及装置 Download PDFInfo
- Publication number
- CN105446825B CN105446825B CN201410260942.3A CN201410260942A CN105446825B CN 105446825 B CN105446825 B CN 105446825B CN 201410260942 A CN201410260942 A CN 201410260942A CN 105446825 B CN105446825 B CN 105446825B
- Authority
- CN
- China
- Prior art keywords
- database
- data operation
- data
- operation request
- backup
- 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
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 96
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000000977 initiatory effect Effects 0.000 claims abstract description 13
- 238000003780 insertion Methods 0.000 claims description 18
- 230000037431 insertion Effects 0.000 claims description 18
- 238000012217 deletion Methods 0.000 claims description 16
- 230000037430 deletion Effects 0.000 claims description 16
- 230000010076 replication Effects 0.000 claims description 10
- 238000005096 rolling process Methods 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000010998 test method Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 5
- 238000011056 performance test Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000009530 blood pressure measurement Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种数据库测试方法及装置,所述方法包括:停止备份数据库对主数据库的复制,所述备份数据库为所述主数据库的备份数据库;获取在预设时间内对所述主数据库的第一数据操作请求;根据所获取的在预设时间内对所述主数据库的第一数据操作请求,向所述备份数据库发起第二数据操作请求;当备份数据库根据所接收的第二数据操作请求执行相应的数据操作时,对于备份数据库进行数据库测试,得到数据库测试结果。上述的方案可以有效提高数据库测试结果的准确性。
Description
技术领域
本申请涉及数据库技术领域,特别是涉及一种数据库测试方法及装置。
背景技术
MySQL,是一种开放源代码的关系型数据库管理系统,属于中、小型关系型数据库管理系统,它将数据保存在不同的表中,而不是将所有数据放在一起,因此可以提高数据处理速度和灵活性。MySQL数据库系统,其使用最常用的数据库管理语言--结构化查询语言(Structured Query Language,简称SQL)进行数据库管理。MySQL数据库开放源码,具有体积小、速度快、成本低,尤其是这一特点,使得MySQL为一般的中小型网站的开发者所喜爱,将其作为网站数据库。
MySQL数据库性能测试可以帮助用户了解MySQL数据库的性能。现有技术中,由于MySQL性能测试一般采用随机程序生成的样本数据进行数据库性能测试,因此,测试结果无法准确地反映MySQL数据库的真实性能。
发明内容
本申请实施例解决的是如何进行数据库测试,以得到真实准确地数据库测试结果。
为解决上述问题,本申请实施例提供了一种数据库测试方法,所述方法包括:
停止备份数据库对主数据库的复制;
获取在预设时间内对主数据库的第一数据操作请求;
根据所获取的所述第一数据操作请求,向备份数据库发起相应的第二数据操作请求,所述备份数据库为所述主数据库的备份数据库;
当所述备份数据库根据所述相应的第二数据操作请求执行相应的数据操作时,对所述备份数据库进行测试。
可选地,所述获取在预设时间内对于主数据库的第一数据操作请求包括:
获取预设时间内所述主数据库所接收的第一数据操作请求;
存储所获取的第一数据操作请求,生成压力文本文件。
可选地,所述根据所获取的在预设时间内对于主数据库的第一数据操作请求,向所述备份数据库发起第二数据操作请求,包括:
读取所述压力文本文件中存储的第一数据操作请求;
根据所读取的压力文本文件中存储的第一数据操作请求,向所述备份数据库发起相应的第二数据操作请求,其中,向备份数据库发起的相应的第二数据操作请求与所读取的压力文本文件中存储的第一数据操作请求成比例。
可选地,所述方法还包括:当数据库测试结束时,对所述备份数据库进行数据回滚。
可选地,所述对所述备份数据库进行数据回滚,包括:
获取并解析所述备份数据库在预定时间内的二进制日志文件,得到明文日志文件,所述明文日志文件中包括预定时间内所述备份数据库的事务的信息,所述事务信息中包括数据操作语句;
将所述事务信息中的数据操作语句替换为所述数据操作语句的反向操作语句;
将数据操作语句替换为反向数据操作语句的事务按照时间顺序倒置;
将所述事务中的反向数据操作语句按照所述反向数据操作语句相应的数据操作语句的时间顺序进行倒置,得到回滚日志文件,所述二进制回滚日志文件被所述备份数据库执行,进行数据回滚。
可选地,所述方法还包括:将经过数据回滚的备份数据库与所述主数据库进行同步。
可选地,所述数据操作语句包括:数据删除语句、数据插入语句和数据更新语句中至少一种。
可选地,所述主数据库和所述备份数据库均为MySQL数据库。
本申请实施例还提供了一种数据库测试装置,所述装置包括:
停止单元,适于停止备份数据库对主数据库的复制;
获取单元,适于获取在预设时间内对主数据库的第一数据操作请求;
请求单元,适于根据所获取的所述第一数据操作请求,向所述备份数据库发起第二数据操作请求;
测试单元,适于当所述备份数据库根据所述相应的第二数据操作请求执行相应的数据操作时,对所述备份数据库进行测试。
可选地,所述获取单元包括:
获取子单元,适于获取预设时间内所述主数据库所接收的第一数据操作请求;
存储子单元,适于存储所获取的第一数据操作请求,生成压力文本文件。
可选地,所述请求单元包括:
读取子单元,适于读取所述压力文本文件中存储的第一数据操作请求;
请求子单元,适于根据所读取的压力文本文件中的数据操作请求,向所述备份数据库发起相应的第二数据操作请求,其中,向所述备份数据库发起的数据操作请求与所读取的压力文本文件中存储的第一数据操作请求成比例。
可选地,所述装置还包括:回滚单元,适于当数据库测试结束时,对所述备份数据库进行数据回滚。
可选地,所述回滚单元包括:
解析子单元,适于获取并解析所述备份数据库在预定时间内的二进制日志文件,得到明文日志文件,所述明文日志文件中包括预定时间内所述备份数据库的事务的信息,所述事务信息中包括数据操作语句;
替换子单元,适于将所述事务信息中的数据操作语句替换为所述数据操作语句的反向操作语句;
第一倒置子单元,适于将数据操作语句替换为反向数据操作语句的事务按照时间顺序倒置;
第二倒置子单元,适于将所述事务中的反向数据操作语句按照所述反向数据操作语句相应的数据操作语句的时间顺序进行倒置,得到回滚日志文件,所述回滚日志文件被所述备份数据库执行,进行数据回滚。
可选地,所述装置还包括:同步单元,适于将经过数据回滚的备份数据库与所述主数据库进行同步。
可选地,所述数据操作语句包括:数据删除语句、数据插入语句和数据更新语句中至少一种。
可选地,所述主数据库和所述备份数据库均为MySQL数据库。
与现有技术相比,本申请实施例的技术方案具有以下的优点:
上述的方案,由于通过获取预设时间内主数据库的第一数据操作请求,并将所获取的第一数据操作请求向所述主数据库的备份数据库发起第二数据操作请求,在备份数据库根据所述数据操作请求执行数据操作的过程中进行数据库测试,由于采用的数据操作请求从真实运行过程的主数据库中获取,因此,可以真实地反映数据库所承受的数据操作压力,可以有效提高数据库测试结果的准确性。
进一步地,由于在数据库测试结束时对于备份数据库进行数据回滚,并与主数据库中的数据进行同步,使得数据库测试不会对数据库的运行产生任何影响。
附图说明
图1是本申请实施例中的一种数据库测试方法的流程图;
图2是本申请实施例中另一种数据库测试方法的流程图;
图3是本申请实施例中的一种数据库测试装置的结构示意图;
图4是本申请实施例中的另一种数据库测试装置的结构示意图;
图5是本申请实施例中的数据库测试装置中的回滚子单元的结构示意图。
具体实施方式
现有技术中,MySQL数据库测试通常采用如下的做法:
配置与线上数据库相同的机器;
将线上的数据表同步到性能数据库上;
按照线上业务数据规则通过随机程序生成和线上相同基本等量的样本数据。
了解业务得到业务逻辑,按照这样的逻辑通过压测工具进行压测。
上述的数据库测试方法,其所使用的测试数据是随机生成的,而随机生成的测试数据在数据量、数据分布等方面与线上数据库的真实数据存在着差异,且配置出来的测试场景也无法反应真实的数据库运行状况。因此,采用这种测试方法得到的数据库测试结果将无法确切地反映数据库的真实性能。
为解决上述问题,本申请实施例通过获取主数据库在线上运行过程中所接收的第一数据操作请求,并将根据第一数据操作请求将第二数据操作请求应用于所述主数据库的备份数据库,在该备份数据库处理第二数据操作请求的过程中进行数据库测试,可以有效提高数据库测试结果的准确性。在此,本领域技术人员应能理解,第一数据操作请求、第二数据操作请求并不限定该两数据操作请求的时间顺序或执行顺序,而是旨在区分分别作用于主数据库、备份数据库的数据操作请求。
为使本申请的上述目的、特征和优点能够更为明显易懂,下面结合附图对本申请的具体实施例做详细的说明。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的子单元或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出了本申请实施例中的一种数据库测试方法的流程图。如图1所示的数据库测试方法,可以包括:
步骤S11:停止备份数据库对于主数据库的复制。
在具体实施中,备份数据库为主数据库的备份数据库,备份数据库可以将主数据库的数据进行复制。
例如,在MySQL数据库中,备份数据库可以通过SQL线程对主数据库的数据进行复制,以防在主数据库发生意外状况时,可以保证数据的安全性和完整性。
步骤S12:获取在预设时间内对于主数据库的第一数据操作请求。
在具体实施中,为了获取主数据库在线上运行时所承受的真实压力,可以通过获取预设时间内,处于线上运行状态的主数据库所接收的第一数据操作请求进行。其中,主数据库的第一数据操作请求可以包括对主数据库中的数据读写请求。主数据库在接收到第一数据操作请求时,可以根据所述第一数据操作请求执行相应的数据操作。
步骤S13:根据所获取的所述第一数据操作请求,向所述备份数据库发起相应的第二数据操作请求。
在具体实施中,为了将主数据库所承受的数据读写压力进行真实再现,可以将所获取的预设时间内对于主数据库的第一数据操作请求,向备份数据库发起相应的第二数据操作请求。
步骤S14:当备份数据库根据所述相应的第二数据操作请求执行相应的数据操作时,对于备份数据库进行数据库测试,得到数据库测试结果。
在具体实施中,当备份数据库接收到第二数据操作请求时,会根据所接收的第一数据操作请求执行相应的数据操作。当备份数据库根据所接收的第二数据操作请求执行相应的操作的过程中,可以通过备份数据库所在的备份服务器的操作系统提供的接口,获取备份数据库的各项性能参数,并根据所获取的数据库的各项性能参数,可以得到数据库测试的结果。
本申请实施例的数据库测试方法,通过获取预设时间内处于线上运行状态的主数据库所接收的第一数据操作请求,并根据所获取的第一数据操作请求,向所述主数据库的备份数据库发起第二数据操作请求,在备份数据库根据所述第二数据操作请求执行数据操作的过程中进行数据库测试。由于数据库测试所采用的数据操作请求从在线运行过程的主数据库获取,因此,可以真实地反映数据库所承受的数据操作压力,从而可以有效提高数据库测试结果的准确性。
图2示出了本申请实施例中的另一种数据库测试方法的流程图。如图2所示的数据库测试方法,可以包括:
步骤S21:停止备份数据库对于主数据库的复制。
在具体实施中,所述备份数据库为所述主数据库的备份数据库。为了获取数据库的真实数据读写压力,可以在不影响主数据库线上运行的情况下,通过主数据库的备份数据库进行。
步骤S22:获取预设时间内所述主数据库所接收的第一数据操作请求。
在具体实施中,主数据库的数据操作是根据其所接收的第一数据操作请求进行的。
例如,在MySQL数据库中,可以通过SQL语句向主数据库发起第二数据操作请求。因此,可以通过获取在预设时间内中主数据库的服务层所接收的SQL语句,获取对主数据库的第一数据操作请求。
由于所获取的对于主数据库的第一数据操作请求,来源于主数据库在线上运行过程中所接收的第一数据操作请求,再根据在线上运行过程中的主数据库接收的第一数据操作请求,来进行数据库测试,使得测试数据更加真实,因此,可以有效提高数据库测试结果的准确性。
步骤S23:存储所述第一数据操作请求,生成压力文本文件。
在具体实施中,为了可以将预设时间内所获取的数据操作压力向备份数据数据库进行重放,可以将所获取的主数据库在预设时间内所接收的第一数据操作请求存储在压力文本文件中。
例如,在MySQL数据库中,压力文本文件中存储的第一数据操作请求可以包括SQL语句形式的数据操作语句,例如,数据插入语句、数据删除语句、数据更新语句和数据查询语句等。
步骤S24:读取所述压力文本文件中存储的第一数据操作请求。
在具体实施中,为了更加真实地再现主数据库的线上运行过程,不额外消耗备份数据库的资源读取压力文本中存储的第一数据操作请求,也即是数据操作语句,可以首先读取测试压力文本文件中所存储的第一数据操作请求,并向备份数据库发起相应的第二数据操作请求。
例如,在MySQL数据库中,可以将读取的测试压力文本文件中存储的SQL语句,如数据插入语句、数据删除语句、数据更新语句和数据查询语句,应用于备份数据库,向备份数据库发起相应的数据插入、数据删除和数据更新请求。
步骤S25:根据所读取的所述压力文本文件中存储的第一数据操作请求,向所述备份数据库发起相应的第二数据操作请求。
在具体实施中,为了获取所需要的数据库测试用数据,可以按照一定的规则将读取所述压力文本文件发送给备份数据库,向备份数据库发送数据操作请求。
例如,可以逐条读取压力文本文件中的数据操作语句,并将所读取的数据操作语句向备份数据库发送一次以上,从而使得向备份数据库发送的第二数据操作请求与压力文本文件中存储的第一数据操作请求成比例。
再如,也可以通过控制向备份数据库发送数据操作请求的时间,例如,正常的数据操作请求之间的时间间隔为5毫秒,通过将数据操作请求之间的时间间隔设置为小于正常的时间间隔的数值,如可以为4毫秒、3毫秒、2毫秒、1毫秒或者0毫秒等,实现向备份数据库发送的第二数据操作请求与压力文本文件中存储的第一数据操作请求成比例。
步骤S26:当所述备份数据库根据所述相应的第二数据操作请求执行相应的数据操作时,对所述备份数据库进行测试。
在具体实施中,在备份数据库根据所接收的第二数据操作请求执行相应的数据操作时,可以采集备份数据库的各项性能参数,以便得出数据库的性能测试结果。
步骤S27:当所述测试结束时,对于所述备份数据库进行数据回滚。
在具体实施中,数据库测试会使备份数据库中的数据产生相应的变化。为了不影响备份数据库对于主数据库的复制功能,恢复备份数据库的备份和复制功能,可以对于备份数据库进行数据回滚,以使得备份数据库恢复到数据库测试之前的状态。
同时,在备份数据库进行性能测试期间,主数据库仍然处于正常运行的数据读写状态,其接收数据操作请求,并完成相应的数据操作。因此,备份数据库中的数据与主数据库中的数据将不同步。此时,可以对备份数据库进行数据回滚,以便进行后续的数据同步。
对备份数据库进行数据回滚可以借助数据库的日志文件系统进行。
例如,在MySQL数据库的日志文件系统中,非常重要的部分是二进制日志文件(binary log)系统。binary log日志文件系统中包括所有的二进制日志(binlog)文件和二进制日志索引(binlog index)文件。
其中,binlog文件是指单个的二进制日志文件,可以有多个,数据库每一次日志写入操作,都会生成一个新的binlog文件。binlog文件中记录的是一个个事件,是导致数据库中的数据产生变动的事件,其可以包括数据操作语言(Data Manipulation Language,简称DML)中的数据插入语句、
数据删除语句和数据更新语句。另外,数据查询语句不会导致数据库中的数据发生变换,不会被写入binlog文件中。
二进制日志索引(binlog index)文件只有一个,它是binlog文件的索引文件,其中记录了所有的binlog文件的名称。
在具体实施中,在MySQL数据库中,备份数据库的数据回滚可以借助binlog文件进行。
图3示出了本申请实施例中的对所述备份数据库进行数据回滚的流程图。如图3所示的对备份数据库进行数据回滚,可以包括:
步骤S31:获取并解析所述备份数据库在预定时间内的二进制日志文件,得到明文日志文件。
在具体实施中,由于所获取的备份数据库的日志文件为二进制,为了便于对于日志文件进行处理,可以首先将机器语言形式描述的二进制日志文件转换成为相应的明文,得到明文日志文件。
另外,在数据库日志文件中,对于单条数据的操作则构成一个事件,而数据库事务则由对于数据库中的多条关联数据进行数据操作的事件构成,也即数据库事务中可以包括多个事件,也即多条关联数据的数据操作语句。因此,所获取预设时间内的二进制日志文件和解析得到的明文日志文件可以包括多个事务,而每个事务中又可以包括多个事件。
步骤S32:将所述事务中的数据操作语句替换为所述数据操作语句的反向操作语句。
在具体实施中,对于备份数据库中的数据产生影响的数据操作语句可以包括:数据插入语句、数据删除语句和数据更新语句。相应地,数据插入语句的反向操作语句为数据删除语句,数据删除语句的反向操作语句为数据插入语句,数据更新语句的反向操作语句为数据更新操作语句。
例如,在MySQL数据库中,可以采用下述的数据插入语句向备份数据库中插入数据:
Insert into employee where(job number=001,sex=male,age=38);
上述的数据插入语句的含义为向名为employee的数据表中插入工号为001,性别为男性,年龄为38的员工的信息。
所述数据插入语句对应的反向操作语句,数据删除语句为:
Delete from employee where(job number=001,sex=male,age=38);
所述数据删除语句对应的数据操作为从employee的数据表中删除工号为001,性别为男性,年龄为38的员工的信息。
同理,数据删除语句的反向操作语句为相应的数据插入语句,数据更新语句的反向操作语句为相应的数据更新语句。
步骤S33:将经过数据操作语句替换的事务按照时间顺序倒置。
在具体实施中,二进制日志文件中所记录的数据库事务是按照时间顺序排列的,转换成为明文日志文件中的事务也是按照时间顺序排列的。因此,为了实现数据的回滚,可以在将数据操作语句替换为相应的反向数据操作语句的事务按照时间顺序倒置。
步骤S34:将按照时间顺序倒置的事务中的反向数据操作语句按照反向数据操作相应的数据操作语句的时间数据顺序进行倒置,得到回滚日志文件。
在具体实施中,为了将数据回滚至预定的时刻,可以将预定事件内所获取的明文日志文件中的事务内的反向数据操作语句根据时间顺序倒置。例如,在一个数据库事务中可以包括依次操作的数据插入语句和数据删除语句。在将数据插入语句替换为对应的反向数据操作语句——数据删除语句,将数据删除语句替换为相应的反向数据操作语句——数据插入语句之后,可以将事务中的替换得到的数据删除语句和数据插入语句倒置。通过这种方式,可以实现明文日志文件中的各个事务内的反向数据操作语句按照时间各自对应的数据操作语句的时间顺序进行倒置。
在具体实施中,备份数据库可以直接执行明文形式的回滚日志文件,也可以直接执行可识别的二进制形式的回滚日志文件。因此,本发明实施例中得到的回滚日志文件可以直接被备份数据库执行,从而完成备份数据库的数据回滚。
由于将预定时间内的对于备份数据库的数据库事务中各个事件对应数据操作语句首先替换为反向操作语句,再将经过数据操作语句替换的各个事务按照时间顺序进行倒置,然后,将按照时间顺序倒置的事务内的反向操作语句按照其相应的数据操作语句的时间顺序进行倒置,因此,可以将备份数据库中的数据回滚到预定时刻。
例如,在MySQL数据库中,在停止备份数据库对于主数据库的复制的时刻,可以将主数据库设置为只读模式。同时,停止备份数据库的复制线程中的SQL线程,记录所述时刻主数据库的binlog位点信息,记为Am,并记录所述时刻备份数据库的binlog位点信息,记为As。记录完毕后,可以立即恢复主数据库为可写状态。
假定在数据库测试结束时,备份数据库的binlog位点为Bs,通过本申请实施例中的备份数据库的数据回滚方法,便可以将备份数据库中的数据回滚至数据库测试开始的时刻,也即是将备份数据库中的binlog位点由Bs恢复至As。
继续参见图2,在具体实施中,为了恢复备份数据库的备份功能,本申请实施例中的数据库测试方法还可以包括:
步骤S28:将经过数据回滚后的备份数据库与所述主数据库进行同步。
在具体实施中,为了将经过数据回滚后的备份数据库与主数据进行同步,同样也可以借助于数据库的日志文件系统进行。
例如,在MySQL数据库中,可以借助前述的MySQL数据库的日志文件系统中的(binlog)文件和二进制日志索引(binlog index)文件进行备份数据库和主数据库的数据同步操作。
为了更加准确地将备份数据库与主数据库进行数据同步,在数据库测试开始的时刻,也即在停止备份数据库对于主数据库的复制的时刻,可以将主数据库设置为只读状态,并记录主数据库此刻的binlog位点信息。
relay-log日志,记录的是在备份数据库在复制主数据库的过程中,备份数据库所在的备份服务器的I/O线程所读取主数据库的二进制日志文件。备份服务器可以将所读取的主数据库的二进制日志文件存储到本地文件中,然后备份数据库的SQL线程会读取备份服务器中存储的relay-log日志,并执行相应的数据复制和备份操作。
另外,由于在数据库测试开始的时刻,仅停止备份数据库的SQL线程,所以从数据库测试开始的时刻直到备份数据库的数据回滚结束时,主数据库中数据所发生的变化均可以通过备份数据库的I/O线程写入到备份数据库的relay-log日志中。因此,可以开启备份数据库的SQL线程,读取并执行relay-log日志,便可以将备份数据库与主数据库进行数据同步,保持备份数据库和主数据库的数据的一致性。
图4示出了本申请实施例中的一种数据库测试装置的结构示意图。如图4所示的数据库测试装置,可以包括依次连接的停止单元41、获取单元42、请求单元43和测试单元44。其中:
停止单元41,适于停止备份数据库对于主数据库的复制。其中,所述备份数据库为所述主数据库的备份数据库。
获取单元42,适于在停止单元41停止对于主数据库的复制后,获取在预设时间内对于主数据库的第一数据操作请求。
请求单元43,根据获取单元42所获取的所述第一数据操作请求,向所述备份数据库发起第二数据操作请求。
测试单元44,适于当备份数据库根据请求单元43发起的数据操作请求执行相应的数据操作时,对于备份数据库进行数据库测试,得到数据库测试结果。
在具体实施中,所述获取单元42可以包括依次连接的获取子单元421、存储子单元422。其中:
获取子单元421,适于获取预设时间内所述主数据库所接收的第一数据操作请求。
存储子单元422,适于存储获取子单元421所获取的第一数据操作请求,生成所述压力文本文件。
在具体实施中,所述请求单元43可以包括依次连接的读取子单元431和请求子单元432。其中:
读取子单元431,适于读取所述压力文本文件中所存储的第一数据操作请求。
请求子单元432,适于根据所读取压力文本文件中的数据操作请求,并向所述备份数据库发起相应的第二数据操作请求。
在具体实施中,向所述备份数据库发起的数据操作请求与所读取的压力文本文件中数据操作请求成比例。
在具体实施中,数据库测试装置还可以包括与测试单元11连接的回滚单元45。其中:
回滚单元45,适于当测试单元44数据库测试结束时,对所述备份数据库进行数据回滚。
在具体实施中,数据库测试装置还可以包括与回滚单元45相连接的同步单元46。其中:
同步单元46,适于将经过数据回滚的备份数据库与主数据库进行同步。
图5示出了本申请实施例中的数据库测试装置中的回滚单元的结果示意图。如图5所示的回滚单元,可以包括依次连接的解析子单元51、替换子单元52、第一倒置子单元53和第二倒置子单元54。其中:
解析子单元51,适于获取并解析所述备份数据库在预设时间内的二进制日志文件,得到明文日志文件。
在具体实施中,所述二进制日志文件中可以包括按照顺序排列的二进制事务信息,所述二进制事务信息中可以包括多个二进制形式的事件信息。所述明文日志文件中可以包括预设时间内所述备份数据库的事务信息,所述事务信息中可以包括多个事件,也即多条数据操作语句。
替换子单元52,将解析子单元51解析得到的明文日志文件中事务的数据操作语句替换为所述数据操作语句的反向操作语句。
第一倒置子单元53,适于将经过替换子单元52将数据操作语句替换为相应的反向数据操作语句的事务,按照时间顺序倒置。
在具体实施中,所述数据操作语句可以包括数据删除语句、数据插入语句和数据更新语句中至少一种。
第二倒置子单元54,适于将第一倒置子单元53按照时间顺序倒置的事务中的反向数据操作语句,按照所述反向操作语句相应的数据操作语句的时间顺序进行倒置,得到回滚日志文件,所述二进制回滚日志文件可以直接由备份数据库执行,进行数据回滚。
在具体实施中,所述主数据库和所述备份数据库均为MySQL数据库。
本申请实施例中的数据库测试装置,通过获取预设时间内主数据库的第一数据操作请求,并根据第一数据操作请求向所述主数据库的备份数据库发起第二数据操作请求,在备份数据库根据所述第二数据操作请求执行数据操作的过程中进行数据库测试。由于采用的数据操作请求从处于线上运行状态的主数据库获取,可以真实地反映数据库所承受的数据操作压力,因此,可以有效提高数据库测试结果的准确性。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本申请实施例的方法及系统做了详细的介绍,本申请并不限于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (16)
1.一种数据库测试方法,其特征在于,包括:
停止备份数据库对主数据库的复制,获取在预设时间内对所述主数据库的第一数据操作请求;
根据所获取的所述第一数据操作请求,向所述备份数据库发起相应的第二数据操作请求;
当所述备份数据库根据所述相应的第二数据操作请求执行相应的数据操作时,对所述备份数据库进行测试。
2.根据权利要求1所述的数据库测试方法,其特征在于,所述获取在预设
时间内对所述主数据库的第一数据操作请求,包括:
获取预设时间内所述主数据库所接收的第一数据操作请求;
存储所获取的第一数据操作请求,生成压力文本文件。
3.根据权利要求2所述的数据库测试方法,其特征在于,所述根据所获取的所述第一数据操作请求,向所述备份数据库发起相应的第二数据操作请求,包括:
读取所述压力文本文件中存储的所述第一数据操作请求;
根据所读取的所述压力文本文件中存储的所述第一数据操作请求,向所述备份数据库发起相应的第二数据操作请求,其中,向所述备份数据库发起的相应的第二数据操作请求与所读取的所述压力文本文件中的所述第一数据操作请求成比例。
4.根据权利要求1所述的数据库测试方法,其特征在于,还包括:当所述测试结束时,对所述备份数据库进行数据回滚。
5.根据权利要求4所述的数据库测试方法,其特征在于,所述对所述备份数据库进行数据回滚,包括:
获取并解析所述备份数据库在预定时间内的二进制日志文件,得到明文日志文件,所述明文日志文件中包括预定时间内所述备份数据库的事务的信息,所述事务信息中包括数据操作语句;
将所述事务信息中的数据操作语句替换为所述数据操作语句的反向操作语句;
将数据操作语句替换为反向数据操作语句的事务按照时间顺序倒置;
将所述事务中的反向数据操作语句按照所述反向数据操作语句相应的数据操作语句的时间顺序进行倒置,得到回滚日志文件
所述回滚日志文件被所述备份数据库执行,进行数据回滚。
6.根据权利要求5所述的数据库测试方法,其特征在于,还包括:将经过数据回滚的备份数据库与所述主数据库进行同步。
7.根据权利要求5所述的数据库测试方法,其特征在于,所述数据操作语句包括:数据删除语句、数据插入语句和数据更新语句中至少一种。
8.根据1-7任一项所述的数据库测试方法,其特征在于,所述主数据库和所述备份数据库均为MySQL数据库。
9.一种数据库测试装置,其特征在于,包括:
停止单元,适于停止备份数据库对主数据库的复制;
获取单元,适于获取在预设时间内对所述主数据库的第一数据操作请求;请求单元,适于根据所获取的所述第一数据操作请求,向所述备份数据库发起相应的第二数据操作请求;
测试单元,适于当所述备份数据库根据所述相应的第二数据操作请求执行相应的数据操作时,对所述备份数据库进行测试。
10.根据权利要求9所述的数据库测试装置,其特征在于,所述获取单元包括:
获取子单元,适于获取预设时间内所述主数据库所接收的第一数据操作请求;
存储子单元,适于存储所获取的第一数据操作请求,生成压力文本文件。
11.根据权利要求10所述的数据库测试装置,其特征在于,所述请求单元包括:
读取子单元,适于读取所述测试压力文本文件中存储的第一数据操作请求;
请求子单元,适于根据所读取的第一数据操作请求,向所述备份数据库发起相应的第二数据操作请求,其中,向所述备份数据库发起的第二数据操作请求与所读取的压力文本文件中存储的第一数据操作请求成比例。
12.根据权利要求9所述的数据库测试装置,其特征在于,还包括:回滚单元,适于当数据库测试结束时,对所述备份数据库进行数据回滚。
13.根据权利要求12所述的数据库测试装置,其特征在于,所述回滚单元包括:
解析子单元,适于获取并解析所述备份数据库在预定时间内的二进制日志文件,得到明文日志文件,所述明文日志文件中包括预定时间内所述备份数据库的事务的信息,所述事务信息中包括数据操作语句;
替换子单元,适于将所述事务信息中的数据操作语句替换为所述数据操作语句的反向操作语句;
第一倒置子单元,适于将数据操作语句替换为反向数据操作语句的事务按照时间顺序倒置;
第二倒置子单元,适于将所述事务中的反向数据操作语句按照所述反向数据操作语句相应的数据操作语句的时间顺序进行倒置,得到回滚日志文件,所述回滚日志文件被所述备份数据库执行,进行数据回滚。
14.根据权利要求13所述的数据库测试装置,其特征在于,还包括:同步单元,适于将经过数据回滚的备份数据库与所述主数据库进行同步。
15.根据权利要求13所述的数据库测试装置,其特征在于,所述数据操作语句包括:数据删除语句、数据插入语句和数据更新语句中至少一种。
16.根据9-15任一项所述的数据库测试装置,其特征在于,所述主数据库和所述备份数据库均为MySQL数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410260942.3A CN105446825B (zh) | 2014-06-12 | 2014-06-12 | 数据库测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410260942.3A CN105446825B (zh) | 2014-06-12 | 2014-06-12 | 数据库测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105446825A CN105446825A (zh) | 2016-03-30 |
CN105446825B true CN105446825B (zh) | 2020-08-11 |
Family
ID=55557060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410260942.3A Active CN105446825B (zh) | 2014-06-12 | 2014-06-12 | 数据库测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105446825B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766219A (zh) * | 2015-07-23 | 2019-05-17 | 深圳市沃信科技有限公司 | 一种数据库容灾系统 |
CN106250514B (zh) * | 2016-08-04 | 2019-10-15 | 上海摩库数据技术有限公司 | 基于Mysql数据库和SQL日志的跨国数据同步方法 |
CN108509455B (zh) * | 2017-02-28 | 2021-12-24 | 百度在线网络技术(北京)有限公司 | 数据表处理方法和装置 |
CN107885654A (zh) * | 2017-05-05 | 2018-04-06 | 平安科技(深圳)有限公司 | 数据库测试方法及系统 |
CN108228437B (zh) * | 2017-12-29 | 2021-08-31 | Oppo广东移动通信有限公司 | 提升测评准确度的方法、装置、电子装置及存储介质 |
CN109254904B (zh) * | 2018-08-31 | 2022-02-08 | 创新先进技术有限公司 | 一种数据库压测方法、装置及电子设备 |
CN110471983A (zh) * | 2019-07-15 | 2019-11-19 | 广州至真信息科技有限公司 | 一种业务操作方法、装置、计算机设备和存储介质 |
CN111625458A (zh) * | 2020-05-27 | 2020-09-04 | 泰康保险集团股份有限公司 | 业务系统测试方法、装置及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930791A (en) * | 1996-12-09 | 1999-07-27 | Leu; Sean | Computerized blood analyzer system for storing and retrieving blood sample test results from symmetrical type databases |
CN102147758A (zh) * | 2011-03-16 | 2011-08-10 | 深圳创维数字技术股份有限公司 | 一种待测设备自动编译及配置方法、装置、系统 |
CN102254035A (zh) * | 2011-08-09 | 2011-11-23 | 广东电网公司电力科学研究院 | 关系数据库测试方法及测试系统 |
CN102722537A (zh) * | 2012-05-22 | 2012-10-10 | 苏州阔地网络科技有限公司 | 一种数据库测试数据的生成方法及系统 |
CN103019931A (zh) * | 2012-11-26 | 2013-04-03 | 华为技术有限公司 | Asn.1接口的检测处理方法和装置 |
CN103425683A (zh) * | 2012-05-18 | 2013-12-04 | 上海宝信软件股份有限公司 | 数据库性能测试系统 |
CN103810196A (zh) * | 2012-11-09 | 2014-05-21 | 阿里巴巴集团控股有限公司 | 基于业务模型进行数据库性能测试的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6859758B1 (en) * | 2002-11-12 | 2005-02-22 | Cisco Technology, Inc. | Stress testing database storage |
US8898523B2 (en) * | 2009-08-31 | 2014-11-25 | Red Hat, Inc. | Generating imperative test tasks from declarative test instructions |
CN103729361A (zh) * | 2012-10-12 | 2014-04-16 | 百度在线网络技术(北京)有限公司 | 一种数据库性能测试方法及装置 |
-
2014
- 2014-06-12 CN CN201410260942.3A patent/CN105446825B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930791A (en) * | 1996-12-09 | 1999-07-27 | Leu; Sean | Computerized blood analyzer system for storing and retrieving blood sample test results from symmetrical type databases |
CN102147758A (zh) * | 2011-03-16 | 2011-08-10 | 深圳创维数字技术股份有限公司 | 一种待测设备自动编译及配置方法、装置、系统 |
CN102254035A (zh) * | 2011-08-09 | 2011-11-23 | 广东电网公司电力科学研究院 | 关系数据库测试方法及测试系统 |
CN103425683A (zh) * | 2012-05-18 | 2013-12-04 | 上海宝信软件股份有限公司 | 数据库性能测试系统 |
CN102722537A (zh) * | 2012-05-22 | 2012-10-10 | 苏州阔地网络科技有限公司 | 一种数据库测试数据的生成方法及系统 |
CN103810196A (zh) * | 2012-11-09 | 2014-05-21 | 阿里巴巴集团控股有限公司 | 基于业务模型进行数据库性能测试的方法 |
CN103019931A (zh) * | 2012-11-26 | 2013-04-03 | 华为技术有限公司 | Asn.1接口的检测处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105446825A (zh) | 2016-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105446825B (zh) | 数据库测试方法及装置 | |
US11256715B2 (en) | Data backup method and apparatus | |
CN108932282B (zh) | 一种数据库迁移方法、装置和存储介质 | |
US8078655B2 (en) | Generation of database deltas and restoration | |
CN106649828B (zh) | 一种数据查询方法及系统 | |
CN106802895B (zh) | 用于修复数据库备库数据的方法和设备 | |
EP3163447B1 (en) | Data replication method, device and system | |
CN105205053A (zh) | 一种数据库增量日志解析方法及系统 | |
US20110145201A1 (en) | Database mirroring | |
US20190196930A1 (en) | System and method for recording the beginning and ending of job level activity in a mainframe computing environment | |
WO2018006723A1 (zh) | 一种针对数据库的数据修改请求处理方法及装置 | |
CN109491834B (zh) | 一种应用于数据库的数据恢复方法及装置 | |
WO2019033741A1 (zh) | 投资产品的资源处理方法、装置、存储介质和计算机设备 | |
AU2015265599B2 (en) | System and method for the production of job level pre-processed backup of critical data and/or datasets in a mainframe computing environment | |
CN110121694A (zh) | 一种日志管理方法、服务器和数据库系统 | |
CN115658391A (zh) | 基于QianBase MPP数据库的WAL机制的备份恢复方法 | |
CN115827691A (zh) | 批量处理结果验证方法、装置、计算机设备、存储介质 | |
CN112000521B (zh) | 分布式数据库系统的全量备份方法、装置及计算机可读存储介质 | |
CN111581023A (zh) | 银行内存数据处理方法及装置 | |
CN112199329A (zh) | 基于堡垒机的双机运维数据归档清理方法与设备 | |
US10922301B1 (en) | Apparatus, computer program, and method for trigger-based tracking of database modifications | |
US10649851B2 (en) | Extraction of audit trails | |
CN113467994B (zh) | 一种数据备份方法、系统及电子设备、存储介质 | |
CN116108035A (zh) | 数据的还原方法及装置、处理器和电子设备 | |
TWI537756B (zh) | 藉由快照來快速擴展關聯式資料庫之系統及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231220 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province Patentee after: Aliyun Computing Co.,Ltd. Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK Patentee before: ALIBABA GROUP HOLDING Ltd. |