在一台服务器安装多个MySQL数据库实例



一台服务上已经安装了mysql实例,可通过mysqld_multi命令新增实例

1.假设该服务器上有一原有mysql实例,其basedir为/usr/local/mysql, 其数据目录为/usr/local/mysql/data,配置文件为/etc/my.cnf

# mkdir /opt/mysql3308

# cp –rfp /usr/local/data/mysql /opt/mysql3308/

# 假设这个新建的实例其数据目录放在/opt/mysql3308

因测试原因,将原有mysql一实例的mysql数据库拷贝到/opt/mysql3308下,这样此新增实例就不需要运行mysql_install_db这一步了。

# chown –R mysql:mysql /opt/mysql3308

# vi /etc/my.cnf

在文件的一开头,进行如此设置,保存退出.

[mysqld_multi]

mysqld = /usr/local/mysql/bin/mysqld_safe

mysqladmin = /usr/local/mysql/bin/mysqladmin

user=root 

password=12345678          

# 这里的user password为这台服务器中各mysql实例有权限关闭该实例的用户与密码.

若各实例的root用户不设置密码,那么这里的user password这两行就不需要书写.

若各实例的root用户设置密码,那么各实例中配置的这个user password就必须一致,不然不一致的实例就会通过mysqld_multi关闭不成功

log = /usr/local/mysql/data/mysqld_multi.log



[mysqld2]              # 服务器中原先存在的实例把原来的 [mysqld] 改为 [mysqld1];新增的实例为[mysqld2],依次下去.

user=mysql

pid-file=/tmp/3308.pid

port=3308

socket=/tmp/mysql3308.sock

basedir=/usr/local/mysql

datadir=/opt/mysql3308

#server-id=3308                     # 此参数server-id在设置数据库主从复制时可以启用

 

# Example MySQL config file for large systems.

#

# This is for a large system with memory = 512M where the system runs mainly

# MySQL.

 

# mysqld_multi start 2

# 启动该新增新例

此时netstat –ntl,应该可以看到3308端口已经启动

ps –ef|grep mysql,应该可以该新增实例的参数。

# ./bin/mysql –uroot –S /tmp/mysql3308.sock  或者 mysql -uroot -P 3308 -p(root密码为原有的实例密码)

# 该命令为连接该数据库实例


问题:执行mysqld_multi start 2 报错

mysqld_mulit my_print_defaults command not found.

解决办法是输入如下命令

 
 [root@localhost /]# export PATH=/usr/local/mysql/bin:$PATH 

但是这只是暂时解决,重启之后失效。永久更改的话修改/etc/profiles文件,添加export PATH=/usr/local/mysql/bin:$PATH保存

你可能感兴趣的:(数据库)