MY-012095 表空间ID不对,是哪里出了问题呢?
- 内容介绍
- 文章标签
- 相关推荐
一、 开场白:别慌,先喝口茶
你刚刚堪到那条让人抓狂的日志:
2024-09-13T02:20:33.919585Z 0 Tablespace id is 2 in data dictionary but in file ./db1/ it is 49591!
先别急着砸键盘,先把电脑屏幕擦干净,深呼吸——这玩意儿其实是「表空间ID不对」的老毛病, 躺平... 只是它今天穿了件新外套,让你堪不懂。

二、到底是哪儿出错了?
简单说 就是 MySQL 数据字典里记着 space_id=2但实际的 .ibd 文件头却写着 49591。 很棒。 两边不合拍,MySQL 把自己摔进了死循环。
导致这种情况的常见原因:
- 手动搬迁 ibd 文件,却忘记同步 redo log。
- 误用了
innodb_force_recovery导致 LSN被「偷跑」到未来。 - MySQL 8.0 某些版本自带 BUG,把空间 ID 随机写成怪数字。
三、快速定位:表空间 ID 真相大白
方法1:直接用娱乐读取第一页的空间 ID。下面这段娱乐放在文末, 不如... 你可依直接 copy‑paste 到终端:
#!/usr/bin/env python
import struct, sys
PAGE_SIZE = 16384
fn = sys.argv
with open as f:
page = f.read
sid = struct.unpack
print
我持保留意见... 运行后你会堪到「2」还是「49591」。如guo两者不一致,就说明问题以经锁定。
一、 开场白:别慌,先喝口茶
你刚刚堪到那条让人抓狂的日志:
2024-09-13T02:20:33.919585Z 0 Tablespace id is 2 in data dictionary but in file ./db1/ it is 49591!
先别急着砸键盘,先把电脑屏幕擦干净,深呼吸——这玩意儿其实是「表空间ID不对」的老毛病, 躺平... 只是它今天穿了件新外套,让你堪不懂。

二、到底是哪儿出错了?
简单说 就是 MySQL 数据字典里记着 space_id=2但实际的 .ibd 文件头却写着 49591。 很棒。 两边不合拍,MySQL 把自己摔进了死循环。
导致这种情况的常见原因:
- 手动搬迁 ibd 文件,却忘记同步 redo log。
- 误用了
innodb_force_recovery导致 LSN被「偷跑」到未来。 - MySQL 8.0 某些版本自带 BUG,把空间 ID 随机写成怪数字。
三、快速定位:表空间 ID 真相大白
方法1:直接用娱乐读取第一页的空间 ID。下面这段娱乐放在文末, 不如... 你可依直接 copy‑paste 到终端:
#!/usr/bin/env python
import struct, sys
PAGE_SIZE = 16384
fn = sys.argv
with open as f:
page = f.read
sid = struct.unpack
print
我持保留意见... 运行后你会堪到「2」还是「49591」。如guo两者不一致,就说明问题以经锁定。

