Shutting down MySQL. SUCCESS!
Starting MySQL.. SUCCESS!
升級前要關(guān)閉這個功能(為什么要關(guān)請參考手冊):
(root:opdba.com:Sat Dec 1 18:14:48 2012)[(none)]> show variables like '%fast%';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1 |
+----------------------+-------+
1 row in set (0.00 sec)
(root:opdba.com:Sat Dec 1 18:35:20 2012)[(none)]> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)
(root:opdba.com:Sat Dec 1 18:35:43 2012)[(none)]> show variables like '%fast%';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_fast_shutdown | 0 |
+----------------------+-------+
1 row in set (0.00 sec)
1.停止當前MySQL服務(wù)
service mysqld stop
2.鏈接到新MySQL目錄
cd /opt/webserver/
unlink mysql
ln -sv mysql-5.5.34-linux2.6-x86_64 mysql
3.啟動服務(wù)
service mysqld start
4.執(zhí)行更新程序升級
/opt/webserver/mysql/bin/mysql_upgrade
Looking for 'mysql' as: /opt/webserver/mysql/bin/mysql
Looking for 'mysqlcheck' as: /opt/webserver/mysql/bin/mysqlcheck
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/data/mysql/mysql.sock'
/opt/webserver/mysql/bin/mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/data/mysql/mysql.sock' (111) when trying to connect
FATAL ERROR: Upgrade failed
出現(xiàn)上面錯誤是由于當前MySQL服務(wù)器的root用戶設(shè)置了密碼,mysql_upgrade 加上-p參數(shù)批量root用戶密碼即可:
/opt/webserver/mysql/bin/mysql_upgrade -padmin
Looking for 'mysql' as: /opt/webserver/mysql/bin/mysql
Looking for 'mysqlcheck' as: /opt/webserver/mysql/bin/mysqlcheck
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/data/mysql/mysql.sock'
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/data/mysql/mysql.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.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.servers 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'...
OK
出現(xiàn)上面信息就說明升級OK!
查看下當前的版本:
[root@db_fb010 ~]# /opt/webserver/mysql/bin/mysql -V
Logging to file '/data/mysql/logs/query.log'
/opt/webserver/mysql/bin/mysql Ver 14.14 Distrib 5.5.34, for linux2.6 (x86_64) using readline 5.1
mysql_upgrade命令實際執(zhí)行了以下操作:
mysqlcheck --all-databases --check-upgrade --auto-repair
mysql < fix_priv_tables
mysqlcheck --all-databases --check-upgrade --fix-db-names --fix-table-names
5.存儲過程問題修復
從5.1升級至5.5后,發(fā)現(xiàn)存儲過程不能用的,創(chuàng)建存儲過程和查看存儲過程狀態(tài),會報如下錯:
(root:opdba.com:Sat Dec 1 18:14:48 2012)[(none)]> show procedure status;
ERROR 1548 (HY000): Cannot load from mysql.proc. The table is probably corrupted
通過上述報錯,立馬查看兩邊表 proc 的狀態(tài)發(fā)現(xiàn):show create table proc\G------>
在5.1中mysql.proc表的comment字段是char(64):
`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '',
`comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
但在5.5中應(yīng)該是text:
`comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
于是把這個字段修改為text:
ALTER TABLE proc MODIFY COLUMN comment text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL AFTER sql_mode;
再次運行OK...........
最后說明下測試環(huán)境:
[root@db_fb010 ~]# cat /etc/issue
CentOS release 6.3 (Final)
Kernel \r on an \m
[root@db_fb010 ~]# getconf LONG_BIT
64