System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请实施例涉及数据库,具体涉及一种数据同步方法、数据代理装置及数据同步系统。
技术介绍
1、在web应用程序中,经常使用数据库来存储业务数据,比如:mysql、oracle或sqlserver等,在业务复杂的系统中,如果只部署一套数据库应用的话,可能会出现因大量请求导致数据库响应慢或者宕机的风险,为了保证高可用,通常会部署多套数据库用于存储相同的数据,例如数据库主从、集群等方式。
2、通过设置主数据库节点和从数据库节点,使得在业务复杂的系统中,让主数据库节点负责写入数据,从数据库节点负责读数据,在有大量请求的时候,多个数据库节点可以分担负载和提高性能。现有的主数据库节点和从数据库节点主要通过主从复制实现数据同步,然而,现有的数据库主从复制容易出现数据一致性问题,在写入主数据库节点时,主数据库节点提交事务后,如果主数据库节点宕机或者崩溃了,可能会导致日志未同步至从数据库节点,从而导致从数据库节点和主数据库节点的数据不一致。
技术实现思路
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、在一种可选的方式中,在所述将所述从数据库节点标记为故障之后,进一步包括:
38、若被标记为故障的从数据库节点被重新标记为正常,则根据所述从数据库节点的标识符将所述日志文档中对应的数据操作信息发送至被重新标记为正常的所述从数据库节点,以使所述从数据库节点根据所述数据操作信息进行数据同步。本文档来自技高网...
【技术保护点】
1.一种数据同步方法,其特征在于,应用于数据代理节点,所述数据代理节点管理多个数据库节点,多个所述数据库节点中包括一个主数据库节点和至少一个从数据库节点;
2.根据权利要求1所述的数据同步方法,其特征在于,所述接收所述从数据库节点发送的第二预执行完成消息,包括:
3.根据权利要求1所述的数据同步方法,其特征在于,在所述接收所述从数据库节点发送的第二提交完成消息之后,所述方法还包括:
4.根据权利要求2所述的数据同步方法,其特征在于,在所述接收所述主数据库节点发送的第一提交完成消息之后,所述方法还包括:
5.根据权利要求3或4所述的数据同步方法,其特征在于,在所述将所述从数据库节点对应的标识符和所述数据操作信息记录于日志文档之后,所述方法还包括:
6.根据权利要求5所述的数据同步方法,其特征在于,在所述接收数据写入请求之后,所述方法还包括:
7.根据权利要求6所述的数据同步方法,其特征在于,在所述根据被标记为正常的所述数据库节点的优先级确定主数据库节点和从数据库节点之后,所述方法还包括:
8.根据权
9.一种数据代理装置,其特征在于,所述装置用于管理多个数据库节点,多个所述数据库节点中包括一个主数据库节点和至少一个从数据库节点;
10.一种数据同步系统,其特征在于,所述系统包括:数据代理节点和所述数据代理节点管理的多个数据库节点;
...【技术特征摘要】
1.一种数据同步方法,其特征在于,应用于数据代理节点,所述数据代理节点管理多个数据库节点,多个所述数据库节点中包括一个主数据库节点和至少一个从数据库节点;
2.根据权利要求1所述的数据同步方法,其特征在于,所述接收所述从数据库节点发送的第二预执行完成消息,包括:
3.根据权利要求1所述的数据同步方法,其特征在于,在所述接收所述从数据库节点发送的第二提交完成消息之后,所述方法还包括:
4.根据权利要求2所述的数据同步方法,其特征在于,在所述接收所述主数据库节点发送的第一提交完成消息之后,所述方法还包括:
5.根据权利要求3或4所述的数据同步方法,其特征在于,在所述将所述从数据库节点对应的标识符和所述数据操作信息记录于日志...
【专利技术属性】
技术研发人员:宁承恒,陈志列,李柏明,彭异恒,万敏,邓金拓,
申请(专利权)人:深圳市前海研祥亚太电子装备技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。