一种在线修改数据库表结构的方法技术

技术编号:20074920 阅读:42 留言:0更新日期:2019-01-15 00:35
本发明专利技术提供一种在线修改数据库表结构的方法,包括:检查所述源数据表是否存在外键,若存在外键则根据主库的源数据表在主库创建一个新表,对新表按照目标表结构进行修改;在主库创建触发器,用于将源数据表中的操作映射到新表;开启binlog日志,按照新表自动修改从库的表结构;从源数据表中拷贝数据到新表;根据修改后的新表,修改与外键相关联的子表;重命名新表,并删除源数据表;删除触发器。本发明专利技术考虑外键关联的子表以及从库实例的同步更新,在线修改速度快,且不会造成云库服务器数据阻塞,具有较高的稳定性,能够有效应对具有多实例从库及云库的表结构在线修改需求。

A Method of On-line Modification of Database Table Structure

The invention provides a method for modifying the database table structure on-line, including checking whether the source data table has foreign keys, creating a new table in the main database according to the source data table of the main database, modifying the new table according to the target table structure, Creating Triggers in the main database for mapping operations in the source data table to the new table, opening binlog logs and following the new table. Automatically modify the table structure from the library; copy data from the source data table to the new table; modify the subtable associated with the foreign key according to the modified new table; rename the new table and delete the source data table; delete the trigger. Considering the synchronous updating of foreign key related subtables and slave database instances, the method has fast online modification speed, does not cause data blocking of cloud server, has high stability, and can effectively meet the online modification requirement of table structure with multi-instance slave database and cloud database.

【技术实现步骤摘要】
一种在线修改数据库表结构的方法
本专利技术涉及数据库
,特别涉及一种在线修改数据库表结构的方法。
技术介绍
目前对于数据库中的实体数据表都是存储在数据库中的。根据项目发展的需要,在数据库运维过程中会增减各种功能,这就需要对数据表频繁进行修改,在一些情况下,甚至需要对表结构进行修改,然而在对数据库表结构进行相应的修改时,往往需要暂停目前线上运行的项目,修改后重新发布应用。目前开源在线修改MySql表结构的工具,如Percona的pt-online-schema-change、Facebook的OSC和LHM等,但这些只能对单实例进行修改,无法对多实例从库及云库进行在线修改。因此,提供一种能够不影响线上业务且能够对多实例从库及云库表结构进行修改的方法及系统是本领域技术人员亟待解决的技术问题。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种在线修改数据库表结构的方法,可以实现多实例从库及主库的在线修改,不会影响数据库线上的正常运行,修改速度快且能够有效保证数据的完整性。为实现上述目的其具体方案如下:一种在线修改数据库表结构的方法,主库中包括源数据表,包括如下步骤:步骤1,检查所述源本文档来自技高网...

【技术保护点】
1.一种在线修改数据库表结构的方法,主库中包括源数据表,其特征在于:包括如下步骤:步骤1,检查所述源数据表是否存在外键,若不存在外键则终止执行,若存在外键则进入步骤2;步骤2,根据主库的源数据表在所述主库创建一个新表,所述新表具有和所述源数据表相同的表结构,对所述新表按照目标表结构进行修改;步骤3,在所述主库创建触发器,用于将所述源数据表中的操作映射到所述新表;步骤4,开启binlog日志,按照新表自动修改从库的表结构;步骤5,从所述源数据表中拷贝数据到所述新表;步骤6,根据修改后的所述新表,修改与外键相关联的子表;步骤7,重命名所述新表,并删除所述源数据表;步骤8,删除所述触发器。

【技术特征摘要】
1.一种在线修改数据库表结构的方法,主库中包括源数据表,其特征在于:包括如下步骤:步骤1,检查所述源数据表是否存在外键,若不存在外键则终止执行,若存在外键则进入步骤2;步骤2,根据主库的源数据表在所述主库创建一个新表,所述新表具有和所述源数据表相同的表结构,对所述新表按照目标表结构进行修改;步骤3,在所述主库创建触发器,用于将所述源数据表中的操作映射到所述新表;步骤4,开启binlog日志,按照新表自动修改从库的表结构;步骤5,从所述源数据表中拷贝数据到所述新表;步骤6,根据修改后的所述新表,修改与外键相关联的子表;步骤7,重命名所述新表,并删除所述源数据表;步骤8,删除所述触发器。2.根据权利要求1所述的一种在线修改数据库表结构的方法,其特征在于,所述触发器记录从所述源数据表向所述新表拷贝数据过程中对源数据表进行数据修改的操作,并且在数据拷贝结束后,在所述新表执行所述操作。3.根据权利要求1所述的一种在线修改数据库表...

【专利技术属性】
技术研发人员:郭安俊
申请(专利权)人:武汉掌游科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1