Linux下一个服务器安装多个mysql 

一. 为了统一安装的版本,先卸载已经安装的mysql 

卸载已经安装的mysql  1. 查找已安装的myslq 版本:         

#rpm -q mysql  

        在屏幕上将显示已安装的mysql包名如:mysql-5.0.77-4.el5_5.3         如果通过该命令,提示没有安装mysql,而你确定已安装,可以使用下面命令,尝试一下:  

#rpm -qa | grep -i mysql  

         MySQL-server-5.5.11-1.rhel5  

2. 强制卸载(将要卸载的必须是上面查询到的mysql的全称包括版本号,此处是在无法正常卸载时不得已的操作,强制卸载,必须用参数--nodeps):          

#rpm -e --nodeps mysql-5.0.77-4.el5_5.3      

3.成功卸载,系统不提示任何信息      

 

二. 安装前请先安装所有依赖的包,或者安装过程中看见缺少什么包就安装什么包  

 

三. 安装第一个mysql mysql1:使用默认配置  

root@localhost usr]# groupadd mysql 

[root@localhost usr]# useradd -g mysql mysql 

[root@localhost usr]# cd /usr/local 

[root@localhost local]# tar -zxvf mysql-5.0.51.tar.gz  

[root@localhost local]# cd mysql-5.0.51 

[root@localhost mysql-5.0.51# ./configure --prefix=/usr/local/mysql 

[root@localhost mysql-5.0.51]# make 

[root@localhost mysql-5.0.51]# make install 

[root@localhost mysql-5.0.51]# cd ../mysql 

[root@localhost mysql]# ./bin/mysql_install_db --user=mysql 

[root@localhost mysql]# chown -R root . 

[root@localhost mysql]# chown -R mysql var 

[root@localhost mysql]# chgrp -R mysql . 

[root@localhost mysql]# ./bin/mysqld_safe --user=mysql & 

[root@localhost mysql]# ./bin/mysqladmin -uroot password mysql 

[root@localhost mysql]# cp ../mysql-5.0.51/support-files/my-large.cnf /etc/my.cnf 

[root@localhost mysql]# cp ../mysql-5.0.51/support-files/mysql.server 

/etc/rc.d/init.d/mysql1 

[root@localhost mysql]# chkconfig --add mysql1 

[root@localhost mysql]# chkconfig --level mysql1 345 on 

[root@localhost mysql]# chkconfig --list mysql1 

[root@localhost mysql]#  

四. 安装第二个mysql 

mysql2使用3307端口,配置文件为:/etc/my2.cnf  

root@localhost usr]# groupadd mysql 

[root@localhost usr]# useradd -g mysql mysql 

[root@localhost usr]# cd /usr/local 

[root@localhost local]# tar -zxvf mysql-5.0.51.tar.gz  

[root@localhost local]# cd mysql-5.0.51 

[root@localhost mysql-5.0.51# ./configure --prefix=/usr/local/mysql5 

[root@localhost mysql-5.0.51]# make 

[root@localhost mysql-5.0.51]# make install 

[root@localhost mysql-5.0.51]# cd ../mysql5 

[root@localhost mysql]# ./bin/mysql_install_db --user=mysql 

[root@localhost mysql]# chown -R root . 

[root@localhost mysql]# chown -R mysql var 

[root@localhost mysql]# chgrp -R mysql . 

[root@localhost mysql]# ./bin/mysqld_safe --user=mysql & 

[root@localhost mysql]# ./bin/mysqladmin -uroot password mysql 

[root@localhost mysql]# cp ../mysql-5.0.51/support-files/my-large.cnf /etc/my2.cnf 

[root@localhost mysql]# cp ../mysql-5.0.51/support-files/mysql.server /etc/rc.d/init.d/mysql2 

[root@localhost mysql]# chkconfig --add mysql2 

[root@localhost mysql]# chkconfig --level mysql2 345 on 

[root@localhost mysql]# chkconfig --list mysql2 

[root@localhost mysql]#  

配置mysql2 

vim /etc/rc.d/init.d/mysql2  

修改下面的内容:  

  1. 将目录/usr/local/mysql改为当前安装的mysql目录,即/usr/local/mysql5

  2. 将引用的配置文件名称由my.cnf改为当前要使用的配置文件my2.cnf

  3. 在$bindir/mysqld_safe中添加--defaults-file=/etc/my2.cnf  $bindir/mysqld_safe --defaults-file=/etc/my2.cnf --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &   

注意: 修改完后datadir需要使用如下命令来初始化

datadir:  ./bin/mysql_install_db --datadir=/usr/local/mysql5/var --user=mysql  

配置my2.cnf 

vim /etc/my2.cnf修改相关的端口、socket 

  [client] 

 #password       = your_password  port            = 3307 

 socket          = /tmp/mysql5.sock   # The MySQL server  [mysqld] 

 port            = 3307 

 socket          = /tmp/mysql5.sock 

  

五. 启动mysql1和mysql2 

Mysql1: 

cd /etc/rc.d/init.d/ 

./mysql1 start 

./mysql2 start  

六. 其他服务器命令行客户端链接mysql  mysql -ulportal -pportalpwr -h PortalDev3-DB2 -P 3306 

mysql -ulportal -pportalpwr -h PortalDev3-DB2 -P 3307   

七. 主要错误与解决:  q. Can't connect to local MySQL server through socket '/tmp/mysql.sock(11)   

[root@localhost mysql]# chown -R root .   

[root@localhost mysql]# chown -R mysql /var   

[root@localhost mysql]# chgrp -R mysql .    q. -bash: /etc/rc.d/init.d/mysqld: Permission denied     a. chmod +x /etc/rc.d/init.d/mysqld       q.  Starting MySQL.Manager of pid-file quit without updating file.[FAILED]     a. /usr/local/mysql/bin/mysql_install_db --user=mysql

===========================================================================================

在一台服务器上,可以通过mysqld_multi配置多个Mysql实例运行。

假设服务器上现在已经运行一个MYSQL实例,数据目录是/var/lib/mysql,端口是3306,所用的SOCKET连接文件位于/tmp/mysql.sock。那么可以按照如下步骤,再启动一个或者多个实例。

一,创建新实例的数据目录

新启动MySQL实例之后,其数据位于哪个目录,就是实例相关的数据库文件都准备放在哪个目录下,假定我把它们放在 /var/lib/mysql2 目录下。

mkdir /var/lib/mysql2   创建目录。

chown  mysql  /var/lib/mysql2  给mysql用户权限。

二,创建数据库

这一步是在刚刚建立的目录下面,初始化数据库。

bin/mysql_install_db --user=mysql --datadir=/var/lib/mysql2   // 将mysql等系统数据库安装到实例准备运行的目录。

三,配置文件 

修改配置文件 my.cnf,这也是最重要的一步。主要是重新设置每个实例的pid-file,socket,port等属性,我的配置文件 如下:

[sql] 

  1. [mysqld_multi]  

  2. mysqld     = /install/mysql/bin/mysqld_safe  

  3. mysqladmin = /install/mysql/bin/mysqladmin  

  4. user       = root  

  5.   

  6. # The MySQL server  

  7. [mysqld1]  

  8. port            = 3306  

  9. socket          = /tmp/mysql.sock  

  10. datadir         =/var/lib/mysql  

  11. pid-file        =/var/lib/mysql/mysql.pid  

  12. user            =mysql  

  13.   

  14. log-bin         =master-bin  

  15. log-bin-index           =master-bin.index  

  16. server-id       =1  

  17. [mysqld2]  

  18. port            = 3307  

  19. socket          =/tmp/mysql2.sock  

  20. datadir         =/var/lib/mysql2  

  21. pid-file        =/var/lib/mysql2/mysql.pid  

  22. user            =mysql  

四,启动实例

在配置文件配置好之后,就可以启动了

 /install/mysql/bin/mysqld_multi start 2    // 这样就启动了。 

五,打开控制台

在启动新的实例之后,也可以打开控制台操作,但要指定socket和端口等信息,如:

mysql --user=root --port=3307 --socket=/tmp/mysql2.sock -p

===================================================================================

步骤如下:

 

一、编译安装两个mysql,步骤如下

下载Mysql ,此处以 为例

 

安装第一个数据库(主数据库)

(红色部分为默认数据库文件路径,可改成其他如:datavar)

tar zxvf mysql-6.0.11-alpha.tar.gz

cd mysql-6.0.11-alpha

./configure --prefix=/usr/local/mysql --sysconfdir=/usr/local/mysql/etc --with-tcp-port=3306 --localstatedir=/usr/local/mysql/localstate --with-unix-socket-path=/tmp/mysql3306.sock --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=gbk,gb2312,binary --enable-thread-safe-client --with-plugins=innobase --with-mysqld-user=mysql --with-charset=utf8  --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static

make && make install

 

安装第二个数据库(从数据库)

tar zxvf mysql-6.0.11-alpha.tar.gz

cd mysql-6.0.11-alpha

./configure --prefix=/usr/local/mysql3307 --sysconfdir=/usr/local/mysql3307/etc --with-tcp-port=3307 --localstatedir=/usr/local/mysql3307/localstate --with-unix-socket-path=/tmp/mysql3307.sock --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=gbk,gb2312,binary --enable-thread-safe-client --with-plugins=innobase --with-mysqld-user=mysql --with-charset=utf8  --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static

make && make install

 

如需支持所有字符集 修改为:--with-extra-charsets=all 即可

 

二、分别初始化数据库脚本(在编译目录执行下)

scripts/mysql_install_db --basedir=/usr/local/mysql/ --user=mysql

scripts/mysql_install_db --basedir=/usr/local/mysql3307/ --user=mysql

注:可用--datadir=PATH参数指定数据库文件路径,默认为编译时-- localstatedir

 

 

三、修改从库配置文件

拷贝配置文件:

cp /usr/local/software/mysql-6.0.11-alpha/support-files/my-medium.cnf /usr/local/mysql/etc/my.cnf

cp /usr/local/software/mysql-6.0.11-alpha/support-files/my-medium.cnf /usr/local/mysql3307/etc/my.cnf

 

 

四、修改各个数据库的my.cnf文件

主要内容如下:

添加InnoDB支持:

[client]

#password       = your_password

port            = 3307                      --数据库端口号

socket          = /tmp/mysqls.sock    --sock文件路径

default-character-set=utf8            --客户端UTF8连接

[mysqld]

port            = 3307                      --数据库端口号

socket          = /tmp/mysqls.sock    --sock文件路径

default-storage-engine=INNODB

default-character-set=UTF8           --默认字符集

init_connect='SET NAMES utf8'       --UTF8连接

skip-name-resolve                        --取消DNS反向解析

lower_case_table_names=1            --不区分表名大小写

 

启动数据库(进入各自目录)

主:./mysqld_safe &

从:./mysqld_safe &

 

配置开启自动:

cp /usr/local/software/mysql-6.0.11-alpha/support-files/mysql.server /etc/init.d/mysql

cp /usr/local/software/mysql-6.0.11-alpha/support-files/mysql.server /etc/init.d/mysql3307

修改/etc/init.d/mysql3007中basedir与datadir为即可

basedir=/usr/local/mysql3307

datadir=/usr/local/mysql3307/var

 

 

 

 

 

停止数据库

主:./mysqladmin shutdown

从:./mysqladmin shutdown

 

以上各项配置都可以自行修改,以满足业务需求。