MySQL多实例运行
更新 2010年10月19日
最近几天研究了一下怎么让
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
文件。例如:
多实例同时运行的话需要自行创建另一个
datadir
。我的环境中是
/var/lib/mysql2
;把
mysql1
里面的拷贝过来或者在
mysql2
目录里面再运行一次
mysql_installdb --datadir=path
都行。
做完后要注意目录权限,
mysql
用户要可写。
五、
创建配置文件。
原来
my.cnf
文件中的
mysqld
段全部注释。
my_multi.cnf
文件名可以随便起,以后在命令中写对了就行了。
再有就是要注意
pid-file
、
log
和
log-error
这些个文件的存放位置要
mysql用户可写
。另外需要注意
pid文件要事先创建好
。
PS:2010年10月19日又做了一下,写在my.cnf里面也是可以的。
六、
启动实例。
启动前要保证
PATH
里面包括
mysql
的
bin
目录。可以把下面的命令写入
/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%';