在網上學習到Mysql的升級方式分為兩種:原地升級和邏輯升級。這兩種升級方式,本質沒有什么區別的。
只是在對數據文件的處理上有些區別而已。原地升級是直接將數據文件進行拷貝,而邏輯升級對數據文件的處理方式是通過邏輯導出導入,需要用到mysqldump。
邏輯升級這種方式在數據量比較大的情況下花費時間比較長。所以今天嘗試一下原地升級。
原地升級
一.將現有的mysql關閉。使用cmd窗口,進入到mysql目錄下面,將mysql服務移除。
C:\Users\Administrator\mysql5.6\bin>mysqld --remove mysql56 Service successfully removed.
二.下載最新的mysql5.7壓縮包。
下載地址:https://dev.mysql.com/downloads/mysql/
最新的mysql5.7的壓縮包解壓開你會發現,沒有data目錄和my.ini文件。

(
data目錄中是存的數據庫文件,不建議將之前版本的data目錄復制進來,經測試 這樣做后期數據庫服務無法啟動
后面會提到當 mysql服務無法啟動 服務沒有報告任何錯誤 解決方法
)
三.手動創建配置文件,文件名為:my.ini,添加內容如下:

可復制文本如下:
[mysql] # 設置mysql客戶端默認字符集 default-character-set=utf8 [mysqld] # 設置3306端口 port = 3306 # 設置mysql的安裝目錄 basedir=D:\\tools\mysql-5.7.25-winx64 # 設置 mysql數據庫的數據的存放目錄,MySQL 8+ 不需要以下配置,系統自己生成即可,否則有可能報錯 datadir=D:\\tools\mysql-5.7.25-winx64\data # 允許最大連接數 max_connections=200 # 服務端使用的字符集默認為8比特編碼的latin1字符集 character-set-server=utf8 # 創建新表時將使用的默認存儲引擎 default-storage-engine=INNODB sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
四.將要升級的數據庫的服務添加到win的服務隊列中 並啟動服務
1.將mysql5.7的服務添加到win的服務隊列中
D:\tools\mysql-5.7.25-winx64\bin>mysqld --install mysqld Service successfully removed.
install 后面寫的服務名看 bin目錄下的mysql的應用程序是什么 我的是mysqld

2.啟動mysql服務
D:\tools\mysql-5.7.25-winx64\bin>net start mysqld mysqld 服務正在啟動 .. mysqld 服務已經啟動成功。
五.升級mysql:mysql_upgrade -uroot -p
D:\tools\mysql-5.7.25-winx64\bin>mysql_upgrade -uroot -p
.......自己升級..........
六.升級成功后,再次重啟mysql5.7服務
D:\tools\mysql-5.7.25-winx64>net stop mysqld mysqld 服務正在停止. mysqld 服務已成功停止。
D:\tools\mysql-5.7.25-winx64\bin>net start mysqld mysqld 服務正在啟動 .. mysqld 服務已經啟動成功。
至此安裝升級完成。
另外:mysql啟動失敗,mysql服務無法啟動 服務沒有報告任何錯誤 該怎么辦

嘗試以下步驟,最終解決問題:
1 查看host文件(C:\Windows\System32\drivers\etc\hosts)
看是否修改過本地域名,如果將localhost對應的地址修改過,有可能會導致連接mysql server失敗。
解決方法:將localhost映射的地址注釋掉
2 如果在mysql的安裝路徑中沒有配置文件,則自己手動創建一個,
文件名為:my.ini,添加內容
注意:datadir屬性后的data文件夾,一定不要自己手動創建,本人嘗試手動創建會有問題,如果自己創建了可以刪除掉,再執行后面的操作。
3 在mysql5.7以上版本中默認沒有一個data目錄,即沒有初始化服務。
需要先初始化mysql才可以啟動服務,否則會報 “服務沒有報告任何錯誤”,啟動失敗。
解決方法:
a 進入mysql的bin目錄;
b 執行mysqld --initialize-insecure ,第一次執行的話,時間會久一些,執行結束后沒有輸出信息,查看bin的同級目錄下會多出一個data文件夾,里面一堆文件。
4 再次執行net start mysql命令啟動服務,發現啟動成功!
