linux 升级mysql,以及yum安装制定版本

来源:互联网 发布:苏州淘宝热销商品 编辑:程序博客网 时间:2024/06/06 03:44

linux 升级mysql,以及yum安装制定版本

目录(?)[+]

  1. httpwwwcnblogscomblackpuppypupgrade_mysql_from_55_to_56_on_centoshtml  原文
  2. 1 概述
  3. 4 升级MySQL的计划
    1. 52 查看MySQL的版本
    2. 53 添加MySQL的yum安装库
    3. 54 用yum查看MySQL安装相关信息
    4. 55 升级MySQL及其组件
  4. 6 计划B 用yum卸载再安装
    1. 61 停止web服务器
    2. 62 卸载MySQL 5528
    3. 63 安装MySQL 5619
    4. 64 更改MySQL配置来使用数据硬盘
    5. 65 启动MySQL服务

http://www.cnblogs.com/blackpuppy/p/upgrade_mysql_from_55_to_56_on_centos.html  (原文)

1. 概述

在我做的一个项目中,最近我对生产服务器上的一系列系统软件进行了升级,包括Git、Nginx、MySQL和PHP。这篇文章讲的是升级MySQL的过程,其他软件的升级,可见下面列出的文章。

  • 在CentOS上把Git从1.7.1升级到1.7.12.4
  • 在CentOS上把Nginx从1.2.4升级到1.6.0
  • 在CentOS上把MySQL从5.5升级到5.6 (本文)
  • 在CentOS上把PHP从5.4升级到5.5

在我加入这个项目之前,服务器上的MySQL已经安装设置好了,我只是正常使用而已。现在过去1年了,应该适当升级服务器上的软件了。升级这种事情是应当经常做的,倒不是为了追最新版本,而是当正式版本发放出来的时候,应该及时更新, 以便获得最新的更正、补丁,避免服务器上的漏洞,减少安全隐患。

升级是在今年6月11-12日进行的,到今天才有空做个记录,便于日后参考。

动手之前,查找了很多资料,因为MySQL要比之前升级的Git和Nginx要复杂多了。我在参考资料中列出了我所能找到作为依据的文档,可供参考。

4. 升级MySQL的计划

不好意思,yum同学,编剧说你还要等下一幕。

升级MySQL时,又做了两个计划:

  • 当然,首先要备份所有的数据库数据
  • 计划A: 使用参考资料[6]的方法,添加安装库,用yum update升级
  • 计划B: 用yum卸载MySQL 5.5,再安装MySQL 5.6

5.2 查看MySQL的版本

用下面的命令查看MySQL的版本:

# mysql --versionmysql  Version 14.14 Distrib 5.5.28, for Linux (x86_64) using reeadline 5.1

可见,当前的MySQL的版本是5.5.28。

5.3 添加MySQL的yum安装库

这是参照参考资料[7]来做的,后来发现[6]的方法更好:


# wget http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

# rpm -ivh mysql-community-release-el6-5.noarch.rpm# yum list | grep mysql

这样很多更新的MySQL安装包就都有了。

5.4 用yum查看MySQL安装相关信息

用下面的命令查看安装了什么:

# yum list installed | grep ^mysqlmysql-community-release.noarch

其中,^mysql是指以mysql开头的安装包。

用下面的命令查看安装了的和可用的安装包:

复制代码
# yum info mysql-serverInstalled PackagesName        : MySQL-ServerArch        : x86_64Version     : 5.5.28Release     : 1.linux2.6Repo        : installedAvailable PackagesName        : mysql-serverArch        : x86_64Version     : 5.1.73Release     : 3.el6_5Repo        : updates
复制代码

这里不知道为啥可用的安装包没有显示MySQL 5.6的。

检查可用的安装包:

复制代码
# yum check-update mysql-serverObsoleting Packagesmysql-community-client.x86_64      5.6.19-2.el6           mysql56-community    MySQL-client.x86_64            5.5.28-1.linux2.6      installedmysql-community-devel.x86_64       5.6.19-2.el6           mysql56-community    MySQL-devel.x86_64             5.5.28-1.linux2.6      installedmysql-community-server.x86_64      5.6.19-2.el6           mysql56-community    MySQL-server.x86_64            5.5.28-1.linux2.6      installed
复制代码

可见,MySQL 5.6的安装包都算community版本了。

5.5 升级MySQL及其组件

运行下面的命令:

复制代码
# yum update mysql-serverDependencies Resolved================================================================================ Package                   Arch      Version         Repository            Size================================================================================Installing: mysql-community-client    x86_64    5.6.19-2.el6    mysql56-community     18 M     replacing  MySQL-client.x86_64 5.5.28-1.linux2.6 mysql-community-server    x86_64    5.6.19-2.el6    mysql56-community     52 M     replacing  MySQL-server.x86_64 5.5.28-1.linux2.6Installing for dependencies: mysql-community-common    x86_64    5.6.19-2.el6    mysql56-community    298 k mysql-community-libs      x86_64    5.6.19-2.el6    mysql56-community    1.9 MTransaction Summary================================================================================Install       4 Package(s)
复制代码

后面的输出省略了。可见有4个安装包(共70多MB)要下载、安装。结果,下载用了80分钟。

但安装遇到问题了:

复制代码
Running rpm_check_debugRunning Transaction TestTransaction Check Error:  file /usr/bin/mysql_config from install of mysql-community-client-5.6.19-2.el6.x86_64 conflicts with file from package MySQL-devel-5.5.28-1.linux2.6.x86)64Error Summary-------------
复制代码

可以看到出错了,搜索了一阵儿,也没搞明白。随即停止A计划(和成龙的电影没关系),改用B计划。

6. 计划B: 用yum卸载再安装

可以预料,这个计划要多折腾一些。仍然需要在超级管理员root的权限下运行下面的命令。

6.1 停止web服务器

这时为了避免用户访问网站时,看到数据库连接失败这样的错误信息。到这时我才想起这一点来,还是对用户关怀不够,应该在有可能宕掉网站的操作之前就做的。

因为使用的是Nginx,所以运行下面的命令:

# service nginx stop
Stopping nginx: [ OK ]

6.2 卸载MySQL 5.5.28

一共有3个包要卸载。

先卸载mysql-server包:

复制代码
# yum remove mysql mysql-serverDependencies Resolved================================================================================ Package            Arch         Version                  Repository       Size================================================================================Removing: MySQL-server       x86_64       5.5.28-1.linux2.6        installed       153 MTransaction Summary================================================================================Remove        1 Package(s)Installed size: 153 MIs this ok [y/N]: yDownloading Packages:Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning TransactionWarning: RPMDB altered outside of yum.  Erasing    : MySQL-server-5.5.28-1.linux2.6.x86_64                        1/1  Verifying  : MySQL-server-5.5.28-1.linux2.6.x86_64                        1/1Removed:  MySQL-server.x86_64 0:5.5.28-1.linux2.6Complete!
复制代码

再卸载mysql-client:

复制代码
# yum remove mysql-clientDependencies Resolved================================================================================ Package            Arch         Version                  Repository       Size================================================================================Removing: MySQL-client       x86_64       5.5.28-1.linux2.6        installed        57 MTransaction Summary================================================================================Remove        1 Package(s)Installed size: 57 MIs this ok [y/N]: yDownloading Packages:Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning Transaction  Erasing    : MySQL-client-5.5.28-1.linux2.6.x86_64                        1/1  Verifying  : MySQL-client-5.5.28-1.linux2.6.x86_64                        1/1Removed:  MySQL-client.x86_64 0:5.5.28-1.linux2.6Complete!
复制代码

最后卸载mysql-devel:

复制代码
# yum remove mysql-develDependencies Resolved================================================================================ Package           Arch         Version                   Repository       Size================================================================================Removing: MySQL-devel       x86_64       5.5.28-1.linux2.6         installed        20 MTransaction Summary================================================================================Remove        1 Package(s)Installed size: 20 MIs this ok [y/N]: yDownloading Packages:Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning Transaction  Erasing    : MySQL-devel-5.5.28-1.linux2.6.x86_64                         1/1  Verifying  : MySQL-devel-5.5.28-1.linux2.6.x86_64                         1/1Removed:  MySQL-devel.x86_64 0:5.5.28-1.linux2.6Complete!
复制代码

3个包的卸载都顺利完成。

6.3 安装MySQL 5.6.19

安装比卸载更简单,因为yum会自动检查依赖安装包:

复制代码
# yum install mysql-serverDependencies Resolved================================================================================ Package                   Arch      Version         Repository            Size================================================================================Installing: mysql-community-server    x86_64    5.6.19-2.el6    mysql56-community     52 MInstalling for dependencies: mysql-community-client    x86_64    5.6.19-2.el6    mysql56-community     18 M mysql-community-common    x86_64    5.6.19-2.el6    mysql56-community    298 k mysql-community-libs      x86_64    5.6.19-2.el6    mysql56-community    1.9 MTransaction Summary================================================================================Install       4 Package(s)Total size: 72 MInstalled size: 323 MIs this ok [y/N]: yDownloading Packages:Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning Transaction  Installing : mysql-community-common-5.6.19-2.el6.x86_64                   1/4  Installing : mysql-community-libs-5.6.19-2.el6.x86_64                     2/4  Installing : mysql-community-client-5.6.19-2.el6.x86_64                   3/4  Installing : mysql-community-server-5.6.19-2.el6.x86_64                   4/4warning: /etc/my.cnf created as /etc/my.cnf.rpmnew/bin/chmod: cannot access `': No such file or directory  Verifying  : mysql-community-common-5.6.19-2.el6.x86_64                   1/4  Verifying  : mysql-community-libs-5.6.19-2.el6.x86_64                     2/4  Verifying  : mysql-community-client-5.6.19-2.el6.x86_64                   3/4  Verifying  : mysql-community-server-5.6.19-2.el6.x86_64                   4/4Installed:  mysql-community-server.x86_64 0:5.6.19-2.el6Dependency Installed:  mysql-community-client.x86_64 0:5.6.19-2.el6  mysql-community-common.x86_64 0:5.6.19-2.el6  mysql-community-libs.x86_64 0:5.6.19-2.el6Complete!
复制代码

由于篇幅关系,输出有所缩略。一切顺利,继续!

预告:繁琐的事情这才开始。

6.4 更改MySQL配置,来使用数据硬盘

更改\etc\my.cnf,下面只列出更改的相关设置:

复制代码
[mysqld]
# Uncomment the following if you are using InnoDB tables#innodb_data_home_dir = /var/lib/mysql# data path changed to 2nd physical hard disk /dev/xvdb after upgrading from MySQL 5.5 to MySQL 5.6innodb_data_home_dir = /data/mysql#innodb_data_file_path = ibdata1:10M:autoextend#innodb_log_group_home_dir = /var/lib/mysqldatadir = /data/mysql
复制代码

如果你也更改了数据目录,最后一行的 datadir = /data/mysql 切不可遗漏,我就是因为这一行实际上没有及时改,还是指向旧的数据目录,导致数据升级失败,直到升级数据之后才发现,在下文中有详细论述。

6.5 启动MySQL服务

启动服务:

# service mysql startmysql: unrecognized service

居然出错了!只好直接运行MySQL的daemon:

# /etc/init.d/mysqld startStarting mysqld:                                           [  OK  ]




原创粉丝点击