mysql 生产环境数据表10亿,不停服,想把自增id int 改成 bigint有什么好的办法吗?

mysql 生产环境数据表10亿,不停服,想把自增id int 改成 bigint有什么好的办法吗?

阅读 3.4k
1 个回答

用自增整型做主键,一律使用 BIGINT,而不是 INT。不要为了节省 4 个字节使用 INT,当达到上限时,再进行表结构的变更,将是巨大的负担与痛苦。
我所在的公司就遇到过线上环境出现INT类型达到上线导致服务异常的问题,当时运维同学的做法是修改数据库表结构(字段类型 INT -> BIGINT),你猜这个简单的操作会造成什么问题?表锁死!表锁死又导致了一系列相关请求全部卡死!
解决方案
以Mybatis中间件举例,修改服务的xml文件,将TABLE_1表名都替换为TABLE_2,之后分批次重启服务.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏