【技术实现步骤摘要】
一种基于日志解析的数据库添加列同步方法和装置
本专利技术涉及数据库
,特别是涉及一种基于日志解析的数据库添加列同步方法和装置。
技术介绍
在基于日志解析架构的数据库实时同步系统(支持异构)中,表修改的添加列操作同步往往会拖慢同步的性能。主要是在实际的应用系统中有些表的数据量过于庞大,如果在这种记录数很大的表上对表结构进行修改,比如添加某个列,会造成数据库对表的重构,由于这些表记录数庞大,数据库在重构时会消耗大量的时间并且产生大量的数据库日志。传统的同步方法源端日志解析服务需要捕获到源端数据库表修改操作的提交日志以后再开始解析并同步该表修改操作,并在捕获到该操作提交日志之前,该操作产生的大量日志都要进行收集并缓存,缓存操作会产生大量的IO从而影响源端数据库的性能,并且表修改操作发送到目的端,目的端的数据库在执行该修改操作时,也同样需要消耗大量的时间才能完成,期间数据同步服务在同步该表的后续操作时,只能等待目的端数据库完成表修改以后才能进行,造成很大的同步延时。例如对源端数据库拥有1亿行记录的A表添加1个列,该操作大约需要在源端数据库执行花费约60分钟,该操作同步到目的库也同样至少要花费60分钟才能完成,那么就会造成数据同步至少延迟60分钟。在搭建主备同步的环境中,目的端数据库往往是用作查询库来分担主库的压力,表在添加列时,针对该表的查询操作将被阻塞,目的端数据库长时间的表修改操作会影响到应用的查询功能,如何缩短大表修改操作同步延时并且减少同步对目的端数据库上应用程序的影响就成为业界 ...
【技术保护点】
1.一种基于日志解析的数据库添加列同步方法,其特征在于,包括:/n源端数据库的同步系统判断日志中待同步的操作为DDL事务,则根据该事务号收集后续属于所述DDL事务的日志;/n当收集到对应所述DDL事务的日志内容为用户表INSERT操作时,判断DDL事务为添加列的操作,根据添加列操作所属表的列信息,构造一个建表操作发送到目的端同步系统执行;其中,所述建表操作包括建立新建表的表名和原表名建立映射关系,新建表的列信息参照对应原表完成添加列操作后的列信息设置;/n源端数据库的同步系统提取用户表INSERT操作中新列的值构造出常量为EXP_NEW,并根据收集的系统表操作日志还原出原始的添加列操作,并提取出对应常量的公式表达式为EXP_OLD;/n构造一个查询插入操作发送到目标端同步服务执行,把目的端数据库相应原表中的数据复制到目的端数据库的新建表中;其中,查询插入操作中添加列的列值为常量EXP_NEW,相应添加列的定义为EXP_OLD;/n源端数据库同步系统继续捕获日志,直到捕获到所述DDL事务的提交日志时,所述源端数据库的同步系统通知目的端数据库的同步系统删除原表,并将新建表的表名更换为目的端 ...
【技术特征摘要】
1.一种基于日志解析的数据库添加列同步方法,其特征在于,包括:
源端数据库的同步系统判断日志中待同步的操作为DDL事务,则根据该事务号收集后续属于所述DDL事务的日志;
当收集到对应所述DDL事务的日志内容为用户表INSERT操作时,判断DDL事务为添加列的操作,根据添加列操作所属表的列信息,构造一个建表操作发送到目的端同步系统执行;其中,所述建表操作包括建立新建表的表名和原表名建立映射关系,新建表的列信息参照对应原表完成添加列操作后的列信息设置;
源端数据库的同步系统提取用户表INSERT操作中新列的值构造出常量为EXP_NEW,并根据收集的系统表操作日志还原出原始的添加列操作,并提取出对应常量的公式表达式为EXP_OLD;
构造一个查询插入操作发送到目标端同步服务执行,把目的端数据库相应原表中的数据复制到目的端数据库的新建表中;其中,查询插入操作中添加列的列值为常量EXP_NEW,相应添加列的定义为EXP_OLD;
源端数据库同步系统继续捕获日志,直到捕获到所述DDL事务的提交日志时,所述源端数据库的同步系统通知目的端数据库的同步系统删除原表,并将新建表的表名更换为目的端数据库中原表的表名,完成所述DDL事务同步。
2.根据权利要求1所述的基于日志解析的数据库添加列同步方法,其特征在于,所述源端数据库的同步系统判断日志中待同步的操作为DDL事务,则根据该事务号收集后续属于所述DDL事务的日志,还包括:
当首先收集到对应所述DDL事务的日志内容不是用户表INSERT操作,而是提交日志时,判断DDL事务为添加列的操作,则向目的端同步系统发送添加列操作。
3.根据权利要求2所述的基于日志解析的数据库添加列同步方法,其特征在于,目的端数据库的同步系统在接收到源端数据库的同步系统的添加列操作后,直接在目的端数据库上对该表执行添加列操作,完成所述DDL事务同步。
4.根据权利要求2所述的基于日志解析的数据库添加列同步方法,其特征在于,目的端数据库在所述DDL前,若接收到查询请求,所述方法还包括:
所述目的端数据库的原表被锁定,从而处于不可被...
【专利技术属性】
技术研发人员:付铨,孙峰,彭青松,余院兰,
申请(专利权)人:武汉达梦数据库有限公司,
类型:发明
国别省市:湖北;42
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。