背景【MySQL小技巧:INT类型到达阈值,动态修改表schema失败怎么办】公司营销系统前段时间出了一个问题,名单表主键是INT类型,经过4年的业务发展,名单ID超过了21亿,到达了INT类型的阈值,导致无法接收新的营销名单 。
自救失败发现问题原因后,第一时间联系DBA,请他们帮忙执行一条ddl语句,将名单ID字段类型由INT调整为BIGINT 。
很遗憾,由于表的存量数据有5000多万,ddl无法短时间执行成功 。为了避免线上联机业务长时间受到影响,只能想别的办法 。
腾笼换鸟名单ID最大值是INT的极大值,存量数据5000多万,20多亿历史数据是被迁移备份归档了的 。
联系到每天新增名单200万左右,所以新办法的第一步就是将最进500万数据的ID,平移到一个历史区间,这样就腾出了500万的ID空间,让新名单能正常接入,保证业务短期正常 。
无阻塞动态修改schema第一次自救失败,主要原因是直接修改表字段类型是阻塞式修改,直接影响了线上业务 。所以新办法的第二步就是无阻塞修改表字段类型 。DBA推荐了一款工具,PT-ONLINE-SCHEMA-CHANGE,能修改schema而不阻塞其他数据库操作 。
它的原理分为四步:
- 新建一个变更过schema后的表;
- 再在原表上建update触发器、delete触发器、insert触发器,确保新的DML操作能同步到新表;
- 再将原表的数据到按照主键ID分区间拷贝到新表;
- 最后待数据copy完成后,将新表rename成老表 。
推荐阅读
- linux之grep使用技巧
- office批量调整图片大小,wpsoffice怎么批量调整图片大小-
- 刘海|关晓彤Lisa自己剪刘海失败了,get这个技巧,手残也能剪出完美刘海
- 三年级语文作文小练笔?适合三年级写的小练笔题目
- 佛印和苏东坡的故事苏小妹为什么说苏东坡输了?苏东坡 苏小妹和佛印禅师的故事
- 化妆师|画完妆显老变丑?化妆师调整化妆顺序技巧必学,改变上妆步骤、妆容更精致协调
- 痔疮出血小偏方,治疗痔疮出血小偏方
- 发型|谭松韵御用发型!2022羊毛卷发推荐,小脸1。5倍又减龄,选这发色直接化身行走泰迪小熊
- 怎样帮助睡眠的小窍门,睡眠不好怎样调理
- 荷叶冬瓜皮茶真的瘦了,冬瓜皮荷叶减肥小贴士