線上環境MySQL5.5升級至5.6
本文主要記錄了線上環境percona5.5.35升級到5.6.32-78.0的過程。
歡迎轉載,請註明作者、出處。
作者:張正
blog:http://space.itpub.net/26355921
QQ:176036317
如有疑問,歡迎聯絡。
因需要對線上一組伺服器做遷移,而且之前的版本是5.5.35,遷移後的版本為5.6.32-78.0,使用搭建級聯從庫的方式,然後做切換。使用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. |
因為資料檔案是percona5.5的,直接恢復到5.6,有些系統表不一致,因此需要做升級。查閱官方文件後,給出了升級條件,如下:
將5.5的檔案 upgrade成5.6版本(in place upgrade) 1、crash後的例項不應該直接做升級,應該先做crash recovery,然後再做升級 2、之前的percona-server 資料頁不是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、伺服器上percona5.6相關軟體已經安裝好
2、關閉該例項,然後使用mysqld 加上--skip-grant-tables啟動mysqld
3、使用mysql_upgrade --socket=/data/mysqlxxxx/mysqldxxxx.sock
結果報錯:
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 |
仔細檢查後,發現是因為performance_schema資料庫目錄下 有其他非 資料庫檔案,因此mysql_upgrade刪除時報錯,手動刪除performance_schema目錄下的非資料庫檔案後,再次執行升級,這一步過了,但是又發生了報錯:
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許可權問題,mysqld開啟了--skip-grant-tables,應該是不需要密碼得。但是在執行mysql_upgrade時,到了一定步驟,總是會報這樣的錯,因此建議使用mysql_upgrade時,一般都給加上root的使用者名稱密碼。再次執行:
mysql_upgrade -uroot -pxxxxx --socket=/data/mysqlxxxx/mysqldxxxx.sock
.......................
xxxxxxx....... ok
OK
4、重啟mysqld
至此,percona5.5 至 percona5.6升級完畢。
檢查一下錯誤日誌,發現沒有報錯了。
注意:如果主庫是5.5版本,從庫是5.6版本,在從庫的錯誤日誌中會發現報錯:
[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
查閱相關文章,說這個不用擔心:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26355921/viewspace-2126568/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 模擬生產環境MySQL5.5升級Percona5.6演示步驟薦MySql
- php5.6 升級至7.2.7PHP
- 【資料庫】mysql5.6升級至5.7(物理方式)資料庫MySql
- 升級Shell工作環境
- MySQL:5.6 升級 5.7MySql
- 生產環境oracle10g升級至11g準備工作Oracle
- mysql5.1升級5.6MySql
- 生產環境nginx平滑升級演示Nginx
- phpstudy 整合環境升級 MySQL 版本PHPMySql
- Linux環境下如何升級openssl?Linux
- 企業環境下MySQL5.5調優MySql
- LAMP環境搭建-MySQL5.6LAMPMySql
- MongoDB 3.2 升級至 3.4.6MongoDB
- Twitter API升級至1.1API
- Linux環境下CRS升級到10.2.0.4.2 Database升級到10.2.0.4.3LinuxDatabase
- linux環境vim升級到vim74Linux
- 92-10g升級與降級_環境變數_PFILE變數
- ThinkPHP升級至 5.1.18 版本PHP
- centos7 mysql5.6升級5.7CentOSMySql
- Windows下Mysql5.6升級到5.7WindowsMySql
- 排序sql升級5.6變慢原因分析排序SQL
- MySQL5.5升級到MySQL5.7踩坑日記MySql
- windows環境下oracle 10.2.0.2升級到10.2.0.5WindowsOracle
- pg升級(pg14-pg15)主從環境
- Xcode配置測試環境和線上環境XCode
- Oracle 10.2.0.5升級至11.2.0.4Oracle
- postgresql9.5.0升級至10.3SQL
- CentOS 5.6 升級 10.2.0.5 錯誤解決CentOS
- PHP 線上開發環境PHP開發環境
- 虛擬環境的jupter notebook 版本升級問題
- centos下升級php5.3到php5.6CentOSPHP
- 測試環境的遷移式升級和資料整合
- 主從環境下升級(先升級從庫,不做切換,需要停業務,auto_position=1)
- 如何Fedora 24升級至Fedora 25版?Fedora24升級至Fedora25版的詳細教程
- Mac下安裝LNMP(Nginx+PHP5.6)環境MacLNMPNginxPHP
- linux 環境RPM 安裝MYSQL5.6LinuxMySql
- Linux環境MySQL5.6安裝實踐LinuxMySql
- virtualBox環境Ubuntu升級後太卡,轉debian很絲滑Ubuntu