mysql多版本共存_MySQL 5.5 多版本共存

原来我的服务器上是MySQL

5.5.16。本来是用的挺稳定。但是当时编译的时候由于手误将DDEFAULT_COLLATION=utf8-general_ci

\弄错啦。。。应该是utf8_general_ci。导致很多程序用的时候报错,或者需要修改。

最近发现MySQL更新到了5.5.18了,就打算迁移到新数据库正好修正原来问题。

为了不影响访问,就打算在5.5.16运行的情况下,继续安装好5.5.18.等顺利转移到5.5.18后,再关闭原来MySQL5.5.16版本。

也就有了今天这篇文章。在Linux下从源码安装多版本或者多个MySQL数据库。

重点:多版本或者多个MySQL同时运行,主要就是多个MySQL需要运行在不同目录,不同的端口,采用不同的数据库路径。

步骤

0 安装ncurses-devel包

libncurses5-dev (ncurses-devel)

----若差了这个包,在cmake的时候会报错。

----Debian/Ubuntu上的包名是libncurses5-dev,Redhat和其他版本对应的是ncurses-devel

Shell代码 a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

shell:~$ sudo apt-get install

libncurses5-dev

shell:~$ sudo apt-get install libncurses5-dev

----报错信息

----------------------------------------------------------------------

-- MySQL 5.5.8

-- Could NOT find Curses (missing: CURSES_LIBRARY

CURSES_INCLUDE_PATH)

CMake Error at cmake/readline.cmake:82 (MESSAGE):

Curses library not found. Please install appropriate

package,

remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu,

package name is libncurses5-dev,

on Redhat and derivates it is ncurses-devel.

Call Stack (most recent call first):

cmake/readline.cmake:126 (FIND_CURSES)

cmake/readline.cmake:216 (MYSQL_USE_BUNDLED_LIBEDIT)

CMakeLists.txt:256 (MYSQL_CHECK_READLINE)

-- Configuring incomplete, errors occurred!

----------------------------------------------------------------------

1、首先是下载需要安装的MySQL

下载mysql 5.5.16

wget

http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.16.tar.gz/from/http://mysql.mirrors.pair.com/

下载mysql 5.5.18

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.16.tar.gz/from/http://mysql.mirrors.pair.com/

2、安装支持程序

原来版本的MySQL源码安装都是采用./configure和make这些。但是新版本的都是用cmake来弄了。所以如果系统中没有的,需要先安装cmake

yum install cmake

3、创建MySQL用户和用户组

/usr/sbin/groupadd

mysql

/usr/sbin/useradd -g mysql

mysql

4、解压、编译、安装MySQL

解压

tar zxvf

mysql-5.5.16.tar.gz

cd

mysql-5.5.16

编译参数

cmake .

\

-DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql5516/

\

-DMYSQL_DATADIR=/data0/mysql/3306/data \

-DMYSQL_UNIX_ADDR=/data0/mysql/3306/mysqld.sock \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=0 \

-DWITH_ARCHIVE_STORAGE_ENGINE=0 \

-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DMYSQL_TCP_PORT=3306 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_DEBUG=0 \

-DWITH_EMBEDDED_SERVER=1 \

-DWITH_SSL=system \

-DWITH_READLINE=1

注意:编译参数里有几项需要根据自己具体情况设置。我这里将MySQL5.5.16运行于3306端口,并安装在mysql5516目录。

-DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql5516/

设置mysql的安装目录

-DMYSQL_DATADIR=/data0/mysql/3306/data

设置mysql数据库文件的位置

-DMYSQL_UNIX_ADDR=/data0/mysql/3306/mysqld.sock

设置mysql启动后sock文件位置

-DMYSQL_TCP_PORT=3306

设置mysql的监听端口

以上这些设置需要根据不同版本的mysql相应修改。不然多个版本同时监听3306端口,肯定冲突了。

编译

make

安装

make install

5、配置目录权限、创建目录、建立初始数据。

配置目录权限

chmod +w /usr/local/webserver/mysql5516

chown -R mysql:mysql /usr/local/webserver/mysql5516

cd ../

创建相关目录

mkdir -p /data0/mysql/3306/data/

mkdir -p /data0/mysql/3306/binlog/

mkdir -p /data0/mysql/3306/relaylog/

chown -R mysql:mysql /data0/mysql/

建立初始数据

/usr/local/webserver/mysql5516/scripts/mysql_install_db

--basedir=/usr/local/webserver/mysql5516

--datadir=/data0/mysql/3306/data --user=mysql

6、创建My.cnf配置文件和Mysql启动脚本

创建my.cnf配置文件

cp support-files/my-small.cnf

/usr/local/webserver/mysql5516/my.cnf

注意:原来mysql默认的配置文件放在/etc/my.cnf。现在多个版本同时运行,需要每个版本都将配置文件单独放在自己的安装目录内。

创建MySQL启动脚本

cp support-files/mysql.server /etc/init.d/mysql5516

注意:原来mysql默认采用mysqld脚本,现在每个mysql需要有自己的启动脚本,并通过修改启动脚本来为每个mysql指定采用的配置文件。

修改/etc/init.d/mysql5516,用来指定采用的配置文件位置。

1

# Try to find basedir in

/etc/my.cnf

1

conf=/etc/my.cnf

在文件的213和214行内容如上,我们需要修改conf=/etc/my.cnf为我们指定的my.cnf文件位置。

在我们这里是

1

conf=/usr/local/webserver/mysql5516/my.cnf

修改mysqld5516权限为可执行

chmod +x mysqld5516

7、启动mysql并配置为开机运行

启动

service mysqld5516 start

开机运行

chkconfig mysqld5516 on

以上是MySQL 5.5.16的安装。下面5.5.18版本的安装

5.5.18版本的安装基本和MySQL

5.5.16版本一样。我们因为要两个数据库同时运行。所以再给cmake的参数时候,需要安装上面注意的内容设定5.5.18的安装目录为/usr/local/webserver/mysql5518

再调整运行端口为3307

具体的cmake参数如下

cmake . \

-DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql5518/ \

-DMYSQL_DATADIR=/data0/mysql/3307/data \

-DMYSQL_UNIX_ADDR=/data0/mysql/3307/mysqld.sock \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=0 \

-DWITH_ARCHIVE_STORAGE_ENGINE=0 \

-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DMYSQL_TCP_PORT=3307 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_DEBUG=0 \

-DWITH_EMBEDDED_SERVER=1 \

-DWITH_SSL=system \

还需要为mysql5518配置相应权限和建立3307端口的相关目录。因为上面已经有具体步骤,这里只是罗列下命令,不具体说明

chmod +w /usr/local/webserver/mysql5518

chown -R mysql:mysql /usr/local/webserver/mysql5518

cd ../

mkdir -p /data0/mysql/3307/data/

mkdir -p /data0/mysql/3307/binlog/

mkdir -p /data0/mysql/3307/relaylog/

chown -R mysql:mysql /data0/mysql/

最后的启动脚本也要修改为调用5518目录下的my.cnf配置。而且my.cnf的[mysqld]段也要指定运行端口为3307

下面是我mysql5518目录下的my.cnf中的一些需要修改的项

注意:下面文件并不是完整的my.cnf,只是将需要修改的列出来了

[client]

port

= 3307

socket

= /data0/mysql/3307/mysql.sock

[mysqld]

port

= 3307

socket

= /data0/mysql/3307/mysql.sock

basedir =

/usr/local/webserver/mysql5518

datadir =

/data0/mysql/3307/data

log-error =

/data0/mysql/3307/mysql_error.log

pid-file =

/data0/mysql/3307/mysql.pid

log-bin =

/data0/mysql/3307/binlog/binlog

relay-log-index =

/data0/mysql/3307/relaylog/relaylog

relay-log-info-file =

/data0/mysql/3307/relaylog/relaylog

relay-log =

/data0/mysql/3307/relaylog/relaylog

这样弄完后,我服务器上就可以同时运行mysql5516与mysql5518两个版本的数据库了。

启动、关闭、重启mysql

5.5.16全部采用service mysqld5516脚本来控制。

启动、关闭、重启mysql

5.5.18全部采用service mysqld5518脚本来控制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值