同时运行多个mysql_一台服务器上同时运行多个MySQL

在一些情况下,我们会在一台服务器上安装多个MySQL,同时对外提供应用服务。这样我们可以更加充分利用现有的资源,控制企业成本。比如,一台SUN T5120机器,8核64个线程,这么充足的资源事实上MySQL并不能充分利用,我们都知道Oracle对多线程的利用要远远高于MySQL(这里我们多少也可以理解一点为什么oracle和sun结合了),尽管在5.4以后MySQL对线程的利用上有了很大改善,将线程的最优利用数从以前的4到8提升到了现在的16个。如果你就安装一个MySQL,那么多数资源就白白浪费了,同时也不能达到理想的状态,那么,我们完全可以在上面同时安装多个MySQL让它为不同的应用提供服务,同一台服务器上管理起来也相对比较方便些。下面我们就来看看如何实现,这里我只介绍两台的安装,再多也是一样的方法。

实验环境:一台普通PC,CentOS 5.2,mysql-5.1.32-linux-i686-glibc23.tar.gz

实验说明:MySQL 采用二进制包安装。我们将在Linux系统下安装两个MySQL数据库,这里指的是MySQL这个数据库软件本身,而不是它里面的应用数据库,我们很多时候见到的都是一个MySQL下面创建了多个数据库,也就是show databases的时候你看到的,我们要注意这些差别。

具体操作:

安装MySQL。

MySQL1

# groupadd mysql

# useradd -g mysql mysql

# tar -xzf /opt/software/mysql-5.1.32-linux-i686-glibc23.tar.gz -C /opt

# mv mysql-5.1.32-linux-i686-glibc23 mysql1

# cd /opt/mysql1

# ./scripts/mysql_install_db –user=mysql

# chown -R root.mysql .

# chown -R mysql.mysql data

MySQL2

# groupadd mysql

# useradd -g mysql mysql

# tar -xzf /opt/software/mysql-5.1.32-linux-i686-glibc23.tar.gz -C /opt

# mv mysql-5.1.32-linux-i686-glibc23 mysql2

# cd /opt/mysql2

# ./scripts/mysql_install_db –user=mysql

# chown -R root.mysql .

# chown -R mysql.mysql data

两个MySQL数据库已经安装完成,进入data目录下你会看到MySQL已经好默认安装好了3个数据库。接下来我们要做的是启动数据库前的一些准备工作,既然我要在同一台服务器上安装两个MySQL,那么如何区分它们是不同的个体呢,这就需要我们作进一步细化,不同的MYSQL_HOME,不同的 PORT,不同的SOCKET,我们通过这些关键值来对它们进行区别。

MySQL1:

# cp /opt/mysql1/support-files/my-medium.cnf /opt/mysql1/my.cnf

# vi /opt/mysql1/my.cnf

[client]

port = 3306

socket = /opt/mysql1/data/mysql.sock

[mysqld]

port = 3306

socket = /opt/mysql1/data/mysql.sock

MySQL2:

# cp /opt/mysql2/support-files/my-medium.cnf /opt/mysql2/my.cnf

# vi /opt/mysql2/my.cnf

[client]

port = 3307

socket = /opt/mysql2/data/mysql.sock

[mysqld]

port = 3307

socket = /opt/mysql2/data/mysql.sock

准备就绪,开始启动。

MySQL1:

# export MYSQL_HOME=/opt/mysql1

# ./bin/mysqld_safe –defaults-file=/opt/mysql1/my.cnf &

MySQL2:

# export MYSQL_HOME=/opt/mysql2

# ./bin/mysqld_safe –defaults-file=/opt/mysql2/my.cnf &

检查是否正常,程序是否已经运行,端口是否打开。

# ps -ef |grep mysql

# netstat -an | grep ‘3306 | 3307′

连接数据库。

[root@node1 mysql1]# ./bin/mysql –protocol=tcp -P3306 -uroot -e ’show databases’

+——————–+

| Database |

+——————–+

| information_schema |

| a |

| mysql |

| test |

+——————–+

[root@node1 mysql2]# ./bin/mysql –protocol=tcp -P3307 -uroot -e ’show databases’

+——————–+

| Database |

+——————–+

| information_schema |

| mysql |

| test |

+——————–+

Note: 使用mysql工具连接数据库,不特别指定protocol选项的话,默认是socket方式连接,这也就是通常我们连接的时候会为什么有时会遇到 mysql.sock找不到,客户端会去服务器找到相应的socket文件,其实,我们可以指定–protocol=tcp来避免这样的连接问题。 protocol选项有4种方式:socket、tcp、pipe和memory,我在MySQL安全中也提到过,如果通过unix socket连接这样可以减少安全问题。

一个MySQL下面可以创建多个不同应用的数据库,我们只要开启MySQL数据库服务,那么我们通过use database_name便可以很方便的操作各个数据库。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值