線上環(huán)境MySQL5.5升級至5.6


本文主要記錄了線上環(huán)境percona5.5.35升級到5.6.32-78.0的過程。


歡迎轉(zhuǎn)載,請注明作者、出處。
作者:張正
blog:http://space.itpub.net/26355921 
QQ:176036317
如有疑問,歡迎聯(lián)系。


        因需要對線上一組服務(wù)器做遷移,而且之前的版本是5.5.35,遷移后的版本為5.6.32-78.0,使用搭建級聯(lián)從庫的方式,然后做切換。使用xtrabackup備份恢復出來,5.6的版本 錯誤日志中頻繁報錯:
7fc52806d700 InnoDB: Error: Fetch of persistent statistics requested for table "xxx"."xxx" 
but the required system tables MySQL.innodb_table_stats and mysql.innodb_index_stats are not present or 
have unexpected structure. Using transient stats instead.

        因為數(shù)據(jù)文件是percona5.5的,直接恢復到5.6,有些系統(tǒng)表不一致,因此需要做升級。查閱官方文檔后,給出了升級條件,如下:
將5.5的文件 upgrade成5.6版本(in place upgrade)
1、crash后的實例不應(yīng)該直接做升級,應(yīng)該先做crash recovery,然后再做升級   
2、之前的percona-server 數(shù)據(jù)頁不是16K的也不建議做升級                  
3、如果5.5版本中innodb_fast_checksum開啟,則無法使用in place upgrade  

        滿足條件后,即可進行升級,同樣官方文檔給出的步驟如下:
1、安裝percona5.6版本的server、client、shared
2、使用--skip-grant-tables 啟動
3、使用mysql_upgrade升級
4、重啟實例(不加--skip-grant-tables,正常啟動)

If it can’t find the pid file, kill the server and start it normally:
$ killall /usr/sbin/mysqld
$ /sbin/service mysql start

        實際操作步驟:
    1、服務(wù)器上percona5.6相關(guān)軟件已經(jīng)安裝好
    2、關(guān)閉該實例,然后使用mysqld  加上--skip-grant-tables啟動mysqld
    3、使用mysql_upgrade --socket=/data/mysqlxxxx/mysqldxxxx.sock
    結(jié)果報錯:
    
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Running 'mysql_fix_privilege_tables'...
ERROR 1010 (HY000) at line 150: Error dropping database (can't rmdir './performance_schema/', errno: 17)
ERROR 1007 (HY000) at line 155: Can't create database 'performance_schema'; database exists
FATAL ERROR: Upgrade failed


    仔細檢查后,發(fā)現(xiàn)是因為performance_schema數(shù)據(jù)庫目錄下 有其他非 數(shù)據(jù)庫文件,因此mysql_upgrade刪除時報錯,手動刪除performance_schema目錄下的非數(shù)據(jù)庫文件后,再次執(zhí)行升級,這一步過了,但是又發(fā)生了報錯:
    
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Running 'mysql_fix_privilege_tables'...
Running 'mysqlcheck' with connection arguments: '--socket=/data/mysql3307/data/mysqld3307.sock'
mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
FATAL ERROR: Error during call to mysql_check for fixing the db/tables names on all db(s) except mysql


    是因為root權(quán)限問題,mysqld開啟了--skip-grant-tables,應(yīng)該是不需要密碼得。但是在執(zhí)行mysql_upgrade時,到了一定步驟,總是會報這樣的錯,因此建議使用mysql_upgrade時,一般都給加上root的用戶名密碼。再次執(zhí)行:
    mysql_upgrade -uroot -pxxxxx --socket=/data/mysqlxxxx/mysqldxxxx.sock
.......................
xxxxxxx....... ok
OK
    4、重啟mysqld

至此,percona5.5 至 percona5.6升級完畢。

檢查一下錯誤日志,發(fā)現(xiàn)沒有報錯了。

     注意:如果主庫是5.5版本,從庫是5.6版本,在從庫的錯誤日志中會發(fā)現(xiàn)報錯:
[Warning] Slave I/O: Unknown system variable 'SERVER_UUID' on master. A probable cause is that the variable is not supported on the master (version: 5.5.35-33.0-log), even though it is on the slave (version: 5.6.32-78.0-log), Error_code: 1193
        查閱相關(guān)文章,說這個不用擔心:http://bugs.mysql.com/bug.php?id=68164


分享題目:線上環(huán)境MySQL5.5升級至5.6
本文鏈接:http://muchs.cn/article30/pioiso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、、服務(wù)器托管、網(wǎng)站內(nèi)鏈、微信公眾號、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營