MySQL多实例运行
更新 2010年10月19日
    最近几天研究了一下怎么让mysql实现多实例运行,当然也是有需求才研究的。当然少不了要看许多网上的文章和官方手册。
一共总结出3种多实例启动的方法:第一种:安装两个msyql,在启动时指明不同的portdefaults-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这个操作的话,会在mysqldatadir下面创建msyqltest两个文件夹,还有几个log文件。例如:
MySQL多实例运行_第1张图片
多实例同时运行的话需要自行创建另一个datadir。我的环境中是/var/lib/mysql2;把mysql1里面的拷贝过来或者在mysql2目录里面再运行一次mysql_installdb --datadir=path都行。
做完后要注意目录权限mysql用户要可写。
五、创建配置文件。
MySQL多实例运行_第2张图片
原来my.cnf文件中的mysqld段全部注释。
my_multi.cnf文件名可以随便起,以后在命令中写对了就行了。
再有就是要注意pid-fileloglog-error这些个文件的存放位置要mysql用户可写。另外需要注意pid文件要事先创建好
PS:2010年10月19日又做了一下,写在my.cnf里面也是可以的。
六、启动实例。
启动前要保证PATH里面包括mysqlbin目录。可以把下面的命令写入/etc/profile
export PATH=$PATH:/usr/local/webserver/mysql/bin
启动命令是:#/path/to/mysqld_multi --config-file=/path/to/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%';