需求如下:
- 在服务器上启动2个mysql服务
- 两个服务的数据路径分别为:mysql5/var/data1,mysql5/var/data2
- 两个服务的端口分别为:3307,3308
详细步骤:
- 确保mysql/data1和mysql/data2已经安装mysql的初始授权表(具体方法可参考Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 问题的解决方法中解决方法部分)
- 修改etc/my.cnf,添加[mysqld_multi],[mysqld1]和[mysqld2]配置项,以下是一份示例:
#config for mysqld [mysqld] port = 3306 socket = /home/sunlisten/mysql5/tmp/mysql.sock pid-file = /home/sunlisten/mysql5/var/mysql.pid basedir = /home/sunlisten/mysql5/ datadir = /home/sunlisten/mysql5/var log-bin = mysql-bin tmpdir = /home/sunlisten/mysql5/tmp/ log-error = /home/sunlisten/mysql5/log/mysql.err log-slow-queries=/home/sunlisten/mysql5/log/slow.log log = /home/sunlisten/mysql5/log/mysql.log #about mysqld_multi [mysqld_multi] mysqld = /home/sunlisten/mysql5/bin/mysqld_safe mysqladmin = /home/sunlisten/mysql5/bin/mysqladmin user = root [mysqld1] port = 3307 socket = /home/sunlisten/mysql5/tmp/mysql1.sock pid-file = /home/sunlisten/mysql5/var/mysql1.pid basedir = /home/sunlisten/mysql5/ datadir = /home/sunliten/mysql5/var/data1 [mysqld2] port = 3308 socket = /home/sunlisten/mysql5/tmp/mysql2.sock pid-file = /home/sunlisten/mysql5/var/mysql2.pid basedir = /home/sunlisten/mysql5/ datadir = /home/sunliten/mysql5/var/data2
- 启动这两个mysql服务:
在mysql安装目录下执行:./bin/mysqld_multi start 1,2
测试是否成功:
在mysql安装目录下执行:./bin/mysql -uroot -h127.0.0.1 -P3307
如果登录mysql客户端成功,说明3307端口已经启动成功,3308端口的服务也可以这样验证。
通过这种方式,你就可以在一台服务器上启动多个mysql,他们还可以建立主从的关系。适合想在单机上部署多套测试环境的情况。