背景:
原先我的macbook上裝的mysql是用brew無腦安裝的:
brew install mysql
但是mysql8.0比較蛋疼究飞,一方面是非常多的開源項目跑起來需要mysql5.7的版本亿傅,所以需要替換jar包瘟栖,這個其實還好。
另一方面酬滤,最近想研究下mysql inno_db的數(shù)據(jù)文件結(jié)構(gòu),然后使用了jeremycole大佬開發(fā)的innodb_ruby 氯檐,但是會報錯体捏,然后又在github上淘到了阿里開源的innodb-java-reader ,文檔說是支持mysql8的,但是我是mysql8.0.12,運行還是報錯的耗拓。
解決方式:
- 重新安裝mysql5.7
- 備份數(shù)據(jù)庫文件
#找出mysql數(shù)據(jù)文件位置 --datadir后面的路徑
ps -ef|grep mysqld
#然后復制一份datadir下的內(nèi)容
- 卸載mysql8
brew uninstall mysql
- 安裝mysql5.7
brew install mysql@5.7
- 啟動mysql5.7
brew services start mysql@5.7
這種方式需要備份下你原先數(shù)據(jù)庫奏司,不推薦
-
使用mysql的多版本工具
推薦使用DBngin ,支持多版本的mysql竿刁,postgresql搪缨,redis,截圖如下
截屏2020-05-26 下午1.53.43.png
安裝過程點擊右上角的?號负甸,然后mysql版本選5.7就好了呻待,非常簡單
啟動mysql5.7之前把下面Homebrew的mysql stop掉队腐。 如何查看mysql數(shù)據(jù)文件的位置
無論是使用innodb_ruby工具還是使用innodb-java-reader 都需要查看mysql的數(shù)據(jù)文件位置,
ps -ef|grep mysqld
截屏2020-05-26 下午1.56.58.png
彩蛋
- mysql8.0和mysql5.7的數(shù)據(jù)文件還是有很大的不同的
mysql8.0的文件格式是 數(shù)據(jù)文件位置/數(shù)據(jù)庫名稱/表名稱.ibd迫淹,但是mysql5.7的格式是數(shù)據(jù)文件位置/數(shù)據(jù)庫名稱敛熬,同時包含表名稱.frm和表名稱.ibd - b plus tree數(shù)據(jù)結(jié)構(gòu)可視化網(wǎng)站: https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html 可以幫助理解b+樹的生成過程
- 非常不錯的大佬NeoRemind也是innodb-java-reader作者寫的mysql索引相關(guān)鏈接 http://neoremind.com/2020/01/inside_innodb_file/
- innodb_ruby作者的blog https://blog.jcole.us/innodb/