本发明涉及数据库,特别是涉及一种数据同步错误处理方法、存储介质及设备。
背景技术:
1、数据同步软件进行数据实时同步的过程中,需要通过解析源端数据库的日志来获得增量数据,再将这些增量数据以事务为单位转换为同步软件内部特定的消息格式。然后,通过数据同步软件的私有传输协议发送到目标端数据同步软件,最后目标端同步软件将获取到的事务日志恢复成目标端数据库支持的sql(structured query language,结构化查询语言)语句并在目标端数据库上执行,以实现目标端数据库和源端数据库的数据同步。
2、在目标端数据库执行sql语句的过程中,会遇到执行报错的情况。目前,对于遇到报错的情况,存在多种错误处理方式。而其中,部分错误处理方式虽然处理效果较好,但是无法与批量入库的同步方式共存。也就是说,如果采用某些错误处理方式,虽然错误处理效果较好,却无法采用批量入库的方式进行数据同步,这会严重影响数据库的入库性能。
技术实现思路
1、本发明的一个目的是要提供一种能够解决上述任一问题的数据同步错误处理方法、存储介质及设备。
2、本发明一个进一步的目的是要保留出错事务中的正常语句。
3、特别地,本发明提供了一种数据同步错误处理方法,包括:
4、获取用于数据同步的多个事务;
5、将多个事务以批量同步方式进行数据同步;
6、接收每次批量操作的返回结果;
7、若返回结果报错,获取批量操作中的出错事务;
8、将出错事务回滚;
9、以预设的错误处理策略重新处理出错事务。
10、可选地,将出错事务回滚的步骤包括:
11、记录出错事务的事务号,根据事务号将属于出错事务的操作进行回滚,其中,事务号用于标记属于对应事务的操作。
12、可选地,以预设的错误处理策略重新处理出错事务的步骤之后包括:
13、判断出错事务是否处理完成,若是,以批量同步方式继续进行数据同步,若否,继续处理出错事务。
14、可选地,以预设的错误处理策略重新处理出错事务的步骤之前包括:
15、关闭批量同步方式;
16、所述以批量同步方式继续进行数据同步的步骤包括:
17、开启批量同步方式,以批量同步方式继续进行数据同步。
18、可选地,以预设的错误处理策略重新处理出错事务的步骤包括:
19、获取出错事务对应的多条操作语句;
20、在执行每条操作语句之前设置保存点;
21、检测每条操作语句的执行结果;
22、若操作语句出现执行失败的情况,确定执行失败的错误类型;
23、确定错误类型是否符合预先配置的语句跳过错误;
24、若错误类型符合语句跳过错误,则根据保存点的位置进行回滚,并执行执行失败的操作语句之后的下一条操作语句。
25、可选地,获取用于数据同步的多个事务的步骤之前包括:
26、获取配置文件,配置文件预先记录有针对同步错误处理的处理规则,处理规则中规定有语句跳过错误;
27、确定错误类型是否符合预先配置的语句跳过错误的步骤包括:
28、将错误类型与配置文件进行匹配,确定错误类型是否与处理规则中规定的语句跳过错误相符。
29、可选地,确定错误类型是否符合预先配置的语句跳过错误的步骤之后包括:
30、若错误类型不符合语句跳过错误,跳过执行失败的操作语句所在的出错事务,或者,停止数据同步。
31、可选地,在执行每条操作语句前设置保存点的步骤包括:
32、更新保存点位置,只保留最新的保存点。
33、在本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现根据上述任一项的数据同步错误处理方法。
34、在本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行所述机器可执行程序时实现根据上述任一项所述的数据同步错误处理方法。
35、本发明的数据同步错误处理方法通过先将多个事务以批量同步的方式进行数据同步,当数据同步出现报错时,获取出错事务,将出错事务回滚,再以预设的错误处理策略重新处理出错事务。也就是说,在数据同步正常进行的情况下,数据库系统能够保持以批量同步方式进行数据同步。而在批量同步的同步过程中出现报错时,再采用其他的错误处理策略对出错事务重新进行处理。所以,在对出错事务进行重新处理的过程中,就可以采用在批量同步方式下无法实现的错误处理方法对出错事务进行单独处理。因此,一方面,保证了数据库系统在同步正常的情况下,可以采用批量同步方式进行数据同步,从而保证了数据同步的同步性能。另一方面,可以对出错事务单独进行重新处理,从而可以采用一些与批量同步方式无法共存的错误处理方式对同步错误进行处理,有助于保证较好的错误处理效果。因为只是对出错事务进行错误处理,所以不会对入库性能造成太大影响。
36、进一步地,本发明的数据同步错误处理方法通过在执行每条操作语句之前设置保存点,当操作语句出现执行失败的情形时,如果导致操作语句执行失败的错误类型符合语句跳过错误,则根据保存点的位置进行回滚,并执行执行失败的操作语句之后的下一条操作语句。也就是说,在对出错事务重新处理的过程中,当操作语句出现执行失败的情况,如果操作语句的错误类型符合语句跳过错误,可以只跳过执行失败的操作语句,使得事务中可以正常执行的操作语句得以保留。因此,能够避免将正常执行的操作语句一同回滚导致的丢数问题。
37、根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
1.一种数据同步错误处理方法,包括:
2.根据权利要求1所述的数据同步错误处理方法,其中,所述将所述出错事务回滚的步骤包括:
3.根据权利要求1所述的数据同步错误处理方法,其中,所述以预设的错误处理策略重新处理所述出错事务的步骤之后包括:
4.根据权利要求3所述的数据同步错误处理方法,其中,所述以预设的错误处理策略重新处理所述出错事务的步骤之前包括:
5.根据权利要求1所述的数据同步错误处理方法,其中,所述以预设的错误处理策略重新处理所述出错事务的步骤包括:
6.根据权利要求5所述的数据同步错误处理方法,其中,所述获取用于数据同步的多个事务的步骤之前包括:
7.根据权利要求5所述的数据同步错误处理方法,其中,所述确定所述错误类型是否符合预先配置的语句跳过错误的步骤之后包括:
8.根据权利要求5所述的数据同步错误处理方法,其中,所述在执行每条所述操作语句前设置保存点的步骤包括:
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的数据同步错误处理方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的数据同步错误处理方法。