有没有办法在不进行重大更改的情况下重命名 InnoDB 表上的列?
桌子相当大,我想避免重大停机。
重命名列(使用ALTER TABLE ... CHANGE COLUMN
)不幸的是需要 MySQL 运行全表复制。
查看pt-在线架构更改。这有助于您对表进行多种类型的 ALTER 更改,而无需在 ALTER 期间锁定整个表。在将数据复制到新表的同时,您可以继续读取和写入原始表。通过触发器捕获更改并将其应用到新表。
Example:
pt-online-schema-change h=localhost,D=databasename,t=tablename \
--alter 'CHANGE COLUMN oldname newname NUMERIC(9,2) NOT NULL'
Update:MySQL 5.6 可以在不重建表的情况下执行某些类型的 ALTER 操作,更改列名是支持在线更改的操作之一。看http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html概述哪些类型的变更支持或不支持这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)