【真实经验分享】MySQL两个线程同时对表新增字段,被异常取消,导致表结构崩溃

某客户同时发起两个线程对表新增字段,被异常取消,导致表结构崩溃

mysql> select count(*) from table_a;

ERROR 1146 (42S02): Table 'database1.table_a' doesn't exist

bash 复制代码
cd $data_dir/db_name/
ll table_a.*
table_a.frm ## 存表结构
table_a.ibd ## 存表数据
1.删除表元数据信息
bash 复制代码
## 备份并挪走 frm 与 ibd 文件

## 使用历史表结构 建一张 新表
create table table_a(id int);

## 若新表建不成功,则是由于旧表的元数据信息仍然保留在数据库里
## 尝试 rename 旧表 
alter table table_a rename to table_a_bak;
drop table table_a;

## 检查数据字典是否还存在该表信息
## 确认 InnoDB 字典里到底有没有这个表的 space ID
SELECT * FROM information_schema.innodb_sys_tables 
WHERE name LIKE 'database1/table_a%';

## 查看表空间文件状态
SELECT * FROM information_schema.innodb_sys_tablespaces 
WHERE name like  'database1/table_a%'
2.用正确的表结构新建表
bash 复制代码
create table table_a(id int);
3.将新表的tablespace下线
bash 复制代码
ALTER TABLE database1.table_a DISCARD TABLESPACE;
4.将旧表的 ibd 文件复制到 $data_dir/db_name/ 路径代替新表的数据,并正确赋权该文件
5.注册该表的数据
bash 复制代码
ALTER TABLE database1.table_a IMPORT TABLESPACE;

SELECT count(*) FROM database1.table_a;
相关推荐
杨连江1 小时前
基于磁畴微观机制的铁芯电磁放大与变压器功率增强原理研究
经验分享
JSCircuit1 小时前
无尘车间专属真空甲酸炉关键技术与应用实践
经验分享·ai写作·内容运营
@insist1232 小时前
系统集成项目管理工程师-信息和文档管理
网络·数据库·软考·系统集成项目管理工程师·软考中项·软件水平考试
残 风3 小时前
PostgreSQL 存储机制详解
数据库·postgresql·开源·数据库开发
JacksonMx4 小时前
Java CompletableFuture 异步编程实战:从入门到架构师避坑指南
linux·数据库·python
tachibana24 小时前
性能指标的口径选择
数据库·人工智能·架构·大模型·llm
沙盘客5 小时前
AFSIM 官方案例库全景与解读方法论
c++·经验分享·后端
机器人梦想家5 小时前
具身机器人视觉服务的异步回调与并发控制
数据库·算法·机器人
IT小白杨5 小时前
当MCP遇上指纹浏览器:AI自然语言驱动隔离环境的实践思路
人工智能·经验分享·selenium·安全·业界资讯·指纹浏览器
菀亓5 小时前
ubuntu系统mysql安装
mysql