1

I'm trying to have MySQL point to a directory on an EBS volume I mounted on my EC2 machine.
I took th following steps:

  1. Stopped MySQL (/etc/init.d/mysqld stop) - successful
  2. Created a MySQL directory on my volume, mounted on /vol (mkdir /vol/mysql)
  3. Copied the contents of /var/lib/mysql to /vol/mysql (cp -R /var/lib/mysql /vol/mysql)
  4. Chanded the owner and group of that directory to match the original (chown -R mysql:mysql /vol/mysql) - after this step, the 2 directories are identical.
  5. Edited the /etc/my.cnf file (commented 2 original lines):

    [mysqld]
    \#datadir=/var/lib/mysql
    \#socket=/var/lib/mysql/mysql.sock
    datadir=/vol/mysql
    socket=/vol/mysql/mysql.sock
    
  6. Started MySQL (/etc/init.d/mysqld start) - FAILED

The error file /var/log/mysqld.log contains the following lines:

100205 20:52:54  mysqld started  
100205 20:52:54  InnoDB: Started; log sequence number 0 43665  
100205 20:52:54 [Note] /usr/libexec/mysqld: ready for connections.  
Version: '5.0.45'  socket: '/vol/mysql/mysql.sock'  port: 3306  Source distribution  

No other errors are available.

  1. What am I doing wrong?
  2. Where can I find the error/s encountered by MySql?
  3. If I restore the original lines, MySQL starts, leading me to believe it may be a permissions issue - but permissions are the same for both directories?

Thanks!

3
  • cp -Rp copies and preserves permissions. Feb 6, 2010 at 2:39
  • Good tip for next time - still doesn't solve my problem :) Feb 6, 2010 at 2:48
  • 1
    Best I can suggest is to set -x when you run the mysqld script (sh -x /etc/init.d/mysqld start) - at least that will show you the exact command that's failing, which will hopefully give you a clue. Feb 6, 2010 at 7:01

2 Answers 2

2

I took Garth's suggestion and ran the script with sh -x. I found out there are permission issues when accessing the mysql.sock file. So I left the old one in the conf file, ran it again and ta-da it works and runs from the new location!

Thanks Gareth for showing me the way. I gave you a +1 on the comment but you did not post an answer.

Hopefully, this question will help some other people trying to do the same.

2
  • 1
    Glad to be of help ! You really figured out the problem, so you should vote for your answer as the right one. Feb 8, 2010 at 22:00
  • Thanks for the pointer though. Completely forgot about mysqld being a shell script :) And here's another point for the comment :) Feb 9, 2010 at 1:01
1

Try mount the original paths using bind.

Mount then shows:

/vol/etc/mysql on /etc/mysql type none (rw,bind)
/vol/lib/mysql on /var/lib/mysql type none (rw,bind)
/vol/log/mysql on /var/log/mysql type none (rw,bind)

And config file still looks as before:

socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .