这种升级方式比较省事,通过MySQL_upgrade命令即可完成。下面来演示一下整个升级过程。
1)修改my.cnf配置文件,因为MySQL5.1里的参数在5.5版本里已经不识别了。
#skip-locking 在5.5里已经不识别了,改成
skip-external-locking
#log-long-format 在5.5里已经不识别了,改成
log-short-format
#log_slow_queries 在5.5里已经不识别了,改成
slow-query-log
#default-character-set = utf8 在5.5里已经不识别了,改成
character-set-server = utf8
#注释掉default_table_type = MyISAM? 在5.5里已经不识别了
#注释掉MyISAM_max_extra_sort_file_size 在5.5里已经不识别了
#innodb_file_io_threads已经不识别了,改成
innodb_read_io_threads = 8
innodb_write_io_threads = 8
# 把以前的built-in文件格式改为Barracuda
innodb_file_format = Barracuda
#注释掉同步的信息,否则启动时报错
#master-host = 192.168.110.20
#master-user = repl
#master-password = repl
#master-connect-retry=30
#另如果你采用了InnoDB-Plugin,还要注销掉
#ignore_builtin_innodb
#plugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_i
nnodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_c
mpmem_reset=ha_innodb_plugin.so
2)修改innodb_fast_shutdown等于0。先来看一下这个参数是做什么的。
Command-Line Format -- innodb_fast_shutdown=#
Config-File Format innodb_fast_shutdown
Option Sets Variable Yes, innodb_fast_shutdown
Variable Name innodb_fast_shutdown
Variable Scope Global
Dynamic Variable Yes
Permitted Values
Type boolean
Default 1
Valid Values 0, 1, 2
解释:关闭MySQL时,设置为1,不会做清除脏页和插入缓冲区合并操作,也不会把脏页刷入磁盘。设置为0,会做清除脏页和插入缓冲区合并操作,并把脏页刷入磁盘,如此设置关闭速度是最慢的。设置为2,不会做清除脏页和插入缓冲区合并操作,也不会把脏页刷入磁盘,而是刷入redo log事务日志里,待其下次启动MySQL时再恢复,关闭速度是最快的。在做升级或降级操作时,应将其设置为0,保证数据的完整性,避免发生错误。该参数支持动态修改。
设置该参数的命令如下:
set global innodb_fast_shutdown=0;
关于innodb_fast_shutdown 参数的介绍,请参见MySQL5.5手册:
3)关闭MySQL服务,命令如下:
/etc/init.d/MySQL stop或MySQLadmin -uroot -p123456 shutdown
4)跳过MySQL授权表启动MySQL服务,命令如下:
MySQLd --defaults-file=/etc/my.cnf --skip-grant-tables &
5)执行更新程序,如下所示:
[root@vm02 MySQL]# /usr/local/MySQL/bin/MySQL_upgrade
Looking for 'MySQL' as: bin/MySQL
Looking for 'MySQLcheck' as: bin/MySQLcheck
Running 'MySQLcheck' with connection arguments: '--port=3306' '--socket=/tmp/MySQL.sock'
Running 'MySQLcheck' with connection arguments: '--port=3306' '--socket=/tmp/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.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
test.heartbeat OK
test.log20111127 OK
test.log20111128 OK
test.log20111129 OK
test.log20111130 OK
test.log20111201 OK
test.log20111202 OK
test.log20111203 OK
test.log20111204 OK
test.log20111205 OK
test.log20111206 OK
test.log20111207 OK
test.t1 OK
test.t2 OK
Running 'MySQL_fix_privilege_tables'...
OK
6)再次关闭MySQL服务,命令如下:
/etc/init.d/MySQL stop或MySQLadmin -uroot -p123456 shutdown
7)正常启动MySQL服务,命令如下:
MySQLd_safe --defaults-file=/etc/my.cnf --user=MySQL &
8)来查看一下版本,如下所示:
MySQL> select version();
+-----------------------------------------------------------+
| version() |
+-----------------------------------------------------------+
| 5.5.20-enterprise-commercial-advanced-log |
+-----------------------------------------------------------+
1 row in set (0.00 sec)
MySQL> select @@innodb_version;
+----------------------------+
| @@innodb_version |
+----------------------------+
| 1.1.8 |
+----------------------------+
1 row in set (0.00 sec)
至此,升级过程完毕。
在升级过程中,有一个需要注意的问题,这是作者之前在安装时遇到的。RHEL5.3安装MySQL5.5时出现系统崩溃(如图1-24所示),当时的环境为:系统是RHEL5.3,64位,XFS分区,MySQL5.5.20二进制版本。
系统崩溃时,作者用DELLDRAC远程管理卡抓的截屏如图1-25所示。
可以看出,XFS文件系统在读写时出现报错。出现此问题的原因是,RHEL5.3系统内核未自带XFS文件系统,是通过往内核打补丁使之支持的,后来把系统升级为RHEL5.5,系统正常了,没有出现死机情况。
注意
RHEL5.5版本开始,内核支持XFS文件系统。