在线不停机修改大表结构
2021/11/3 23:11:05
本文主要是介绍在线不停机修改大表结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
假设我们需要修改一张生产环境正在使用的表的表结构,比如添加字段,修改字段类型,修改索引等,有两种方法。
假设原表为table1
一. 手动循环插入
- 首先创建新表table2,在新表中修改以满足自己的需要。
- 循环原表,将数据分批插入新表中
- 通过rename操作修改表名,实现两表的替换。(RENAME TABLE table1 TO table_old,table2 TO table1;)
但是这种方法存在隐患,当步骤2进行到一半,即原表中的数据有一半插入到新表时,如果已经插入的数据在原表被update,那么就会导致两张表数据的不一致,使用时需要特别注意。
二.使用第三方工具来实现(PerconaTookit)
只讲原理
当我们需要修改一个表的结构时,工具会创建一个新的表,在新的表上修改结构,另外会在原表上设置触发器,原表上所有数据的增删改都会被触发器同步至新表。触发器创建完成后开始进行数据拷贝,在拷贝的同时如果有数据更改会触发触发器同步更改。当所有数据同步完成后会删除原来的表并且将新表rename,从而达到替换的效果。
这篇关于在线不停机修改大表结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略