一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

跨数据中心的分布式双活数据库系统及方法与流程

2023-07-22 21:13:26 来源:中国专利 TAG:
1.本发明涉及一种分布式数据库应用方法,更具体的说,本发明主要涉及一种跨数据中心的分布式双活数据库系统及方法。
背景技术
::2.分布式数据库系统双活应用是高可用架构重要实施手段,其目的是为了业务的连续性,在传统数据中心中,业务系统的数据往往都是存放在一个数据库中,这种模式的数据中心存在着一定的业务连续性风险,如果数据库出现故障宕机,所有与这台数据库有连接的业务系统就会停顿,甚至会丢失数据。3.在数据库层面双活的方案主要有基于存储双活的技术、数据库同/异步复制技术与基于raft/paxos一致性协议实现多活的方式,但前述三种数据库双活方案均存在不同程度的缺陷,例如基于存储双活的技术基于特定的存储硬件系统会带来硬件依赖,硬件和厂商绑定,不同厂商的设备其数组组成和原理均不相同,导致无法互通,此方案高度依赖硬件,并且这种物理复制往往在数据逻辑一致性上会产生一些问题,即要支持双活,系统必须做到双向复制,很多硬件厂商都无法支持。数据库同/异步复制技术针对数据本身而言实际上是主备,一个实例为主实例,提供数据读写服务,而备实例往往是不提供服务,或者最多提供只读服务,这是一种严重受限的双活方式。基于raft/paxos一致性协议实现多活的方式,需要基于paxos/raft副本协议,虽可做到真正的双活,但其本质是一个数据库实例下,数据的一致性副本协议,因此它并非两个数据库实例的双活,一旦在系统的某些组件出现故障,导致实例级别的问题,则即便数据副本都正常,也无法做到多数据中心的双活切换,因为整个实例不可用。因此有必要针对分布式数据库的双活技术作进一步的研究和改进。技术实现要素:4.本发明的目的之一在于解决针对不足,提供一种跨数据中心的分布式双活数据库系统及方法,以期望解决现有技术中同类数据库双活技术容易带来硬件依赖,双活应用受限,系统组件出现故障导致实例级别的问题,无法实现多数据中心的双活切换等技术问题。5.为解决上述的技术问题,本发明采用以下技术方案:本发明一方面提供了一种跨数据中心的分布式双活数据库系统,所述系统包括两个qianbase数据库实例,其中:第一数据库实例位于第一数据中心,第二数据库实例位于第二数据中心;所述第一实例数据库用于由数据库事务系统在执行外部应用的写操作时,同时读取配置信息,与第二实例数据库建立对等数据库,由数据库事务系统将当前执行的写操作同步写入第二实例数据库;数据库事务系统在执行写操作时,首先判断当前执行计划是否带有复制属性,如判断结果为是,则读取配置信息,与第二实例数据库建立对等数据库;反之则仅在第一实例数据库执行当前的写操作。6.作为优选,进一步的技术方案是:所述执行计划由数据库编译器所生成,所述数据库编译器在生成所述执行计划时,首先识别当前数据表上是否拥有xdc属性,如是则生成带有复制属性的执行计划。7.更进一步的技术方案是:所述xdc属性为预先手动在数据表上筛选与保留的关键数据。8.更进一步的技术方案是:所述对等数据库以ip地与端口号作为标识。9.更进一步的技术方案是:所述数据库事务系统通过2pc协议将当前执行的写操作同步写入第二实例数据库。10.更进一步的技术方案是:所述系统运行中,当第一实例数据库出现故障时,自动将当前工作的数据中心切换为第二实例数据库所在的第二数据中心,然后由数据库事务系统将带有复制属性的执行计划中写操作的数据,在第一实例数据库进行缓存,由第二实例数据库继续对外部应用提供读写服务。11.本发明另一方面提供了一种跨数据中心的分布式双活数据库方法,所述的方法包括如下步骤:步骤a、第一实例数据库由数据库事务系统在执行外部应用的写操作时,同时读取配置信息,与第二实例数据库建立对等数据库,由数据库事务系统将当前执行的写操作同步写入第二实例数据库。12.步骤b、数据库事务系统在执行写操作时,首先判断当前执行计划是否带有复制属性,如判断结果为是,则读取配置信息,与第二实例数据库建立对等数据库;反之则仅在第一实例数据库执行当前的写操作。13.作为优选,进一步的技术方案是:所述的方法还包括步骤c、当第一实例数据库出现故障时,自动将当前工作的数据中心切换为第二实例数据库所在的第二数据中心,然后由数据库事务系统将带有复制属性的执行计划中写操作的数据,在第一实例数据库进行缓存,由第二实例数据库继续对外部应用提供读写服务。14.更进一步的技术方案是:步骤b中的执行计划由数据库编译器所生成,所述数据库编译器在生成所述执行计划时,首先识别当前数据表上是否拥有xdc属性,如是则生成带有复制属性的执行计划;所述xdc属性为预先手动在数据表上筛选与保留的关键数据。15.更进一步的技术方案是:所述数据库事务系统通过2pc协议将当前执行的写操作同步写入第二实例数据库;所述对等数据库以ip地与端口号作为标识。16.与现有技术相比,本发明的有益效果之一是:通过数据库事务系统判断当前执行计划是否具有复制属性,使得数据复制的粒度更为精细,从而节约带宽,提升系统整体的性能,并且系统具有完全的双活支持,对于不同的数据库实例之间不再区分主备数据库,各个实例均可实现读写的操作,亦可由系统在故障情况下自动对差异数据进行缓存,并在故障恢复后进行数据同步。附图说明17.图1为用于说明本发明一个实施例的系统部署框图。18.图2为用于说明本发明一个实施例的典型应用流程图。具体实施方式19.本发明是基于qianbasempp数据库所实现的系统双活技术,前述qianbasempp是一个面向数据仓库应用的关系型分布式数据库,其在数据存储、高并发、高可用、线性扩展、反应速度、易用性和性价比等方面优势突出。其数据库架构包括三层,分别为客户端服务层、sql数据库服务层和存储引擎层。第一层是应用程序所在的客户端服务层。应用程序可以由用户编写或通过第三方isv工具/解决方案实现。可使用qianbase提供的windows或linux客户端驱动、通过标准odbc/jdbc接口访问qianbase数据库服务层。qianbase支持type2jdbc、type4jdbc和ado.net驱动程序。根据特定的需求(响应时间、连接数量、安全要求和其它因素),可选择合适的驱动程序类型。第二层是sql数据库引擎层。该层包括所有qianbase服务,封装了所有管理qianbase对象和高效执行sql数据库请求的服务。服务包括连接管理、sql语句编译和创建最优执行计划、sql执行(串行和并行)、事务管理和工作负载管理。第三层是存储引擎层,包括qianbase使用的标准hadoop服务(hdfs和zookeeper)。qianbase对象存储在原生hadoop数据库结构中,包括hbase、缓存文本文件与键值序列文件。qianbase处理从应用程序传来的sql请求,并将这些请求透明地转换成底层数据格式所需的原生接口调用。qianbase在hbase之上提供了关系型schema抽象,所以,qianbase能通过使用熟悉的ddl/dml语法(对象命名、列定义和数据类型支持)支持传统关系型数据库对象(表、视图、二级索引)。另外,qianbase还支持将hbase和hive的原生表作为qianbase的外表。20.基于上述的qianbasempp数据库系统,如图1所示,在图1中,实线部分表示更新(写入)操作,虚线部分表示读取操作。鉴于此,本发明的一个实施例是一种跨数据中心的分布式双活数据库系统,在该系统中系统包括两个qianbase数据库实例,并且前述第一数据库实例位于第一数据中心,第二数据库实例位于第二数据中心,前述第一数据中心与第二数据中心一般部署在同城不同的区域,即本发明系统是同城跨数据中心的同步双活方案。21.上述第一实例数据库用于由数据库事务系统在执行外部应用的写操作时,同时读取配置信息,与第二实例数据库建立对等数据库,由数据库事务系统将当前执行的写操作同步写入第二实例数据库。前述的对等数据库以ip地与端口号作为标识,并且数据库事务系统通过2pc协议(两阶段提交协议)将当前执行的写操作同步写入第二实例数据库。22.更为重要的是,数据库事务系统在执行写操作时,首先判断当前执行计划是否带有复制属性,如判断结果为是,则读取配置信息,与第二实例数据库建立对等数据库;反之则仅在第一实例数据库执行当前的写操作。23.另一方面,上述执行计划由数据库编译器所生成,所述数据库编译器在生成所述执行计划时,首先识别当前数据表上是否拥有xdc属性,如是则生成带有复制属性的执行计划。而前述的xdc属性为预先手动在数据表上筛选与保留的关键数据。24.基于上述所描述的系统功能,qianbase同步xdc的主要思路是将部署在不同数据中心独立的多个数据库实例作为远程的一个数据拷贝,这主要通过对数据库sql引擎的配置和操作自动实现,而不是通过物理硬件或者逻辑日志的传输拷贝来完成数据复制。或者说,是在sql的执行过程中,将数据可靠地在本地和远端都进行写入。25.首先,同步xdc数据复制被作为一张数据库表的属性,可以在表级别进行设置是否需要数据同步。这使得管理员能够精细地控制哪些关键数据需要进行复制,并且可以将不需要复制的表和数据进行剔除,从而节约宝贵的网络资源。26.当表上有xdc属性时,对该表进行增删改操作的时候,sql编译器会生成带同步事务复制属性的执行计划,并告知存储系统。本地数据库事务系统在执行写操作时,如果执行计划带有同步事务复制属性,则读取配置信息,得到对等数据库的标识。我们用ip地址和端口号表示一个对等数据库。对等数据库的存储系统和本数据库的存储系统同质,均使用相同的事务协议。然后,数据库事务系统中的事务处理器将对等数据库的存储引擎也加入到本事务中,执行相同的写操作,并统一利用两阶段提交协议管理对等的数据库引擎的事务参与者。27.这样一个写操作,就变成了由数据库事务系统中的事务管理器控制的双写事务,即,数据在本地存储系统写入,同时,写入对等数据库实例的存储系统。对等数据库的存储系统作为分布式事务的参与者,由本地数据库事务系统中的事务管理器统一协调,参与到两阶段提交协议的过程中。从而完成数据的强一致性复制。28.下面我们举例来考察如果一张表xdc属性,数据库内核如何保证数据可以同步复制到对等的数据中心的另外一个数据库实例中。29.以图1中的部署拓扑为例,我们有两个数据库实例分别位于两个数据中心,我们用dc1表示在数据中心dc1的实例,用dc2表示在数据中心dc2的数据库实例。30.在表d1上创建xdc属性,语法如下:createtabled1(c1intnotnull,c2int)attributeincrementalbackup;这样,当对d1表进行修改操作时,数据库引擎会生成一个带数据赋值标记的执行计划。31.在部署配置中,dc1配置的对等数据库为dc2。32.现在我们发起写操作:updated1setc2=0;该更新语句在执行的时候,数据库会启动事务,由事务管理器管理该事务。33.数据库编译器识别到表d1拥有xdc属性,因此在生成的执行计划中,对d1表的更新操作上会附加xdc属性。34.具体如图2所述,执行器在执行带xdc属性的更新操作时,会通知事务管理器,事务管理器读取系统配置,获取dc2的ip地址和端口号。然后将dc2同样作为写操作的目标,并加入到本事务。35.此后,由事务管理器协调本地dc1的存储引擎和远程dc2的存储引擎分别完成写入操作。并利用2pc协议保证数据的强一致性。36.数据库系统在运行时,可能出现的故障主要包括两种,一种是故障是网络故障,另一种是数据库实例故障。当网络故障发生时,任意数据库实例的写事务都无法完成,因为两阶段提交协议要求所有的参与者都必须完成工作,但是因为网络中断,数据库无法和远端的参与者,即存储引擎进行通信,也无法获知其是否完成i/o操作。因此事务管理器将判定事务回滚。此时,业务系统中断。当数据库实例故障发生时,两个数据中心两个数据库实例中的一个故障,这种情况下,事务管理器也无法完成提交,现象与前一种故障一致。37.因此无论哪种故障发生,整个系统都停止服务,数据库管理器在发现一段时间内(默认为1分钟),所有的事务都因为远端的故障而失败后,将自动选择可以工作的数据中心进行切换,将其模式设置为缓存模式。此时,事务管理将所有带有xdc属性的表的写操作数据进行缓存,并不再尝试将对等数据库实例的存储引擎作为事务参与者,系统可以继续提供服务。38.基于上述的设计思路,本发明另一个实施例是一种跨数据中心的分布式双活数据库方法,该方法包括如下步骤:s1、第一实例数据库由数据库事务系统在执行外部应用的写操作时,同时读取配置信息,与第二实例数据库建立对等数据库,由数据库事务系统将当前执行的写操作同步写入第二实例数据库。39.在本步骤中,上述数据库事务系统通过2pc协议将当前执行的写操作同步写入第二实例数据库,且对等数据库以ip地与端口号作为标识。40.s2、数据库事务系统在执行写操作时,首先判断当前执行计划是否带有复制属性,如判断结果为是,则读取配置信息,与第二实例数据库建立对等数据库;反之则仅在第一实例数据库执行当前的写操作。41.在本步骤中,上述的执行计划由数据库编译器所生成,所述数据库编译器在生成所述执行计划时,首先识别当前数据表上是否拥有xdc属性,如是则生成带有复制属性的执行计划;并且xdc属性为预先手动在数据表上筛选与保留的关键数据。42.s3、当第一实例数据库出现故障时,自动将当前工作的数据中心切换为第二实例数据库所在的第二数据中心,然后由数据库事务系统将带有复制属性的执行计划中写操作的数据,在第一实例数据库进行缓存,由第二实例数据库继续对外部应用提供读写服务。43.基于上述的实施例,本发明具有如下特点:一是数据复制的粒度精细,可以支持表级别的控制。传统的数据复制技术都工作在数据库整体级别,不能精确地控制不同重要级别的数据的复制需求。本技术可以精确控制哪些数据需要复制,而哪些数据不需要进行复制。从而节约带宽,提升系统整体的性能。44.二是完全的双活支持,而非只读支持。多活架构的关键点就是指不同地理位置上的系统都能够提供业务服务,这里的“活”是指实时提供服务的意思。与“活”对应的是字是“备”,备是备份,正常情况下对外是不提供服务的,如果需要提供服务,则需要大量的人工干预和操作,花费大量的时间才能让“备”变成“活。本发明的技术能够实现真正完全意义上的双活,而非主备。45.三是自动故障恢复真实生产环境有各种硬件软件故障或者人为的错误导致的故障。当两个数据中心之间的网络故障,或者两个数据中心实例之一发生了严重故障,都会导致无法完成数据同步。本发明的技术能够在故障情况下自动对差异数据进行缓存,并在故障恢复后进行自动数据重同步。46.相对于基于存储复制的方案而言,基于存储复制的方案是一种硬件方案,和具体的硬件紧密相关。不同厂商的技术不能兼容。本方案是软件方案,没有硬件绑定的问题。相对于数据库同/异步复制双活的方案而言,数据库的同步/异步复制技术无法实现真正意义上的双活,而是主备方案。参与“双活”的两个数据库集群只有一个能提供完整的读写服务,另外一个要么不提供服务,要么只提供只读服务。而本发明则是真正的双活,两个参与双活的数据库实例同时对外提供完整的数据库读写服务。相对于基于paxos/raft副本协议的方案而言,基于paxos/raft副本协议的方案实际上是存储层的多副本,参与双活的两个数据中心组成了一个大数据库集群。而不是两个独立的数据库实例。因此一旦发生数据库实例级别的故障,则两个数据中心均无法提供服务。而本发明则依然是两个独立的数据库集群,任何数据库实例级别的单点故障都不会引发业务中断,因为另外一个集群是独立运行的单独数据库实例。47.除上述以外,还需要说明的是在本说明书中所谈到的“一个实施例”、“另一个实施例”、“实施例”等,指的是结合该实施例描述的具体特征、结构或者特点包括在本技术概括性描述的至少一个实施例中。在说明书中多个地方出现同种表述不是一定指的是同一个实施例。进一步来说,结合任一实施例描述一个具体特征、结构或者特点时,所要主张的是结合其他实施例来实现这种特征、结构或者特点也落在本发明的范围内。48.尽管这里参照本发明的多个解释性实施例对本发明进行了描述,但是,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本技术公开的原则范围和精神之内。更具体地说,在本技术公开、附图和权利要求的范围内,可以对主题组合布局的组成部件和/或布局进行多种变型和改进。除了对组成部件和/或布局进行的变型和改进外,对于本领域技术人员来说,其他的用途也将是明显的。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表