一台服务上已经安装了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 报错
解决办法是输入如下命令
[root@localhost /]# export PATH=/usr/local/mysql/bin:$PATH
但是这只是暂时解决,重启之后失效。永久更改的话修改/etc/profiles文件,添加export PATH=/usr/local/mysql/bin:$PATH保存