MySQL表自增id溢出的故障复盘如何解决?本篇文章小编给大家分享一下MySQL表自增id溢出的故障复盘解决方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

问题:MySQL某个表自增id溢出导致某业务block

背景:

tokudb引擎的一个大表tb1,存放业务上的机审日志,每天有大量的写入, 并且由于历史原因,这张表是int signed 类型的,最大只能存

2147483647行记录 。

处理过程:

增加DBLE中间件代理,然后做range分区,将新数据写到新加的的一个分片上。 同时业务上修改连接将这个表tb1的连接方式改走DBLE。

但是业务上改完代码后,发现还有残余的部分insert into tb1的写请求被转发到了老的表上,且有些表被错误得路由到了DBLE上。

这加剧了事情的复杂度。最终业务上将这个写tb1的代码下线后,整个业务才恢复正常。

后来复盘后,我想了下其实这种情况下,对于日志类的表的问题,DBA应该采用迅速果断的措施 尽快恢复业务,然后再考虑其它问题。

这样考虑的话,上面的问题就好解决了。 只需要下面几步:

use logdb;

select max(id) from tb1; -- 记录下当前最大的id为 xxxx

create table tb2 LIKE tb1; -- 创建影子表

alter table tb2 modify column id bigint unsigned not null auto_increment ; -- 修改新表为bigint unsigned类型,能存 18446744073709551615 行数据。

alter table tb2 auto_increment=xxxx+1; -- 改大新表的自增主键起始值

rename table tb1 to tb_archive , tb2 to tb1; -- 切换表名

这样操作后,tb1就可以写入数据了,业务也能暂时恢复,剩下的工作就是把 tb_archive 表的数据迁移到 tb1

里面的(迁移数据可以使用pt-archiver工具在后台慢慢跑就行)。

算了下,整个操作中切表最多5分钟左右即可恢复业务的写入操作,剩余的迁移数据的影响相对会小一些。

mysql自动增长id 溢出_MySQL表自增id溢出的故障复盘怎么解决 MySQL表自增id溢出的故障复盘解决方法...相关推荐

  1. mysql自动增长恢复_mysql自动增长的有关问题,怎么恢复从1开始

    mysql自动增长的问题,如何恢复从1开始 在一个表中我设置到autoid为自动增长列 例如有如下数据 1 张三 男 20 2 王五 男 22 3 李四 男 25 4 陈大 男 19 现在我把 aut ...

  2. mysql自动增长 sql,SQL基础知识V2——自增长列

    SQL专栏 SQL数据库基础知识汇总 SQL数据库高级知识汇总 自增长列的作用 自增长列会在新记录插入表中时生成一个唯一的数字. 我们通常希望在每次插入新记录时自动创建主键字段的值. 我们可以在表中创 ...

  3. mysql自增长主键_MySQL数据库8(九)列属性之主键、自增长

    主键 顾名思义,主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性 创建主键 随表创建 系统提供了两种增加主键的方式: 1.直接在需要当做主键的字段之后,增加prima ...

  4. mysql自动写入创建时间_mysql 自动记录数据插入及最后修改时间

    总结: `uptime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 应用场景: 1.在数据表中, ...

  5. mysql自动获取时间列_mysql自动获取时间日期的方法

    实现方式: 1.将字段类型设为 TIMESTAMP 2.将默认值设为 CURRENT_TIMESTAMP 举例应用: 1.MySQL 脚本实现用例 --添加CreateTime 设置默认时间 CURR ...

  6. mysql自动提交的概念_MySQL入门之事务概念

    MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过 set autocommit=0 禁止自动提交 set autocommit=1开启自动提交 mysql中INNOD ...

  7. mysql 自动备份 发邮件_MYSQL自动备份并发送邮件工具

    最近在开发小程序,由于服务器只有一台,所以不能数据库异机备份,出于数据安全的考虑,就做了一个数据库定时备份并发送邮件到自己的邮箱的小工具,先看下工具界面 这个工具主要涉及到三个部分 1.MYSQL自动 ...

  8. 绿化版mysql启动不了服务_MySql免安装版绿化版安装配置,附MySQL服务无法启动解决方案...

    整理于:https://www.cnblogs.com/cenwei/p/6249856.html 我下载的MySQL版本是:mysql-5.6.15-winx64 一.解压文件 下载好MySQL后, ...

  9. 解决 mysql 自动增长的 id 不是从 1 开始 或 不连续

    原因:1.insert 失败后,id 已自动增加,会造成 id 不连续 2.delete 后,再重新插入数据后,id 会从删除前最后的 id 开始增加,造成 id 不是从1开始增加 注意:删除全部数据 ...

最新文章

  1. Android音频焦点申请处理
  2. 测试私有方法 重构_通过测试学Go:指针和错误
  3. linux mv 环境变量,linux环境变量 cp mv 以及文档查看的几个命令
  4. Python入门学习---第一天
  5. 图解分析:基于setnx的分布式锁有什么缺陷
  6. android的CursorLoader用法小结
  7. angularjs自动加载和手动加载
  8. cmd(批处理脚本)实现批量下载图片
  9. 分类预测 | MATLAB实现LSSVM(最小二乘支持向量机)分类
  10. 渲染101渲染农场完美支持火凤凰插件Phoenix FD
  11. 在水处理控制系统中正确运用信号隔离器
  12. 各类分布以及检验方法
  13. oracle怎么查临时表,Oracle查询问题引发临时表使用
  14. win连接被远程计算机终止,windows系统远程连接后马上断开提示“远程计算机已结束连接”的解决方法...
  15. 大学计算机作业互评评语简短,大学学生互评评语简短
  16. 被360杀毒删除的文件怎么恢复
  17. H5是什么?个人浅薄说明
  18. 1231:最小新整数——贪心
  19. 计算机专业考研有必要二战吗,我,到底要不要选择二战考研?​
  20. python爬虫获取steam验证码

热门文章

  1. python中的单下划线和双下划线_python 里面的单下划线与双下划线的区别(私有和保护)...
  2. 深度学习-机器学习(神经网络的应用 下)
  3. pyqt5讲解2:QPushButton,QRadioButton,QCheckBox
  4. OpenCASCADE绘制测试线束:几何命令之Intersections
  5. wxWidgets:wxCommandEvent类用法
  6. boost::sort模块实现跨并行线程的整数排序速度基准的测试程序
  7. boost::hana::make_optional用法的测试程序
  8. boost::hana::Comparable用法的测试程序
  9. boost::mpl::integral_c用法的测试程序
  10. boost::geometry::num_points用法的测试程序