1.7.1 采用MySQL_upgrade升级授权表方式升级(1)
这种升级方式比较省事,通过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。先来看一下这个参数是做什么的。
解释:关闭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)执行更新程序,如下所示:
- [[email protected] 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
- .7.1 采用MySQL_upgrade升级授权表方式升级(2)
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文件系统。