天天看点

MySQL 5.5升级5.6 单实例操作

同类可参考:

环境:rhel 6

mysql旧版本:mysql-5.5.28

mysql新版本:mysql-5.6.26

安装方式:源码编译

不习惯用rpm包来安装mysql,所以此处仍然使用用源码安装编译mysql。

若为rpm包安装,操作过程大体一致,当然路径和安装方法有出入。

因为是实验环境,首先安装mysql5.5。

basedir : /home/sano1y/mysql5.5

datadir : /home/sano1y/mysql5.5/data

socket : /tmp/mysql.sock

配置文件路径 : /home/sano1y/.my.cnf

此处操作系统用户名为sano1y,下同。

安装过程略。

安装完后配一下用户环境变量

vi ~/.bash_profile

添加 export path=$path:/home/sano1y/mysql5.5/bin

source ~/.bash_profile

将默认配置文件放到~/.my.cnf

cp ~/mysql5.5/support-files/my-medium.cnf ~/.my.cnf

先启动服务,修改一下初始密码并确认版本:

[sano1y@localhost ~]$ mysql -uroot -p

enter password:

welcome to the mysql monitor. commands end with ; or \g.

your mysql connection id is 5

server version: 5.5.28-log source distribution

copyright (c) 2000, 2012, oracle and/or its affiliates. all rights reserved.

oracle is a registered trademark of oracle corporation and/or its

affiliates. other names may be trademarks of their respective

owners.

type 'help;' or '\h' for help. type '\c' to clear the current input statement.

mysql>

mysql> set password=password('root');

query ok, 0 rows affected (0.00 sec)

mysql> flush privileges;

因为5.5、5.6版本的密码均为空,所以先指定一个密码,后面将会用到。

① 停止旧版本服务

[sano1y@localhost bin]$ mysqladmin -uroot -p shutdown

151125 00:13:35 mysqld_safe mysqld from pid file /home/sano1y/mysql5.5/data/localhost.localdomain.pid ended

[1]+ done ./mysqld_safe

[sano1y@localhost mysql5.6]$ ps -ef | grep mysql

sano1y 20590 19687 0 02:00 pts/2 00:00:00 grep mysql

② 备份数据库

备份数据文件,略。

同时备份参数文件。

cp ~/.my.cnf ~/.my.cnf.bk

③ 安装新版本 

同样通过cmake make make install来编译安装 mysql5.6,并初始化

并修改用户环境变量。

export path=$path:/home/sano1y/mysql5.6/bin

将默认5.6的配置文件修改掉(禁用)

mv ~/mysql5.6/my.cnf ~/mysql5.6/my.cnf.default

将对应参数修改为新的。

vi ~/.my.cnf

[mysqld]

basedir=/home/sano1y/mysql5.6

datadir=/home/sano1y/mysql5.5/data

pid-file=/home/sano1y/mysql5.5/sano1y.pid

④ 启动新版本服务 

mysqld_safe & 启动服务

此时mysql服务器会找到 ~/.my.cnf这个配置文件,并启用。

⑤ 检查升级的表

此时做mysql_upgrade进行检查

mysql_upgrade -uroot -p --force

然后是mysqlcheck

mysqlcheck -uroot -p

进入mysql client检查:

此时密码仍然是mysql5.5的,因为启动时,是在/home/sano1y/mysql5.5/data/中的mysql.user中校验。

[sano1y@localhost bin]$ mysql -uroot -p

your mysql connection id is 26

server version: 5.6.26-log source distribution

mysql> select @@datadir;

+-----------------------------+

| @@datadir                   |

| /home/sano1y/mysql5.5/data/ |

1 row in set (0.00 sec)

顺便可以删一下mysql5.5目录里的其他目录:

[sano1y@localhost ~]$ cd mysql5.5

[sano1y@localhost mysql5.5]$ ls

bin data include lib mysql-test scripts sql-bench sano1y.pid

copying docs install-binary man readme share support-files

[sano1y@localhost mysql5.5]$ rm -rf bin/ include/ lib/ mysql-test/ scripts/ sql-bench/ copying docs/ install-binary man/ readme share/ support-files/

[sano1y@localhost mysql5.5]$

data  sano1y.pid

总结升级过程:

→ ② 备份数据库 → ③ 安装新版本 → ④ 启动新版本服务 → ⑤ 检查升级的表

源码编译安装mysql参考:

http://blog.itpub.net/29773961/viewspace-1364808/

编译安装2:

(rhel 6通用)

我的环境:

centos-6.5-64bit+mysql 5.5.28

【在root用户下操作】

首先用whereis 或者 find等命令查找系统内有无其他mysql,若有,请删除。

并删除/etc/my.cnf(centos ubuntu系统会默认存在)

包依赖:

yum install cmake make -y

yum install gcc gcc-c++ autoconf bison automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* -y

解压后,进入解压出来的文件夹:

cmake -dcmake_install_prefix=安装目录 \

        -dmysql_unix_addr=/tmp/mysql.sock \

        -ddefault_charset=utf8 \

        -ddefault_collation=utf8_general_ci \

        -dwith_extra_charsets:string=utf8 \

        -dwith_innobase_storage_engine=1 \

        -dwith_readline=1 \

        -denabled_local_infile=1 \

        -dmysql_datadir=安装目录/data \

        -dmysql_user=执行用户 \          

        -dmysql_tcp_port=3306

可以提前mkdir出安装目录和data目录。

当然不创建也可以,这将在make install时安装。

比如我自己试验环境:

cmake -dcmake_install_prefix=/home/$username/software/mysql -dmysql_unix_addr=/tmp/mysql.sock -ddefault_charset=utf8 -ddefault_collation=utf8_general_ci -dwith_extra_charsets:string=utf8 -dwith_innobase_storage_engine=1 -dwith_readline=1 -denabled_local_infile=1

-dmysql_datadir=/home/$username/software/mysql/data -dmysql_user=op -dmysql_tcp_port=3306

然后安装:

make && make install

make会比较慢,虽然是c系语言写的,但毕竟几十万行代码。

cd $basedir

(chown username:username -r .)

如果data文件夹在mysql之外,需cd进去,并chown mysql:mysql -r .

【在mysql or username用户下操作:】

cp support-files/my-medium.cnf  ~/.my.cnf

注:mysql 5.6版本要

cp support-files/my-default.cnf  ~/.my.cnf

mysql启动优先查找/etc/my.cnf,最后查找~目录下的.my.cnf。

【(待确认)若两个地方均有,则以后者.my.cnf为准(覆盖之前的参数)】

然后继续:

安装目录/scripts/mysql_install_db  --user=username --basedir=安装目录 --datadir=安装目录/data  #初始化。

常用的三个命令:

启动服务:

安装根目录/bin/mysqld_safe --user=username &

开启mysql:

安装目录/bin/mysql -uroot -p

关闭服务:

安装根目录/bin/mysqladmin -uroot -p shutdown

配置一下环境变量:

加入

export path=$path:安装目录/bin/

保存退出

source ~/.bash_profile即可

另外通过

安装根目录/bin/mysqld_safe --skip-grant-tables & 可以绕过登录密码,解决忘记root密码的方案之一。

当然要提前关闭mysql服务或者kill掉mysql,这样才能以--skip-grant-tables方式启动。

已经在centos 6.5测试mysql5.5及5.6编译安装通过