System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据库,尤其涉及一种数据库切换方法及装置。
技术介绍
1、随着信息技术的快速发展,现代应用程序往往采用多服务实例部署策略,以实现高效的流量负载均衡。然而,在进行数据库切换操作时,多实例的存在也增加了切换操作的复杂性。
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、在一种可能的实施例中,所述方法应用于第一装置,所述第一装置保存第一连接凭证,以及第二本文档来自技高网...
【技术保护点】
1.一种数据库切换方法,其特征在于,所述方法应用于第一装置,该方法包括:
2.如权利要求1所述的方法,其特征在于,在接收访问请求之前,包括:
3.如权利要求1或2所述的方法,其特征在于,所述第一数据库的状态满足第一条件是指没有针对所述第一数据库的未完成事务。
4.如权利要求1-3任一项所述的方法,其特征在于,确定所述第二同步流程已完成,包括:
5.如权利要求1-4任一项所述的方法,其特征在于,所述第一参考点根据启动所述第一同步流程之前所述第一数据库中的最后一条数据确定;
6.如权利要求1-5任一项所述的方法,其特征在于,所述第一装置保存第一连接凭证,以及第二连接凭证,所述第一连接凭证用于所述第一装置向所述第一数据库转发所述访问请求,所述第二连接凭证用于所述第一装置向所述第二数据库转发所述访问请求。
7.如权利要求6所述的方法,其特征在于,所述第一连接凭证包括所述第一数据库的地址和端口号,以及所述第一数据库的用户名和密码;
8.一种数据库切换装置,其特征在于,该装置包括:收发单元和处理单元;
...【技术特征摘要】
1.一种数据库切换方法,其特征在于,所述方法应用于第一装置,该方法包括:
2.如权利要求1所述的方法,其特征在于,在接收访问请求之前,包括:
3.如权利要求1或2所述的方法,其特征在于,所述第一数据库的状态满足第一条件是指没有针对所述第一数据库的未完成事务。
4.如权利要求1-3任一项所述的方法,其特征在于,确定所述第二同步流程已完成,包括:
5.如权利要求1-4任一项所述的方法,其特征在于,所述第一参考点根据启动所述第一同步流程之前所述第一数据库中的最后一条数据确定;
6.如权利要求1-5任一项所述的方法,其特征在于,所述第一装置保存第一连接凭证,以及第二连接凭证,所述第一连接凭证用于所述第一装置向所述第一数据库转发所述访问请求,所述第二连接凭证...
【专利技术属性】
技术研发人员:王琪,楚俣,许峰,秦曲波,
申请(专利权)人:上海嘎咪科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。