[发明专利]一种关系型数据库在线DDL修改表结构的方法和装置在审
申请号: | 201911191827.4 | 申请日: | 2019-11-28 |
公开(公告)号: | CN110909087A | 公开(公告)日: | 2020-03-24 |
发明(设计)人: | 武鹏飞 | 申请(专利权)人: | 北京思特奇信息技术股份有限公司 |
主分类号: | G06F16/28 | 分类号: | G06F16/28;G06F16/22 |
代理公司: | 北京轻创知识产权代理有限公司 11212 | 代理人: | 张力波 |
地址: | 100089 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 关系 数据库 在线 ddl 修改 结构 方法 装置 | ||
本发明公开了一种关系型数据库在线DDL修改表结构的方法和装置,涉及关系型数据库(MySQL)领域领域。该方法包括:根据需要修改的DDL功能创建影子表,同时不锁定原表,业务系统持续保持对原表的DML操作;在影子表创建完成后,将原表中的数据拷贝到影子表中;将影子表中的拷贝数据与原表的数据进行校验;当影子表和原表的校验结果一致时,保证了复制后的表数据的一致性,并将复制原表数据的影子表进行重命名并替换原表,整个DDL表结构修改的过程完全没有影响线上业务的正常运行,保证了在修改表结构的过程中大量线程的高效率处理,能够维持业务系统的正常运行,不影响前端应用对标的写操作。
技术领域
本发明涉及关系型数据库(MySQL)领域,尤其涉及一种关系型数据库在线DDL修改表结构的方法和装置。
背景技术
在项目上使用MySQL数据库正式上生产环境以后,因业务变更还是数据库运维时,我们总会遇到对数据表进行DDL变更的业务场景,如对某些表添加、修改、删除字段或者索引。
对于MySQL数据库,DDL操作显然是一个令所有MySQL DBA都诟病的一个功能,因为在MySQL中在对表进行DDL时会锁表,导致库上大量线程处于“Waiting for meta datalock”状态,严重影响线上业务正常运行。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种关系型数据库在线DDL修改表结构的方法和装置。
本发明解决上述技术问题的技术方案如下:
一种关系型数据库在线DDL修改表结构的方法,包括以下步骤:
S1,根据需要修改的DDL功能创建所述影子表,同时不锁定所述原表,业务系统持续保持对所述原表的DML操作。
S2,在所述影子表创建完成后,将所述原表中的数据拷贝到所述影子表中;
S3,将所述影子表中的拷贝数据与所述原表的数据进行校验;
S4,当所述影子表和所述原表的校验结果一致时,将所述影子表重命名为原表名、并替换所述原表。
本发明的有益效果是:本申请方案通过在线DDL修改表结构的,并且在修改表结构的时候,不锁定原表不影响当前业务系统的运行,也就是原表还允许如INSERT,UPDATE,DELETE这类DML操作,保证了在修改表结构的过程中业务数据的完整性,并在修改表结构完成后,在锁定原表,并将原表的数据拷贝影子表,并进行校验,保证了复制后的表数据的一致性,并将复制原表数据的影子表进行重命名并替换原表,整个DDL表结构修改的过程完全没有影响线上业务的正常运行,保证了在修改表结构的过程中大量线程的高效率处理,能够维持业务系统的正常运行,不影响前端应用对标的写操作。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步地,所述S2,具体包括:获取关系型数据库的主实例的增量binlog信息,将所述binlog信息中所述原表的全量数据和增量数据拷贝到所述影子表。
采用上述进一步方案的有益效果是:通过binlog二进制日志流的方式捕获表更改,以来获取原表在表结构修改期间的增量数据和修改前的全量数据,将原表的增量数据和原表的全量数据以小数据复制的过程复制到影子表,保证了在DDL表结构修改过程中影子表数据的完整性。
进一步地,在所述S2的拷贝之前还包括:S21,用户触发切换,阻止所述原表上的所述DML操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京思特奇信息技术股份有限公司,未经北京思特奇信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911191827.4/2.html,转载请声明来源钻瓜专利网。