网络知识 娱乐 py_innodb_page_info分析ibd文件信息

py_innodb_page_info分析ibd文件信息

py_innodb_page_info分析ibd文件信息

py_innodb_page_info工具是《MySQL技术内幕 InnoDB存储引擎》作者用来分析Mysql表空间的各页的类型和数据,此工具采用python编写,github地址如下

https://github.com/happieme/py_innodb_page_info

通过README.md文件我们可以知道安装此工具前需要先安装python环境,步骤如下

初始准备

###将项目从git上面下载到本地并且上传到文件夹中,并且解压nunzippy_innodb_page_info-master.zipnn###修改文件夹名字为py_innodb_page_info,可以不改,本文已经修改nmvpy_innodb_page_info-masterpy_innodb_page_infonn###进入py_innodb_page_info文件夹创建ibds文件夹nmkdiribdsnn###准备ibd文件放入ibds文件夹中,测试所用文件为student.ibdn

安装Python环境

####一定一定注意,需要安装python2的环境而不是python3的环境,因为这个工具基于python2开发,在语法上n###和python3有不兼容的地方,后面执行脚本可能报错,如下n#Traceback(mostrecentcalllast):n#File"py_innodb_page_info.py",line3,in<module>n#importmylibn#File"/usr/local/py_innodb_page_info/mylib.py",line19n#print'Usage:pythonpy_innodb_page_info.py[OPTIONS]tablespace_file'nn#SyntaxError:Missingparenthesesincallto'print'.Didyoumeanprint('Usage:pythonpy_innodb_page_info.py[OPTIONS]tablespace_file')nn###所以这里一定要选python2,有的系统安装了apt就可以用apt,本文测试采用apt-getnapt-getinstallpython2nn###安装完环境可以验证下npython2-vn

验证

####验证环境是否安装正确n[root@testpy_innodb_page_info]#python2py_innodb_page_info.pyibds/student.ibdnTotalnumberofpage:6:nFreshlyAllocatedPage:2nInsertBufferBitmap:1nFileSpaceHeader:1nB-treeNode:1nFileSegmentinode:1n

分析ibd文件具体表结构,案例中是student.idb文件

###查看student.idb表的具体表空间n[root@testpy_innodb_page_info]#python2py_innodb_page_info.pyibds/student.ibd-vnpageoffset00000000,pagetype<FileSpaceHeader>npageoffset00000001,pagetype<InsertBufferBitmap>npageoffset00000002,pagetype<FileSegmentinode>npageoffset00000003,pagetype<B-treeNode>,pagelevel<0000>npageoffset00000000,pagetype<FreshlyAllocatedPage>npageoffset00000000,pagetype<FreshlyAllocatedPage>nTotalnumberofpage:6:nFreshlyAllocatedPage:2nInsertBufferBitmap:1nFileSpaceHeader:1nB-treeNode:1nFileSegmentinode:1n

ibd文件位置

文件中的student.ibd文件就是来源于Mysql中的表结构,文件路径位于默认配置文件my.cnf配置的datadir路径

py_innodb_page_info分析ibd文件信息

例如在mysql中存在一个test数据库,里面包含一个student表

### 切换到test数据库nmysql> use test;n### 查询test数据库的所有表格nmysql> show tables;n+----------------+n| Tables_in_test |n+----------------+n| grade |n| student |n| tb_student |n| tb_student2 |n| test |n| test1 |n+----------------+

在datadir配置的路径下展示如下

py_innodb_page_info分析ibd文件信息

进入数据库名字的文件夹后,就能看到数据库表相关文件

py_innodb_page_info分析ibd文件信息