本发明涉及信息技术领域,特别指一种结构化数据异地双读写方法。
背景技术:
随着灾备技术的快速发展,数据复制进入了一个快速发展的阶段,尤其是针对结构化数据(例如oracle),先后出现了rac、adg、ogg等技术产品:rac用于实现oracle的多实例集群,adg用于实现同城双活异地灾备,ogg用于实现异地双活。
伴随着各行业的核心业务对业务连续性的高要求,促进了异地双活技术的快速发展和应用,基于异地双活技术可以实现对结构化数据库的异地双活逻辑复制。
但是,传统的异地双活技术存在有如下缺点:传统的异地双活技术只能实现单方向复制,一般只有主库可读写,从库只读,发生双活切换后需要手动调整复制方向,增加了业务切换的风险,与此同时也增加了业务切换的时间,影响了灾备指标(rto)。
技术实现要素:
本发明要解决的技术问题,在于提供一种结构化数据异地双读写方法,实现异地双活技术的双向复制。
本发明是这样实现的:一种结构化数据异地双读写方法,所述方法包括如下步骤:
步骤s10、将用户分为本地分组以及异地分组;
步骤s20、在本地和异地的数据库服务器上分别创建数据库表,并采用奇偶分离策略分别设置主键;
步骤s30、用户向业务系统发起读写数据请求,业务系统识别用户所在分组,并根据分组赋予对应的用户权限;
步骤s40、用户依据权限对数据进行读写操作,并将读写操作过程中数据库表产生的数据变化日志复制到对端的数据库服务器。
进一步地,所述步骤s10具体为:
通过调度控制服务将用户分为本地分组以及异地分组。
进一步地,所述步骤s20具体为:
在本地的数据库服务器上创建一第一数据库表,所述第一数据库表的奇数行设置为第一主键;在异地的数据库服务器上创建一第二数据库表,所述第二数据库表的偶数行设置为第二主键。
进一步地,所述第一数据库表的奇数行设置为第一主键具体为:第一数据库表的奇数行设置为第一主键,各第一主键间步长为2;
所述第二数据库表的偶数行设置为第二主键具体为:第二数据库表的偶数行设置为第二主键,各第二主键间步长为2。
进一步地,所述步骤s30具体为:
用户向业务系统发起读写数据库服务器中的数据的请求,业务系统通过调度控制服务判断用户所在的分组并赋予用户权限。
进一步地,所述权限为读写权限或者只读权限。
进一步地,所述步骤s40具体为:
步骤s41、若用户属于本地分组,用户依据权限对数据进行读写操作,本地的数据库服务器在读写数据的过程中,根据第一数据库表在奇数行产生第一主键,新增或者变更数据;
步骤s42、数据复制程序定时扫描第一数据库表,并抓取数据变化的日志,将日志存储至缓存中;
步骤s43、装载器读取缓存中的日志,并将日志转化为sql语句,装载器通过sql语句将数据变化的日志加载到第二数据库表的奇数行中。
进一步地,所述步骤s40具体为:
步骤s410、若用户属于异地分组,用户依据权限对数据进行读写操作,异地的数据库服务器在读写数据的过程中,根据第二数据库表在偶数行产生第二主键,新增或者变更数据;
步骤s420、数据复制程序定时扫描第二数据库表,并抓取数据变化的日志,将日志存储至缓存中;
步骤s430、装载器读取缓存中的日志,并将日志转化为sql语句,装载器通过sql语句将数据变化的日志加载到第一数据库表的偶数行中。
进一步地,所述数据复制程序为logmnr。
本发明的优点在于:
1、实现了异地双活技术的双向复制。
2、通过第一数据库表的奇数行设置为第一主键,第二数据库表的偶数行设置为第二主键,即本地与异地的主键采用奇偶分离的策略,杜绝了数据复制过程中产生脑裂问题,即同一主键本地与异地同时做变更造成数据复制程序无法决策以哪份数据为准。
3、通过本地与异地的主键采用奇偶分离的策略,实现了本地与异地两个数据库服务器同时读写操作,进而极大的提升了业务连续性指标,并且升级改造成本低廉。
4、通过将各第一主键的步长设置为2,将各第二主键的步长设置为2,有效的节约了系统资源。
5、通过调度控制服务将用户进行分组,实现合理有效的分配全局的负载。
6、通过设置第一数据库表的偶数行为第一主键,第二数据库表的奇数行为第二主键,实现异地随时切换复制方向。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1是本发明一种结构化数据异地双读写方法的流程图。
图2是本发明一种结构化数据异地双读写方法的原理框图。
具体实施方式
请参照图1至图2所示,本发明一种结构化数据异地双读写方法的较佳实施例,包括如下步骤:
步骤s10、将用户分为本地分组以及异地分组;
步骤s20、在本地和异地的数据库服务器上分别创建数据库表,并采用奇偶分离策略分别设置主键;
步骤s30、用户向业务系统发起读写数据请求,业务系统识别用户所在分组,并根据分组赋予对应的用户权限;通过设置用户权限,提高了数据库服务器的安全性;
步骤s40、用户依据权限对数据进行读写操作,并将读写操作过程中数据库表产生的数据变化日志复制到对端的数据库服务器。
所述步骤s10具体为:
通过调度控制服务将用户分为本地分组以及异地分组。可按区域或者取模规则等进行分组,通过调度控制服务将用户进行分组,实现合理有效的分配全局的负载。
所述步骤s20具体为:
在本地的数据库服务器上创建一第一数据库表,所述第一数据库表的奇数行设置为第一主键;在异地的数据库服务器上创建一第二数据库表,所述第二数据库表的偶数行设置为第二主键。即本地与异地的主键采用奇偶分离的策略,杜绝了数据复制过程中产生脑裂问题,即同一主键本地与异地同时做变更造成数据复制程序无法决策以哪份数据为准;且实现了本地与异地两个数据库服务器同时读写操作,进而极大的提升了业务连续性指标,并且升级改造成本低廉。
数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性,主键主要是用于其他表的外键关联,以及本记录的修改与删除。
所述第一数据库表的奇数行设置为第一主键具体为:第一数据库表的奇数行设置为第一主键,各第一主键间步长为2;
所述第二数据库表的偶数行设置为第二主键具体为:第二数据库表的偶数行设置为第二主键,各第二主键间步长为2。
通过将各第一主键的步长设置为2,将各第二主键的步长设置为2,有效的节约了系统资源。
所述步骤s30具体为:
用户向业务系统发起读写数据库服务器中的数据的请求,业务系统通过调度控制服务判断用户所在的分组并赋予用户权限。
所述权限为读写权限或者只读权限。
所述步骤s40具体为:
步骤s41、若用户属于本地分组,用户依据权限对数据进行读写操作,本地的数据库服务器在读写数据的过程中,根据第一数据库表在奇数行产生第一主键,新增或者变更数据;
步骤s42、数据复制程序定时扫描第一数据库表,并抓取数据变化的日志,将日志存储至缓存中;
步骤s43、装载器读取缓存中的日志,并将日志转化为sql语句,装载器通过sql语句将数据变化的日志加载到第二数据库表的奇数行中。
所述步骤s40具体为:
步骤s410、若用户属于异地分组,用户依据权限对数据进行读写操作,异地的数据库服务器在读写数据的过程中,根据第二数据库表在偶数行产生第二主键,新增或者变更数据;
步骤s420、数据复制程序定时扫描第二数据库表,并抓取数据变化的日志,将日志存储至缓存中;
步骤s430、装载器读取缓存中的日志,并将日志转化为sql语句,装载器通过sql语句将数据变化的日志加载到第一数据库表的偶数行中。
所述数据复制程序为logmnr。logmnr是oracle自带的日志挖掘工具,可以用于对oracle数据ddl和dml操作做问题诊断。
当需要切换复制方向时,通过设置第一数据库表的偶数行为第一主键,第二数据库表的奇数行为第二主键即可。
综上所述,本发明的优点在于:
1、实现了异地双活技术的双向复制。
2、通过第一数据库表的奇数行设置为第一主键,第二数据库表的偶数行设置为第二主键,即本地与异地的主键采用奇偶分离的策略,杜绝了数据复制过程中产生脑裂问题,即同一主键本地与异地同时做变更造成数据复制程序无法决策以哪份数据为准。
3、通过本地与异地的主键采用奇偶分离的策略,实现了本地与异地两个数据库服务器同时读写操作,进而极大的提升了业务连续性指标,并且升级改造成本低廉。
4、通过将各第一主键的步长设置为2,将各第二主键的步长设置为2,有效的节约了系统资源。
5、通过调度控制服务将用户进行分组,实现合理有效的分配全局的负载。
6、通过设置第一数据库表的偶数行为第一主键,第二数据库表的奇数行为第二主键,实现异地随时切换复制方向。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。