读书频道 > 网站 > 网页设计 > MySQL管理之道:性能调优、高可用与监控
1.7.1 采用MySQL_upgrade升级授权表方式升级
14-02-20    奋斗的小年轻
收藏    我要投稿   
本书由资深MySQL专家撰写,以最新的MySQL版本为基础,以构建高性能MySQL服务器为核心,从故障诊断、表设计、SQL优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、MySQL高可用集群搭建与管理、MySQL服立即去当当网订购

这种升级方式比较省事,通过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文件系统。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站