mysqld_multi is now officially my 'white whale'
   I am setting up multiple instances of mysql 5.5 server on a single host and trying to manage the instances using the mysqld_multi tool. Ia m able to get each instance to run without issue when I start each manually  via nthe following command.     	Code:  	
 mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/$HOSTNAME.pid --socket=/var/lib/mysql/mysql.sock --port=3306 &      mysqld_safe --datadir=/usr/local/mysql/var2 --pid-file=/usr/local/mysql/var2/$HOSTNAME.pid2 --socket=/tmp/mysql.sock2 --port=3308 &    mysqld_safe --datadir=/usr/local/mysql/var3 --pid-file=/usr/local/mysql/var2/$HOSTNAME.pid3 --socket=/tmp/mysql.sock3 --port=3309 &       	Code:  	
  netstat -ntpl | grep mysql  tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LIS  tcp        0      0 0.0.0.0:3308                0.0.0.0:*                   LIS  tcp        0      0 0.0.0.0:3309                0.0.0.0:*                   LIS     I have also verified seperate instances are running  using ps -eaf, but will spare you the output.    When I try to run them with the mysqld_multi I get:     	Code:  	
  mysqld_multi start 1-3 --verbose   WARNING: mysqld_safe is being used to start mysqld. In this case you may need to pass  "ledir=..." under groups [mysqldN] to mysqld_safe in order to find the actual mysqld binary.  ledir (library executable directory) should be the path to the wanted mysqld binary.     /etc/my.cnf    	Code:  	
 [mysqld_multi]  mysqld         =/usr/bin/mysqld_safe  mysqladmin     =/usr/bin/mysqladmin    [mysqld1]  port            = 3306  socket          = /var/lib/mysql/mysql.sock  skip-external-locking  key_buffer_size = 16K  max_allowed_packet = 1M  table_open_cache = 4  sort_buffer_size = 64K  read_buffer_size = 256K  read_rnd_buffer_size = 256K  net_buffer_length = 2K  thread_stack = 128K      [mysql2]  socket          =/tmp/mysql.sock2  port            =3308  pid-file        =/usr/local/mysql/var2/$HOSTNAME.pid2  datadir         =/usr/local/mysql/var2    [mysql3]  socket          =/tmp/mysql.sock3  port            =3309  pid-file        =/usr/local/mysql/var3/$HOSTNAME.pid3  datadir         =/usr/local/mysql/var3     any tips to help trouble shoot this or configuration pointers would be appreciated       | 
       
 
The two special lines of the configurations requires more explanation.
ReplyDeleteUnder the [mysqld] section -
The language option tells this version of mysql the location of its errmsg.sys file. If we did not do this, the correct file will not be loaded, and the server will complain about "the incorrect number of lines" (a pretty unhelpful and misleading error message).
Under the [mysql_safe] section -
The option ledir is used by the mysqld_safe script to "find" mysqld-bin. If we did not do this, the mysqld_safe script will try to start the mysql server using the binaries precompiled internal "default" location: /usr/sbin/mysqld.
From
http://blogs.component.hu/index.php/attila/2010/04/20/mysql_multi_version_instances