大概步驟是:
把配置文件添加:skip-grant-tables參數,把basedir升級成新版本,啟動mysql,執行命令:mysql_upgrade升級一下字典信息,然後flush privileges;刷新授權表,注意:如果是使用共享表空間,最好是把數據導出來再導入新版,如果是使用獨立表空間可以使用mysql_upgrade升級。如:
1. shell > service mysqld stop #把實例停掉
復制代碼 代碼如下:
shell > mv /usr/local/mysql /usr/local/mysql.bak #把mysql5.5.x的舊basedir改名為備份目錄
shell > cp -ar /data/mysql3306 /data/mysql3306.bak #把mysql5.5.x下的實例數據備份一下,以免升級過程中發生意外
shell > tar vf xxx.tar.gz -C /usr/local #把mysql5.6.x的二進制包解壓到basedir路徑下,這裡使用mysql5.6.27版本,下載地址:wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz
shell > cd /usr/local/
shell > ln -s mysql-5.6.28-linux-glibc2.5-x86_64 mysql #創建軟連接
shell > \cp -ar /usr/local/mysql.bak/my.cnf /usr/local/mysql/ #把舊版basedir下的配置文件復制回來,如果你的配置文件不是在basedir下,那這裡就不用動
2.在配置文件的mysqld下添加:skip-grant-tables選項:
3.shell > service mysqld start #啟動更新basedir之後的實例
4.使用mysql_upgrade命令:檢查不兼容的表,更新grant表
shell > mysql_upgrade -P3306 -u root -p'xx' #命令輸出除了warning外,表檢查都必須要為OK,然後登錄mysql(登錄時的提示就可以看到新的版本號),
mysql > flush privileges;
5.去掉配置文件中的skip-grant-tables
6.看看錯誤日志有沒有什麼報錯,此時就可以去驗證下數據是否有異常,沒有異常就表示升級成功了
注意:升級不可跳級,即5.1要想升級成5.6,必須先升級到5.5;所有步驟完成之後,最好再重啟下mysqld