,否则会失败。
# /usr/local/mysql/bin/mysqladmin--defaults-file=/usr/local/mysqla/my.cnf shutdown
# /usr/local/mysql/bin/mysqladmin--defaults-file=/usr/local/mysqlb/my.cnf shutdown
5. 修改为服务管理方式
二进制包没有采用缺省参数文件,所以修改为服务管理方式稍微有点复杂,需要修改服务启动文件中的basedir、datadir参数,如下:
??拷贝服务文件
# cp /usr/local/mysql/support-files/mysql.server/etc/rc.d/init.d/mysqla
# cp /usr/local/mysql/support-files/mysql.server/etc/rc.d/init.d/mysqlb
??添加服务
# chkconfig --add mysqla
# chkconfig --add mysqlb
??修改服务启动文件
编辑两个服务启动文件,修改basedir、datadir参为合适的路径,如下:
# vi /etc/rc.d/init.d/mysqla
basedir=/usr/local/mysqla
datadir=/data/lib/mysqla
# vi /etc/rc.d/init.d/mysqlb
basedir=/usr/local/mysqlb
datadir=/data/lib/mysqlb
备注:通过显式设置basedir,以使每个MySQL实例拥有独立的参数文件。
??启动服务
# service mysqla start
Starting MySQL.. [ OK ]
# service mysqlb start
Starting MySQL.. [ OK ]
# service mysqlb status
MySQL running (30326) [ OK ]
# service mysqla status
MySQL running (29755) [ OK ]
修改为服务管理方式后,启动、关闭服务方便了,但在本地登录数据库,还需指定socket文件,因为缺省的/tmp/mysql.sock并不存在,如:
# mysql --socket=/data/lib/mysqla/mysql.sock
# mysql --socket=/data/lib/mysqlb/mysql.sock
三. 采用RPM包安装MySQL实现多实例
RPM包的文件布局是固定的,无法修改,因此一台服务器通常只能安装一个MySQL实例。但我们知道,无论何种方式,MySQL实例都是通过调用mysqld_safe命令来启动的,而mysqld_safe命令可通过--defaults-file参数来显式指定一个参数文件,因此同样可在一台服务器安装、运行多个MySQL实例,只不过要对服务启动文件做一些调整,下面就来尝试一下这个方法。
1. 安装MySQL
??安装server及client包
# rpm -ivh MySQL-server-5.5.17-1.rhel5.x86_64.rpm
# rpm -ivh MySQL-client-5.5.17-1.rhel5.x86_64.rpm
??启动服务
# service mysql start
Starting MySQL.. [ OK ]
??查看basedir和datadir参数值
# mysql
mysql> show variables like 'basedir';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| basedir |/usr |
+---------------+-------+
1 row in set (0.00 sec)
mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir |/var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.01 sec)
从中可以看出basedir缺省为/usr,datadir缺省为/var/lib/mysql。
2. 创建系统数据库
缺省情况下,RPM包已创建了系统数据库,位于/var/lib/mysql目录下,拷贝这个目录到/data/lib目录下,并分别命名为mysqla、mysqlb,以此来创建两个实例的系统数据库。
# service mysql stop
Shutting down MySQL. [ OK ]
# cp -r /var/lib/mysql/ /data/lib/mysqla
# cp -r /var/lib/mysql/ /data/lib/mysqlb
当然,也可通过mysql_install_db工具来创建,它位于/usr/bin目录下,如下:
# /usr/bin/mysql_install_db --user=mysql--datadir=/data/lib/mysqla
# /usr/bin/mysql_install_db --user=mysql--datadir=/data/lib/mysqlb
3. 配置参数文件
配置两个参数文件,分别命名为mya.cnf、myb.cnf,存放到/etc/目录下;端口号分别为3306、3307,datadir路径分别为/data/lib/mysqla、/data/lib/mysqlb。
4. 启动实例
同二进制包多实例一样,此时启动、关闭实例时只能通过--defaults-file指定参数文件,如下:
# /usr/bin/mysqld_safe --defaults-file=/etc/mya.cnf &
# /usr/bin/mysqld_safe --defaults-file=/etc/myb.cnf &
# /usr/bin/mysqladmin --defaults-file=/etc/mya.cnf shutdown
# /usr/bin/mysqladmin --defaults-file=/etc/myb.cnf shutdown
5. 修改服务管理方式
为了方便,还是要将其修改为服务管理方式,执行如下修改操作。
??创建服务启动文件
根据服务启动文件mysql,创建两个对应服务启动文件mysqla、mysqlb
# cd /etc/rc.d/init.d/
# cp mysql mysqla
# cp mysql mysqlb
??添加服务
# chkconfig --add mysqla
# chkconfig --add mysqlb
??删除原来的服务启动文件及服务(避免误启动)
# chkconfig --del mysql
# rm /etc/rc.d/init.d/mysql
??修改服务启动文件
编辑服务启动文件,进行如下调整,主要有以下几个地方:
# vi /etc/rc.d/init.d/mysqla
l 1:添加一个变量,设置为参数文件