背景:
原先我的macbook上装的mysql是用brew无脑安装的:
brew install mysql
但是mysql8.0比较蛋疼,一方面是非常多的开源项目跑起来需要mysql5.7的版本,所以需要替换jar包,这个其实还好。
另一方面,最近想研究下mysql inno_db的数据文件结构,然后使用了jeremycole大佬开发的innodb_ruby ,但是会报错,然后又在github上淘到了阿里开源的innodb-java-reader ,文档说是支持mysql8的,但是我是mysql8.0.12,运行还是报错的。
解决方式:
- 重新安装mysql5.7
- 备份数据库文件
#找出mysql数据文件位置 --datadir后面的路径
ps -ef|grep mysqld
#然后复制一份datadir下的内容
- 卸载mysql8
brew uninstall mysql
- 安装mysql5.7
brew install mysql@5.7
- 启动mysql5.7
brew services start mysql@5.7
这种方式需要备份下你原先数据库,不推荐
-
使用mysql的多版本工具
截屏2020-05-26 下午1.53.43.png
推荐使用DBngin ,支持多版本的mysql,postgresql,redis,截图如下
安装过程点击右上角的➕号,然后mysql版本选5.7就好了,非常简单
启动mysql5.7之前把下面Homebrew的mysql stop掉。 -
如何查看mysql数据文件的位置
无论是使用innodb_ruby工具还是使用innodb-java-reader 都需要查看mysql的数据文件位置,
ps -ef|grep mysqld
截屏2020-05-26 下午1.56.58.png
彩蛋
- mysql8.0和mysql5.7的数据文件还是有很大的不同的
mysql8.0的文件格式是 数据文件位置/数据库名称/表名称.ibd,但是mysql5.7的格式是数据文件位置/数据库名称,同时包含表名称.frm和表名称.ibd - b plus tree数据结构可视化网站: https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html 可以帮助理解b+树的生成过程
- 非常不错的大佬NeoRemind也是innodb-java-reader作者写的mysql索引相关链接 http://neoremind.com/2020/01/inside_innodb_file/
- innodb_ruby作者的blog https://blog.jcole.us/innodb/
网友评论