這麼大跨度的升級,自己不推薦.升級應該是按部就班的,以防止不兼容.若是確實要這麼作,你先要確保你的客戶端管理工具要能兼容,好比phpmyadmin,這次升級依然存在一個問題,mysql server和mysql client不匹配的問題.php
一.升級前
1.先備份數據
#mysqldump --all-databases -p -u root > /home/mysql.data.bakhtml
2.中止原有的mysql服務mysql
3.重命名my.cnfsql
4.爲防止更新失敗,快速恢復,同時拷貝一份mysql的datadir下的數據備份,以文件方式拷貝安全
二.從5.5開始,編譯mysql須要用Cmake
安裝cmake服務器
#yum install cmaketcp
三.編譯安裝mysql5.6工具
1.下載源碼
進入http://dev.mysql.com/downloads/mysql/5.6.html#downloads
平臺選擇Source Code
選擇5.6.22
#wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.22.tar.gz測試
2.解壓
#tar zxvf mysql-5.6.22.tar.gz命令行
3.編譯
#cd mysql-5.6.22
#cmake -DCMAKE_INSTALL_PREFIX=/usr-ext/local/mysql56-server -DMYSQL_UNIX_ADDR=/var/local/mysql/mysql56.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr-ext/local/mysql56-server/data -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1
#make && make install
4.給予權限
#chown -R mysql:mysql /usr-ext/local/mysql56-server
後續服務啓動,若是權限問題,請修改對應文件的權限
四.啓動服務及數據更新
1.拷貝/usr-ext/local/mysql56-server下的support-files下的mysql.server到/etc/init.d下,重命名爲mysqld
2.service mysqld restart
3.若是順利啓動,則開始更新數據,若是啓動不了看my.cnf中的參數是否和mysql5.6兼容,筆者到這兒都是ok的,暫時未遇到問題
4.進入/usr-ext/local/mysql56-server的bin目錄下,開始更新數據
#mysql_upgrade --protocol=tcp -P 3306 -u root
由於新的mysql5.6啓動默認用了以前的my.cnf和數據文件,因此root密碼是以前的
輸入以前的root密碼
提示失敗
緣由是mysql5.6默認是用的新的密碼校驗方式,舊的不兼容,如今要關閉該項安全校驗
#vi /etc/my.cnf
增長
secure_auth = off
skip-grant-tables
從新啓動mysql
再次更新,依然提示失敗,大體意思是更新日誌格式版本不符合,這個時候檢查mysql的datadir下是否有以前的更新文件記錄mysql_upgrade_info
若有
刪除掉
再次更新
這時候更新開始了,提示檢查都ok,但到mysqlcheck這兒爆出錯誤,更新繼續失敗,提示大體意思是,mysql服務端由於關閉了secure_auth,用的是舊的密碼校驗方式,但mysqlcheck這個client用了新的密碼校驗方式,鏈接不上
這,就蛋疼了,凝神靜氣,繼續想解決辦法.
如今的root密碼由於是在舊的mysql底下生成的,因此是舊的密碼格式.如何讓他生成新的呢?
1.進入mysql命令行下,更改root密碼
2.新建一個mysql的超級用戶,好比root2,賦予全局權限
由於時間緊迫,也怕再出問題.畢竟是一個線上的服務器,用戶那邊催得緊.
選擇第二種,進入phpmyadmin,新建一個超級用戶root2
而後再次更新
#mysql_upgrade --protocol=tcp -P 3306 -u root2
順利更新完畢.
編輯my.cnf,取消掉skip-grant-tables
重啓mysql服務
至此更新完畢.話說到此,也是一頭大汗啊.而後開始測試數據的完整性和主從複製的一致性.