本发明属于数据库集群领域,尤其是涉及一种数据库集群节点间数据同步的方法及装置。
背景技术:
数据库集群使用中,用户需要经常进行建表,计算,删表这样的操作。在删表前,如果数据库集群某节点上的表发生了损坏,需要对这个数据库节点上的表进行同步。
目前可以采用如下方法进行同步:在被同步的表上加锁,等待同步完成后,删表操作才能进行。如果同步时用户已经做完了计算,需要删除这个表,那么用户要等到同步完被删除的表之后才能对该表进行删除,这样就会浪费了大量时间和系统资源。
技术实现要素:
本发明实施例提供了一种数据库集群节点间数据同步的方法及装置,用于解决上述存在的技术问题。
一方面,本发明实施例提供了一种数据库集群节点间数据同步的方法,包括:
从元数据服务器获取需要同步的表的信息;
检查锁队列,确认是否包括删除所述表的锁;
如果所述锁队列中不包括所述表的删除信息,则进行数据同步。
进一步的,所述方法还包括:
如果所述锁队列不包括所述表的删除信息,则放弃进行数据同步。
进一步的,在进行数据同步之后,还包括:
确认数据同步是否成功,如果不成功,则将所述表的名称和失败对应的节点写入元数据服务器,生成损坏信息;
添加删除锁到锁队列中;
在删除所述表成功后,删除所述删除锁;
更进一步的,在进行数据同步之后,还包括:
删除所述表在元数据服务器中的损坏信息。
另一方面,本发明实施例还提供了一种数据库集群节点间数据同步的装置,包括:
信息获取单元,用于从元数据服务器获取需要同步的表的信息;
锁检查单元,用于检查锁队列,确认是否包括删除所述表的锁;
同步单元,用于如果所述锁队列中不包括所述表的删除信息,则进行数据同步。
进一步的,所述装置还包括:
放弃单元,用于如果所述锁队列包括所述表的删除信息,则放弃进行数据同步。
进一步的,所述装置还包括:
写入单元,用于确认数据同步是否成功,如果不成功,则将所述表的名称和失败对应的节点写入元数据服务器,生成损坏信息;
添加单元,用于添加删除锁到锁队列中;
锁删除单元,用于在删除所述表成功后,删除所述删除锁。
进一步的,所述装置还包括:
损坏信息删除单元,用于删除所述表在元数据服务器中的损坏信息。
本发明实施例通过从元数据服务器获取需要同步的表的信息;查锁队列,确认是否包括删除所述表的锁;如果所述锁队列中不包括所述表的删除信息,则进行数据同步。可以在对表进行修改之前将表删除,减少数据交换同步,避免浪费时间和系统资源。高效的完成数据库同步。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的数据库集群节点间数据同步的方法的流程示意图;
图2是本发明实施例二提供的数据库集群节点间数据同步的方法的流程示意图;
图3是本发明实施例三提供的数据库集群节点间数据同步的方法的流程示意图;
图4是本发明实施例四提供的分数据库集群节点间数据同步装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1是本发明实施例一提供的数据库集群节点间数据同步的方法的流程示意图。本实施例可适用于数据库集群节点间数据同步的情况,该方法可以由数据库集群节点间数据同步装置来执行,该装置可由软件/硬件方式实现,并可集成于数据库集群节点中。
参见图1,所述分布式数据库数据备份分片部署方法,包括:
S110,从元数据服务器获取需要同步的表的信息。
任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息等等。系统中有一个节点专门司职元数据管理,所有元数据都存储在该节点的存储设备上。所有客户端对文件的请求前,都要先对该元数据管理器请求元数据。从元数据服务器可以获取需要进行同步的表的信息。示例性的,包括同步表的存放位置。
S120,检查锁队列,确认是否包括删除所述表的锁。
在数据库集群中包括锁队列管理器,锁队列管理器用来处理数据库的SQL的加锁请求,将请求排队存储,并向同步工具提供查询接口。数据库执行数据改变操作时,如果有部分数据库节点上失败,且失败节点上对应的数据的副本在其他节点上执行成功,将失败信息(表名,数据库节点名)记录到元数据服务器。数据库执行删除表操作,同时将删除锁加入到锁队列管理器。通过对锁队列管理器的查询,可以确定是否包括删除所述表的锁。
S130,如果所述锁队列中不包括所述表的删除信息,则进行数据同步。
如果所述锁队列中不包括所述表的删除信息,则说明该表并未损坏,则可以采用同步工具对所述表进行数据同步。
本发明实施例通过从元数据服务器获取需要同步的表的信息;查锁队列,确认是否包括删除所述表的锁;如果所述锁队列中不包括所述表的删除信息,则进行数据同步。可以在对表进行修改之前将表删除,减少数据交换同步,避免浪费时间和系统资源。高效的完成数据库同步。
在本实施例的一个优选实施方式中,所述方法还包括:如果所述锁队列包括所述表的删除信息,则放弃进行数据同步。如果所述锁队列中包括所述表的删除信息,则说明该表已经损坏,无需采用同步工具对所述表进行数据同步。或在同步一批数据时终止同步,避免浪费时间和系统资源。
实施例二
图2是本发明实施例二提供的数据库集群节点间数据同步的方法的流程示意图,本发明实施例以上述实施例为基础,进一步的,在进行数据同步之后增加如下步骤:确认数据同步是否成功,如果不成功,则将所述表的名称和失败对应的节点写入元数据服务器,生成损坏信息;添加删除锁到锁队列中;在删除所述表成功后,删除所述删除锁。
参见图2,所述的数据库集群节点间数据同步的方法,包括:
S210,从元数据服务器获取需要同步的表的信息。
S220,检查锁队列,确认是否包括删除所述表的锁。
S230,如果所述锁队列中不包括所述表的删除信息,则进行数据同步。
S240,确认数据同步是否成功,如果不成功,则将所述表的名称和失败对应的节点写入元数据服务器,生成损坏信息。
数据库用来接受SQL请求,请求执行过程中如果某个节点上的表损坏,数据库将损坏的表名、数据库节点名记录到元数据服务器中。
S250,添加删除锁到锁队列中。
由于表已经损坏,则可以将表删除,数据库执行删除表操作,同时将删除锁加入到锁队列管理器。
S260,在删除所述表成功后,删除所述删除锁。
如果成功删除表,通知元数据服务器,删除元数据中对应的表损坏信息,并通知锁队列服务器,删除锁队列中的这个表的删除锁。
本实施例通过在进行数据同步之后增加如下步骤:确认数据同步是否成功,如果不成功,则将所述表的名称和失败对应的节点写入元数据服务器,生成损坏信息;添加删除锁到锁队列中;在删除所述表成功后,删除所述删除锁。可以对同步不成功的表进行删除,以避免后期再次进行同步,浪费时间和系统资源。
实施例三
图3是本发明实施例三提供的数据库集群节点间数据同步的方法的流程示意图,本发明实施例以上述实施例为基础,进一步的,在进行数据同步之后增加如下步骤:删除所述表在元数据服务器中的损坏信息。
参见图3,所述的数据库集群节点间数据同步的方法,包括:
S310,从元数据服务器获取需要同步的表的信息。
S320,检查锁队列,确认是否包括删除所述表的锁。
S330,如果所述锁队列中不包括所述表的删除信息,则进行数据同步。
S340,删除所述表在元数据服务器中的损坏信息。
同步操作时,同步一批数据后,判断同步是否完成:如果同步完成,删除元数据服务器上的表损坏信息。由于同步完成,表的数据是完整正确的,所以,可以删除所述表在元数据服务器中的损坏信息。
本实施例通过在进行数据同步之后增加如下步骤:删除所述表在元数据服务器中的损坏信息。可以在表同步成功后,及时修改表对应的元数据,避免误删除同步成功的表。
实施例四
图4是本发明实施例四提供的数据库集群节点间数据同步的装置的结构示意图,如图4所示,所述装置包括:
信息获取单元410,用于从元数据服务器获取需要同步的表的信息;
锁检查单元420,用于检查锁队列,确认是否包括删除所述表的锁;
同步单元430,用于如果所述锁队列中不包括所述表的删除信息,则进行数据同步。
本发明实施例通过从元数据服务器获取需要同步的表的信息;查锁队列,确认是否包括删除所述表的锁;如果所述锁队列中不包括所述表的删除信息,则进行数据同步。可以在对表进行修改之前将表删除,减少数据交换同步,避免浪费时间和系统资源。高效的完成数据库同步。
进一步的,所述装置还包括:
放弃单元,用于如果所述锁队列包括所述表的删除信息,则放弃进行数据同步。
进一步的,所述装置还包括:
写入单元,用于确认数据同步是否成功,如果不成功,则将所述表的名称和失败对应的节点写入元数据服务器,生成损坏信息;
添加单元,用于添加删除锁到锁队列中;
锁删除单元,用于在删除所述表成功后,删除所述删除锁。
更进一步的,所述装置还包括:
损坏信息删除单元,用于删除所述表在元数据服务器中的损坏信息。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。