标签:触发器 table1 在线 新表中 插入 停机 修改 数据 大表
假设我们需要修改一张生产环境正在使用的表的表结构,比如添加字段,修改字段类型,修改索引等,有两种方法。
假设原表为table1
一. 手动循环插入
- 首先创建新表table2,在新表中修改以满足自己的需要。
- 循环原表,将数据分批插入新表中
- 通过rename操作修改表名,实现两表的替换。(RENAME TABLE table1 TO table_old,table2 TO table1;)
但是这种方法存在隐患,当步骤2进行到一半,即原表中的数据有一半插入到新表时,如果已经插入的数据在原表被update,那么就会导致两张表数据的不一致,使用时需要特别注意。
二.使用第三方工具来实现(PerconaTookit)
只讲原理
当我们需要修改一个表的结构时,工具会创建一个新的表,在新的表上修改结构,另外会在原表上设置触发器,原表上所有数据的增删改都会被触发器同步至新表。触发器创建完成后开始进行数据拷贝,在拷贝的同时如果有数据更改会触发触发器同步更改。当所有数据同步完成后会删除原来的表并且将新表rename,从而达到替换的效果。
标签:触发器,table1,在线,新表中,插入,停机,修改,数据,大表 来源: https://blog.csdn.net/PentaQwQ/article/details/121132645
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。