how to run 2 mysql instance in one server
centos下如何同时运行两个mysql实例
1.背景
由于使用了gitlab一键包,所以本机已经启动了一个mysql实例,端口号为:33061
现在需要启动另一个mysql实例,启动报错
运行命令service mysqld start
1 | MySQL错误Another MySQL daemon already running with the same unix socket. |
2.分析
因为已经有一个mysql实例启动,所用的SOCKET连接文件位于/tmp/mysql.sock,因此再启动mysqld会发现该文件已经被使用,才会报上面的错误。
3.解决方案
3.1 创建新实例的数据目录
此处我创建的实例路径为:/var/lib/mysql2
并且给该目录分配mysql用户权限 chown -R mysql /var/lib/mysql2
3.2 创建数据库
刚刚建立的目录下面,初始化数据库。
/usr/bin/mysql_install_db --user=mysql --datadir=/var/lib/mysql2
将mysql等系统数据库安装到实例准备运行的目录。
3.3 配置文件
我自己的配置文件,路径在/etc/my.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17[mysqld_multi]
mysqld = /usr/mysql/bin/mysqld_safe
mysqladmin = /usr/mysql/bin/mysqladmin
user = root
[mysqld]
datadir=/var/lib/mysql2
socket=/var/lib/mysql2/mysql.sock
user=mysql
skip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld2.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket = /var/lib/mysql2/mysql.sock
3.4 启动mysql服务
service mysqld start
哇咔咔 成功了!
3.5 查看当前mysql端口占用
1 | netstat -alntp |grep mysql |
3.6 本地登陆mysql数据库
mysql -uroot -p
回车
1 | mysql -uroot -p |
4. 遇到的问题
4.1 本地无法登陆mysql
提示:1
RROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
检查配置文件my.cnf
,最后加入1
2[client]
socket = /var/lib/mysql2/mysql.sock
重启服务后,解决。