一台机子上同时启用2个mysql服务,启动失败

回复 收藏
导致mysql启动失败的问题有很多种,这里我是就我遇到的问题,如果解决的做个分享。

故障环境:
在做mysql主从实验时,为了方便我在同一个机子上装了2个mysql
主的相关信息:
dasedir=/usr/local/mysql_master                      #主mysql的安装目录
datadir=/data/mysql_master                            #主mysql的数据库目录
conf=/etc/my_master.cnf                                #主mysql的配置文件
port = 3306                                                     #主mysql的配置文件中指定的侦听端口和socket文件
socket = /tmp/mysql_master.sock

从的相关信息:
dasedir=/usr/local/mysql_slave                        #从mysql的安装目录
datadir=/data/mysql_slave                              #从mysql的数据库目录
conf=/etc/my_slave.cnf                                  #从mysql的配置文件
port = 3307                                                    #从mysql的配置文件中指定的侦听端口和socket文件
socket = /tmp/mysql_slave .sock

故障现象:
主mysql可以正常启动,但从mysql启动失败
[root@localhost ~]# /etc/init.d/mysqld_master start
Starting MySQL.                                            [确定]
[root@localhost ~]# /etc/init.d/mysqld_slave start
Starting MySQL......Manager of pid-file quit without updati[失败]e.

故障解决:
查看从mysql的错误日志
151218 14:00:48 mysqld_safe Starting mysqld daemon with databases from /data/mysql_slave
151218 14:00:48 [Note] Plugin 'FEDERATED' is disabled.
151218 14:00:48  InnoDB: Initializing buffer pool, size = 8.0M
151218 14:00:48  InnoDB: Completed initialization of buffer pool
151218 14:00:49  InnoDB: Started; log sequence number 0 44233
151218 14:00:49 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use
151218 14:00:49 [ERROR] Do you already have another mysqld server running on port: 3306 ?
151218 14:00:49 [ERROR] Aborting

151218 14:00:49  InnoDB: Starting shutdown...
151218 14:00:54  InnoDB: Shutdown completed; log sequence number 0 44233
151218 14:00:54 [Note] /usr/local/mysql_slave/bin/mysqld: Shutdown complete

151218 14:00:54 mysqld_safe mysqld from pid file /data/mysql_slave/localhost.pid ended
[root@localhost ~]#
错误日志显示端口已经在使用。唉!到这里就很奇怪了之前不是已经更改了侦听的端口吗?看样子从mysql应该是使用了主mysql的配置文件,至于为什么会这样我也想不通。

下面就说下我是如何解决的
[root@localhost ~]# mv /etc/my_slave.cnf /usr/local/mysql_slave/my.cnf
[root@localhost ~]# vim /etc/init.d/mysqld_slave
找到
  # Try to find basedir in /etc/my.cnf
  conf=/etc/my_slave.cnf
  print_defaults=
将conf的值删除,即"conf="就好

现在再来启动从mysql
[root@localhost ~]# /etc/init.d/mysqld_slave start
Starting MySQL.                                            [确定]

[root@localhost ~]# ps aux|grep mysql
root      4322  0.0  0.1   6680  1340 pts/0    S    14:26   0:00 /bin/sh /usr/local/mysql_slave/bin/mysqld_safe --datadir=/data/mysql_slave --pid-file=/data/mysql_slave/www.test.com.pid
mysql     4444  0.0  4.2 400800 43748 pts/0    Sl   14:26   0:00 /usr/local/mysql_slave/bin/mysqld --basedir=/usr/local/mysql_slave --datadir=/data/mysql_slave --user=mysql --log-error=/data/mysql_slave/www.test.com.err --pid-file=/data/mysql_slave/www.test.com.pid --socket=/tmp/mysql_slave.sock --port=3307
root      4499  0.0  0.1   6680  1340 pts/0    S    14:28   0:00 /bin/sh /usr/local/mysql_master/bin/mysqld_safe --datadir=/data/mysql_master --pid-file=/data/mysql_master/www.test.com.pid
mysql     4567  0.0  1.4 130340 14444 pts/0    Sl   14:28   0:00 /usr/local/mysql_master/bin/mysqld --basedir=/usr/local/mysql_master --datadir=/data/mysql_master --user=mysql --log-error=/data/mysql_master/www.test.com.err --pid-file=/data/mysql_master/www.test.com.pid
root      4594  0.0  0.0   6048   780 pts/0    S+   14:30   0:00 grep mysql

两个mysql都启动了


2015-12-18 14:32 举报
已邀请:
0

boy461205160

赞同来自:

不错,支持下
0

starry

赞同来自:

我刚刚又排查了下 其实2个mysql都没有使用我指定的配置文件 都是使用默认的
所以我将他们的配置文件都放在dasedir下 使用这种方法是要确保/etc/下没有my.cnf
不然它会加载/etc/my.cnf
0

starry

赞同来自:

本帖最后由 starry 于 2015-12-18 21:35 编辑

总结:mysql的配置文件只能命名为my.cnf,而且只能放在/etc/ 或者是basedir下,这样在启动脚本中指定配置文件才是生效的

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: