精华内容
下载资源
问答
  • 本发明属于多数据库的联机数据交互领域,具体涉及一种跨机房数据库的数据一致性校验方法。背景技术:伴随着B2B电子商务行业的发展,互联网服务业务越来越多,用户基数也越来越大,为保障可靠性的需求,网站多会部署...

    cbedbb42a71819725cb70a58cb6dfa71.gif

    本发明属于多数据库的联机数据交互领域,具体涉及一种跨机房数据库的数据一致性校验方法。

    背景技术:

    伴随着B2B电子商务行业的发展,互联网服务业务越来越多,用户基数也越来越大,为保障可靠性的需求,网站多会部署在在不同地域的机房中,各机房中部署数据库系统,并提供完整的网站服务,各机房数据库之间数据互相复制,保证各机房都有一套完整的数据。然而,多机房最大的挑战是机房之间因网络延迟而带来的数据更新延迟,最终导致各机房数据库之间的数据不一致。现有主备数据库校验一致性技术中都是将在同一时间的主数据库和备用数据库进行比对以确定两个数据库之间的数据是否已实现同步,然而,因数据同步一般是在主数据库发生数据更新后,主数据库再将更新的数据同步到备用数据库中,这样就导致数据同步过程中会存在一定的延时,如果以同一时间点两个数据库之间的数据进行比对的话,往往会因为时间延迟问题导致本该判定为一直的数据被判为不一致;常用的数据库一致性技术校验方法是先对数据库中的表关键字排序,随后再以相应的算法比较,这类解决方案占用诸如内存、swap空间能大量数据库资源,在数据量巨大的时候尤为明显,甚至影响数据库的性能。

    为在不影响数据库性能的前提下解决数据库不一致的问题,专利“数据库一致性校验方法及系统、定位数据库差异的方法及系统(申请号:201310704107.X)”做了技术探究,提出一种校验数据库不一致性的方法,具体步骤包括:a.按照预定条件将主数据库与备数据库中的数据行分组;b.计算主数据库每一分组及备数据库每一分组的md5值;c.将所计算的主数据库的每一分组的md5值与相应的备数据库分组的md5值比较,如果主数据库所有分组的md5值与相应的备数据库分组的md5值一致,则表明主数据库与备数据库一致。还提供相应的系统,以及基于该方法的定位数据库差异的方法及系统。该专利虽然能够以较小的计算量及网络数据传输量,定位到存在差异的数据,但该专利仍旧还仅停留在主备数据库一致性校验的研究上,而且采用分组形式校验并不适用于大量不一致数据,反而将带来因不一致数据分散在不同分组而导致需要重复查询数据的问题,同时该专利也没有对如何实现跨地域数据库间的数据自动化定时校验给予明确的解决方案。

    技术实现要素:

    为解决现有技术存在的缺陷,本发明目的是,提供一种跨机房数据库数据一致性校验的方法,通过在跨地域的数据库间部署消息系统,并预先配置校验任务信息,包括校验频率、有校验需要的数据库表及校验字段;当校验启动后,能按照预先设置的校验频率,定时地启动校验操作,并在校验任务过程中持续地收集各个数据库表内某一具体数据的校验值,实时反馈校验结果,不仅保证在跨地域环境中自动化且高效地发现不一致的问题,而且能准确定位到具体的数据,有利于提高数据库不一致性问题的解决速度。

    本发明的技术方案是,一种跨机房数据库数据一致性校验的方法,具体步骤包括:步骤1:一致性校验环境的设置,具体为:在各个地域的机房内分别部署主节点数据库和子节点数据库,且每个数据库中设有相同的表结构;主节点数据库和子节点数据库之间构建消息系统,实现跨地域数据库间以消息传递的方式传输校验值;

    步骤2:配置校验任务信息,校验任务信息包括校验执行的频率、有校验需求的数据库表及有校验需求的表字段;

    步骤3:按照校验执行的频率,每隔固定的时间段,主节点数据库主动触发校验任务,待校验任务开始后,主节点数据库将校验任务信息,包括“有校验需求的数据库、表及有校验需求的表字段”,以消息传递的形式,通过数据库间的消息系统发送至各个子节点数据库;

    步骤4:各个子节点数据库接收到校验任务信息后,提取信息中数据库、数据表及表字段信息指令,当前子节点数据库中从本数据库中查询数据表的特定表字段,并按照表主键排序提取具体数据并通过加密算法的计算,生成唯一的校验值,并将最终的校验值结果以消息传递的形式,通过数据库间的消息系统批量发送至主节点数据库;

    步骤5:主节点数据库一直保持接收各子节点数据库发送数据的状态,一边接收校验结果,一边对校验结果进行比对,并判断各个子节点的校验结果是否一致;

    如果一致,表明各机房数据库中的数据是一致的;

    如果不一致,表明各机房数据库中的数据是不一致的,记录不一致的数据;

    步骤6:待主节点数据库将所有子节点数据库发送的校验值全部比对结束后,将所有已记录的不一致数据存储,以做后续的分析;

    步骤7:按照校验的频率,每当过一个间隔期,特定数据表中特定字段的校验任务重新开启,转步骤2:

    有益效果:本发明与现有技术相比,具备的技术效果有:

    (1)本发明通过构建消息系统,搭建跨地域数据库之间的消息传递机制,并以提前配置校验任务信息的方式,控制数据一致性校验的按需执行和执行频率,实现跨地域数据库一致性校验的自动化;

    (2)本发明通过对每一条数据单独计算校验值,以最小的成本,不仅准确定位到存在差异的主或子节点数据库,而且能具体到数据库中的某一个数据,有利于提高数据库不一致性问题的解决速度;

    (3)本发明通过为数据库及表校验配置校验信息,将校验以任务的形式交由主节点管理和控制,实现针对特定表及表内特定字段的定时校验,提高校验过程的自动化和定制化。

    附图说明

    图1为本发明实施例中数据库一致性校验结构示意图

    图2为本发明实施例中数据库一致性校验流程图;

    图3本发明实施例中主数据库发送数据校验信息命令的示意图

    图4本发明实施例中各子节点反馈校验值结果的示意图

    具体实施方式

    为了使本发明的目的、技术方案更加清楚,下面结合附图和具体实施例对本发明进行详细描述。

    图1为本发明实施例中数据库一致性校验结构示意图,本发明实施例中有4个数据中心,即IDC1、IDC2、IDC3及IDC4,4个数据中心可设置在不同地域,也可设置在不同地域;每一个机房内部署一个数据库,即DB1、DB2、DB3、DB4,且4个数据库的表结构保持一致;根据实际的校验需求,选取任意数据中心内的数据库作为主节点和子节点;本发明实施例选用IDC1中的数据库DB1作为主节点,其余3个数据库作为子节点;主节点数据库和子节点数据库之间构建消息系统MQ,通过消息系统MQ,跨地域数据库间以消息传递的方式传输校验值;

    图2是本发明实施例中数据库一致性校验方法的流程图,应用于校验主数据库与备数据库之间的一致性。以验证数据表A内数据一致性为例,校验步骤具体包括:

    步骤201:配置数据表A校验的任务信息,具体包括校验执行的频率、有校验需求的数据库表及有校验需求的表字段,并交由主节点数据库DB1管理此任务;

    步骤202:按照校验频率,每隔固定的时间段,主节点数据库DB1主动触发校验任务,待校验任务开始后,主节点数据库DB1将校验任务信息,包括“有校验需求的数据库、表及有表A的表字段;接着,按照表主键排序提取表A中的具体数据,结合任意加密算法计算,生成关于表A的唯一校验值,并将最终的校验值结果以消息传递的形式,通过数据库间的消息系统MQ批量发送至主节点数据库DB1,如图4;

    步骤204:主节点数据库DB1一直保持接收各子节点发送数据的状态,一边接收校验结果,一边对校验结果进行比对,并判断各个子节点的校验结果是否保持一致;

    如果一致,表明各机房数据库中的数据是一致的,删除已参与校验的结果;

    如果不一致,表明各机房数据库中的数据是不一致的,记录不一致的数据库及数据中心;

    步骤205:待主节点将所有子节点发送的校验值全部比对结束后,将所有已记录的不一致数据存储,以便后续提取进行分析;

    步骤206:按照校验的频率,每当过一个间隔期,特定数据表中特定字段的校验任务重新开启,转步骤201:

    所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

    展开全文
  • 热璞数据库HotDB Server提供基于MySQL原生复制功能解决HotDB Server跨机房灾备问题的解决方案,能够实现跨机房数据同步功能以及解决跨机房分布式事务数据库服务灾备的问题。HotDB Server 灾备目标...

    数据是企业的核心, 是企业发展最重要的生产资料,数据丢失对企业的影响往往是致命的。分布式事务数据库产品有完整配套的跨机房灾备解决方案可以为数据库服务带来更高的可用性和安全保障。热璞数据库HotDB Server提供基于MySQL原生复制功能解决HotDB Server跨机房灾备问题的解决方案,能够实现跨机房数据同步功能以及解决跨机房分布式事务数据库服务灾备的问题。

    HotDB Server 灾备目标

    支持跨机房数据同步传输,保障中心机房分布式事务数据库服务发生故障时,可切换到备用机房,在存储节点MySQL开启半同步复制的情况下,RPO可保证到0,且单条IUD SQL(以标准性能测试SQL为标准)操作性能吞吐量TPS可达10W+。

    灾备模式实现原理

    以数据节点下管理的存储节点为单位,搭建中心机房主存储节点到灾备机房主存储节点的主从复制关系,利用MySQL的主从复制关系原理,将中心机房存储节点的业务数据同步到灾备机房对应的存储节点上,配置库亦是如此。当中心机房发生机房级别故障时,人工发出切换机房指令后,计算节点自动根据当前存储节点、配置库复制情况、角色配置情况重建新机房的复制关系,并保证计算节点服务能够继续进行。

    数据传输架构

    1.用户通过中心机房.主计算节点的服务端口执行业务SQL操作,计算节点对SQL语句进行解析,根据分片规则判断下发到各个数据节点对应的主存储节点上执行。

    2.此时通过MySQL主从复制功能,将中心机房的各个主存储节点的数据分别同步到灾备机房对应的各个主存储节点中。

    3.若灾备机房存在其他从存储节点,则根据灾备机房内部的MySQL主从复制关系同步到灾备机房其他从存储节点,由此完成跨机房数据同步。

    展开全文
  • 假设现有两个机房,需要做到数据同步。以下是架构图(实际架构图根据现有机房架构和实际会比下图复杂,但整体思路不变): Mycat、Canal、Otter是关键的三项技术:Mycat:数据库分库分表中间件,可以管理一个mysql集群...

    假设现有两个机房,需要做到数据同步。

    以下是架构图(实际架构图根据现有机房架构和实际会比下图复杂,但整体思路不变):

    eefa4445df99e98d0b724da5b820c3da.png

    Mycat、Canal、Otter是关键的三项技术:

    Mycat:数据库分库分表中间件,可以管理一个mysql集群,屏蔽了mysql集群,对外伪装成mysql server,用户无感知mysql集群。

    Canal:阿里巴巴开源产品,可以读取mysql二进制日志文件,并解析成想要的数据。

    Otter:阿里巴巴开源产品,配合Canal可以做到读取二进制文件,解析出增量数据sql,然后执行sql到指定连接。

    流程:

    1、用户插入一条数据到mycat

    2、mycat解析sql,分配sql到指定mysql数据库

    3、mysql(假设M1接收到数据)数据库接收数据,根据主从配置,写出二进制日志。

    4、mysql(M2)读取二进制日志同步数据,mysql(S)读取二进制日志同步数据,并写出二进制日志

    5、Canal读取二进制日志,解析成sql

    6、Otter接到sql,获取连接,在机房B的mycat上执行sql

    7、Otter收到sql执行回执,执行完毕。

    注:

    本文给予思路及具体技术方案,具体技术的应用及使用,请自行google。

    展开全文
  • 假设现有两个机房,需要做到数据同步。以下是架构图(实际架构图根据现有机房架构和实际会比下图复杂,但整体思路不变): Mycat、Canal、Otter是关键的三项技术:Mycat:数据库分库分表中间件,可以管理一个mysql集群...

    假设现有两个机房,需要做到数据同步。

    以下是架构图(实际架构图根据现有机房架构和实际会比下图复杂,但整体思路不变):

    eefa4445df99e98d0b724da5b820c3da.png

    Mycat、Canal、Otter是关键的三项技术:

    Mycat:数据库分库分表中间件,可以管理一个mysql集群,屏蔽了mysql集群,对外伪装成mysql server,用户无感知mysql集群。

    Canal:阿里巴巴开源产品,可以读取mysql二进制日志文件,并解析成想要的数据。

    Otter:阿里巴巴开源产品,配合Canal可以做到读取二进制文件,解析出增量数据sql,然后执行sql到指定连接。

    流程:

    1、用户插入一条数据到mycat

    2、mycat解析sql,分配sql到指定mysql数据库

    3、mysql(假设M1接收到数据)数据库接收数据,根据主从配置,写出二进制日志。

    4、mysql(M2)读取二进制日志同步数据,mysql(S)读取二进制日志同步数据,并写出二进制日志

    5、Canal读取二进制日志,解析成sql

    6、Otter接到sql,获取连接,在机房B的mycat上执行sql

    7、Otter收到sql执行回执,执行完毕。

    注:

    本文给予思路及具体技术方案,具体技术的应用及使用,请自行google。

    展开全文
  • 1.网络的延迟由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层...
  • 一般实践中,我们说到分布式部署都是指:同机房同步主从同步...MySQL同步如何设置?1主N从?还是都作为主节点,有写入时同步到所有其他节点?在数据一致性和写入延迟之间如何取舍?参考阿里的otter。可参考我之前的...
  • 假设现有两个机房,需要做到数据同步。以下是架构图(实际架构图根据现有机房架构和实际会比下图复杂,但整体思路不变): Mycat、Canal、Otter是关键的三项技术:Mycat:数据库分库分表中间件,可以管理一个mysql集群...
  • 随着用户量的不断累积,Mysql从单实例单节点发展到多实例多节点的主备,再到一个机房几十台Myql实例,但是现在,一个机房也开始慢慢无法承受庞大的数据吞吐,多机房的理念开始构建。假设现有两个机房,需要做到数据...
  • 重要说明:需要同步的表必须要有主键 主键 主键otter是一款基于Java且免费、开源基于数据库增量日志解析,准实时同步到本机房或异地机房mysql/oracle数据库的解决方案。Otter目前支持了什么1. 单向同步mysql/...
  • 使用otter实现MySQL跨机房双向同步

    千次阅读 2017-08-04 17:16:35
    使用otter实现MySQL跨机房双向同步 工作流程环境目标名词解释安装配置 配置mysql导入 manager 系统表导入 node 同步算法依赖的系统表 管理配置 添加zookeeper主机添加node添加数据源添加数据表添加Canal...
  • Mysql跨机房同步方案

    2019-09-13 11:46:08
    Mysql跨机房同步方案 原 尚浩宇 发布于 2016/05/19 17:01 字数 424 阅读 3298 收藏 20 点赞 2 评论 0 撸了今...
  • 重要说明:需要同步的表必须要有主键 主键 主键otter是一款基于Java且免费、开源基于数据库增量日志解析,准实时同步到本机房或异地机房mysql/oracle数据库的解决方案。Otter目前支持了什么1. 单向同步mysql/...
  • 由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计...
  • 它是基于数据库增量日志解析,实时将数据同步到本机房或跨机房mysql/oracle数据库。环境:(由于环境隐私原因,环境中使用的外部IP隐藏)网络图:实验环境:A机房(公司内网)《===》B机房(云服务环境内网)数据源...
  • 一、基于mysql,binlog二级制日志的主从同步 搭建两个数据库,我本地用的是docker master:172.22.0.2:3306 slave:172.22.0.3:3306 docker-compose.yml配置如下 master映射到主机13306端口,slave映射到主机...
  • 假设现有两个机房,需要做到数据同步。以下是架构图(实际架构图根据现有机房架构和实际会比下图复杂,但整体思路不变):Mycat、Canal、Otter是关键的三项技术:Mycat:数据库分库分表中间件,可以管理一个mysql...
  • Redis跨机房双向同步实践

    千次阅读 2020-05-18 23:50:49
    如:Redis\Mysql上海机房A、B ,A为主机房 ,B为从机房,为的就是同步A机房数据,防止A机房断网等原因,无法为系统提供服务,做的容灾备用方案,同一个机房内 master节点挂了 slave节点可以通过哨兵模式等其他选主方案,重新...
  • 使用otter实现MySQL跨机房双向同步 工作流程环境目标名词解释安装配置 配置mysql导入 manager 系统表导入 node 同步算法依赖的系统表 管理配置 添加zookeeper主机添加node添加数据源添加数据表添加Canal...
  • 假设现有两个机房,需要做到数据同步。以下是架构图(实际架构图根据现有机房架构和实际会比下图复杂,但整体思路不变): Mycat、Canal、Otter是关键的三项技术:Mycat:数据库分库分表中间件,可以管理一个mysql集群...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 266
精华内容 106
关键字:

跨机房mysql同步

mysql 订阅