原始出处 http://sharkyan.blog.51cto.com/536264/271144
MySQL
多实例运行
最近几天研究了一下怎么让mysql实现多实例运行,当然也是有需求才研究的。当然少不了要看许多网上的文章和官方手册。
一共总结出3种多实例启动的方法:第一种:安装两个msyql,在启动时指明不同的port和defaults-file即可。第二种:使用mysqld_multi,创建一个配置文件然后用mysqld_multi读取配置文件来启动多实例。第三种:使用MySQL实例管理器并创建用户账户,这个方法好像比较好不过也有点复杂。这些方法都可以在官方文档中找到,就不细说了,中文的也很好找。
下面是我在采用第二种方法时的心得体会。
一、为什么这么做。
听一个搞.net开发的人说,这么做可以防止mysql线程调度中产生的瓶颈问题。别的原因就不知道了,反正有这个需求。
二、基本只是。
每个实例应该在自己的datadir下配置my.cnf文件。
配置文件的查找顺序如下:
第一搜,首先读取/etc/my.cnf。
第二搜,$datadir/my.cnf,在data目录下寻找此配置文件,每个实例应该在自己的datadir下配置my.cnf文件。
第三搜,defaultfile=/path/my.cnf 通常写在命令行上,mysqld_safe defaultfile=/tmp/my.cnf &等执行。
第四搜,~/my.cnf 当前用户下的配置文件。
PS:这些都是网上抄来的。
三、安装mysql。
无外乎源码和rpm等方式嘛,就不多说了。
四、准备目录。
这步还是比较重要的。
如果安装的时候进行了mysql_install_db这个操作的话,会在mysql的datadir下面创建msyql、test两个文件夹,还有几个log文件。例如:
![](http://hi.csdn.net/attachment/201010/15/0_1287124870Yv0P.gif)
多实例同时运行的话需要自行创建另一个datadir。我的环境中是/var/lib/mysql2;把mysql1里面的拷贝过来或者在mysql2目录里面再运行一次mysql_install_db都行。
做完后要注意目录权限,mysql用户要可写。
五、创建配置文件。
![](http://hi.csdn.net/attachment/201010/15/0_1287124908iOkk.gif)
这个些内容如果直接写在my.cnf里面好像不行,也没再试,反正分开时成功了。
原来my.cnf文件中的mysqld段全部注释。
my_multi.cnf文件名可以随便起,以后在命令中写对了就行了。
再有就是要注意pid-file、log和log-error这些个文件的存放位置要mysql用户可写。另外需要注意pid文件要事先创建好。
六、启动实例。
启动前要保证PATH里面包括mysql的bin目录。可以把下面的命令写入/etc/profile。
export PATH=$PATH:/usr/local/webserver/mysql/bin
启动命令是:#/path/mysqld_mutli –config-file=/path/my_multi.cnf start 1,2 写入/etc/rc.local就可以开机自动启动两个实例了。
七、验证。
#netstat -alpn|grep 33
#mysql -u root -h localhost –S /tmp/mysqld1.sock
#mysql -u root -h 127.0.0.1 -P 3301
连上后可以看看datadir是不是对的:mysql> show variables like '%datadir%';
本文出自 “shark巨菜-菜园志” 博客,请务必保留此出处http://sharkyan.blog.51cto.com/536264/271144