自己做的實驗,現在要將mysql5.6.29升級至5.7.24.以下是升級步驟(注意:升級需要停止mysql,根據實際情況選擇升級時間):
1、準備mysql5.7.24的包,并將5.7.24的包上傳至服務器(我放到了/usr/local/src下)
2、停掉mysql服務(我是直接殺的行程)
??

3、確認mysql已經停止
??

4、備份原來的mysql(雙機可忽略)
我是直接備份的物理檔案 ,cp -r /data/mysqldata /mnt/data/
6、解壓剛才上傳的5.7.24的包
tar xzf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
7、替換掉原來的安裝目錄(因為我下的包是編譯后的,直接啟動就可以用;如果是沒有編譯過的,自己手動編譯一下然后按照以下步驟操作就行)
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql #給5.7.24改個名
mv /usr/local/mysql /usr/local/mysql5.6 #把原來的安裝包也改一下名字,方便區分
mv mysql /usr/local/mysql #將5.7.24的包移到/usr/local下
8、啟動mysql

發現mysql服務啟動不了,然后日志也沒有報錯。判斷為因為沒有初始化權限表導致,需要初始化一下, 5.7和5.6的初始化不同,bin/msqld --initializey --user=mysql --datadir=/data/mysqldata --basedir=/usr/local/mysql --defaults-file=/etc/my.cnf
不在使用scripts/mysql_install_db,而是bin/msqld --initializey,初始化會報錯:/data/mysqldata(資料目錄)下有檔案了,沒辦法初始化

然后根據報錯資訊,將資料目錄下的所有檔案刪掉(rm -rf *),然后重新初始化,再次報錯:開啟了bin-log,報錯。
隨后在my.cnf中將bin-log注釋掉,再次初始化,初始化成功

最后啟動mysql服務,./mysqld_safe --user=mysql &

登錄資料庫,報錯:密碼過期,要登錄,您必須使用支持過期密碼的客戶端進行更改。

但是因為我的資料庫在阿里云上,沒做相關的配置,沒辦法通過客戶端登錄。只好想其他的辦法了,然后把當前的資料目錄下的所有資料rm -rf *掉了,然后 將原來備份的5.6的資料目錄拷貝到當前目錄下并在配置中添加skip-grant-tables=1(跳過檢查授權表),再次啟動,發現可以啟動,登錄資料庫后,竟然升級到了5.7.24,這是為什么呢?????
??

最后,將skip-grant-tables=1注釋掉,同樣也可以正常登錄并操作。

哪位大神給解答一下???
uj5u.com熱心網友回復:
這里是MSSQL,樓主發錯板塊了
uj5u.com熱心網友回復:
還沒做過升級mysql 操作, 不過樓主成功了就是好事吧。
uj5u.com熱心網友回復:
程式的版本,取決于執行檔案,而不是資料檔案,看你的描述是把資料檔案還原回去了,程式檔案沒有變動,所以版本還是5.7.24uj5u.com熱心網友回復:
但是mysql啟動的時候會去讀db目錄,邏輯上db下的資料檔案還是5.6的,應該是會報錯呀uj5u.com熱心網友回復:
但是mysql啟動的時候會去讀db目錄,邏輯上db下的資料檔案還是5.6的,應該是會報錯呀
uj5u.com熱心網友回復:
版本兼容
uj5u.com熱心網友回復:
殺主機行程這一步就搞錯了,如果記憶體資料還沒有刷到磁盤上,會掉資料,如果掉了資料,即使升級成功也是有風險的,1、先把innodb_fast_shutdown設為0,(my.cnf里也寫上這一句),
2、全庫加讀鎖(有備機斷關掉同步,我一般習慣放一臺負載到資料庫前頭,用的時候直接把負載或vip停了,再全庫加讀鎖,就能好很多),
3、檢查scn號,如果前三個號不變化,最后一個號大9個數字,說明沒有資料寫入,可以關機
4、正常關閉(等正常關完并重啟一次,這時候不要開負載或vip,保證沒有業務資料進來),檢查錯誤日志(如果有實體崩潰恢復提示,說明沒有干凈的關閉,要重復1-4部),
5、干凈關機后,拷檔案到異機備份;
6、準備本機升級替換;
7、執行一致性檢查;
8、嘗試啟動并檢查日志,沒有問題的話,開放業務連接,叫測驗監控半小時;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/75247.html
標籤:MySQL
上一篇:mysql觸發器的問題
