【技术实现步骤摘要】
一种分布式数据库的数据同步方法及设备
[0001]本专利技术涉及数据库数据处理
,特别是涉及一种分布式数据库的数据同步方法及设备。
技术介绍
[0002]数据操纵语言(DML)使用"选择"、"插入"、"更新"和"删除"关键字来操作数据。数据定义语言(DDL)用于创建和操作表结构。
[0003]分布式数据库集群系统中,由于分布式事务的特性,事务日志分散在不同的节点上,同时,DDL操作可能又是在另外的元数据管理节点上处理。也就是说,表数据的操作日志分散在分布式集群的各个节点,DDL操作又分布在另外的专用节点。在这种情况下,如果需要支持数据同步和DDL同步,那么就需要考虑DDL操作和DML操作的时序问题,即先后顺序。例如,建表操作在分布式节点EP0上,而表插入操作在分布式节点EP1上,在同步时,如果先同步插入操作,再同步建表操作,那么存在时序错误,插入操作执行报错。因此,如何正确同步表DML和DDL操作成为亟待解决的问题。
[0004]针对该问题,现有通常的方案是合并所有节点的日志,然后对日志进行排序,最后确 ...
【技术保护点】
【技术特征摘要】
1.一种分布式数据库的数据同步方法,其特征在于,包括:在源端数据库部署源端数据同步系统,在目标端部署目标端数据同步系统;其中,源端数据同步系统包括元数据管理节点运行模式以及数据节点运行模式;在元数据管理节点运行模式下,所述源端数据同步系统初始化日志读取线程、日志解析线程、日志缓存线程,用于从源端数据库读取、解析、缓存日志;在数据节点运行模式下,所述源端数据同步系统初始化日志读取线程、日志解析线程、日志发送线程,用于从源端数据库读取、解析日志并将日志打包发送到目标端数据同步系统;所述目标端数据同步系统在接收到所述源端数据同步系统发送过来的消息包后进行解包,并将这些解包操作应用到目标端数据库,对于解包的操作,如果是DDL操作,那么目标端同步系统使用DDL协同入库策略执行DDL入库;如果是非DDL操作,则直接入库。2.根据权利要求1所述的分布式数据库的数据同步方法,其特征在于,所述目标端同步系统的DDL协同入库策略包括:目标端数据同步系统在目标端数据库上初始化一个DDL协同入库辅助表DDL_SYNC;该DDL_SYNC表的STATE字段表示状态信息,具体值包括:“over”表示对应DDL已入库完成;“ready”表示对应DDL同步已准备好;设置数据节点总数为M,设置变量i=0;从DDL_SYNC表中查询获得STATE值为“over”的数据行数n1;若n1不大于0,则进行DDL操作类型的判断并根据操作类型的不同使用不同过程对DDL_SYNC表上X锁;获取DDL_SYNC表STATE值为“over”的数据行数n3;若n3不大于0,则执行DDL入库操作并释放DDL_SYNC表的X锁。3.根据权利要求2所述的分布式数据库的数据同步方法,其特征在于,所述若n1不大于0,则进行DDL操作类型的判断并根据操作类型的不同使用不同过程对DDL_SYNC表上X锁具体包括:若n1不大于0,判断DDL操作是否是ALTER或TRUNCATE操作;若不是ALTER或TRUNCATE操作,则直接对DDL_SYNC表上X锁;若是ALTER或TRUNCATE操作,则从DDL_SYNC表查询获得STATE值为“ready”的数据行数n2,判断n2+1是否等于M;若n2+1等于M,则对DDL_SYNC表上X锁,若n2+1不等于M,则判断i是否等于0;若i等于0,则向DDL_SYNC表插入STATE值为“ready”的当前DDL信息,设置i=i+1,等待1秒后重新进入n1获取步骤,若i不等于0,则直接等待1秒后重新进入n1获取步骤。4.根据权利要求3所述的分布式数据库的数据同步方法,其特征在于,所述从DDL_SYNC表中查询获得STATE值为“over”的数据行数n1时,若n1大于0,则跳过该DDL操作,即不执行该DDL入库操作,直接结束本次DDL同步。5.根据权利要求3所述的分布式数据库的数据同步方法,其特征在于,所述若n3不大于0,则执行DDL入库操作并释放DDL_SYNC表的X锁具体包括:若...
【专利技术属性】
技术研发人员:彭青松,曾丽,余院兰,孙峰,
申请(专利权)人:武汉达梦数据库股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。