Moving MySQL database

Jerry McAllister jerrymc at clunix.cl.msu.edu
Fri Sep 3 07:46:52 PDT 2004


> 
> I have a server that is rapidly filling the var partition with a MySQL 
> database.  I'd like to move it to a subdirectory somewhere under /usr.
> 
> Is there a document that would outline a "best practices" approach to 
> doing this?  My first instinct was to stop the mysqld, do a mv on 
> /var/db to /var/db2 to rename it, copy the data to a /usr/local/db 
> folder and alter permissions on it to match /var/db, then make a 
> softlink between /usr/local/db and /var/db and restart mysqld so mysqld 
> wouldn't need any reconfiguring and everything, I would *think*, should 
> keep working...only now it will be working off a far more spacious 
> partition.

presuming /usr is actually a good place for it (may really want to add a 
disk and make a really different partition)

First stop MySQL or reboot to single user.
Then
     cd /var/db
     tar cf /usr/db.tar *
     cd /usr
     mkdir var.db
     cd var.db
     tar xf ../db.tar
     cd /var
     mv db db.old
     ln -s /usr/var.db db
Now, reboot and let MySQL start and make sure it all is happy and 
works just fine.
Then clean up.
     cd /usr
     rm db.tar
     cd /var
     rm -rf db.old

It should now work using the space in /usr
You can use any names you like for db.tar, var.db, db.old.   Those
just make sense to me and are the style I use.

If you don't want to move all the stuff in /var/db, then you will
have to be more selective and make the link from within /var/db
rather than just the whole db directory from within /var.

For example, the MySQL stuff is likely to all be in a directory
called /var/db/mysql.   So:

Stop MySQL or reboot to single user.
Then
     cd /var/db/mysql
     tar cf /usr/mysql.tar *
     cd /usr
     mkdir var.db.mysql
     cd var.db.mysql
     tar xf ../../mysql.tar
     cd /var/db
     mv mysql mysql.old
     ln -s /usr/var.db.mysql mysql
Now, reboot and let MySQL start and make sure it all is happy and
works just fine.
Then clean up.
     cd /usr
     rm mysql.tar
     cd /var/db
     rm -rf mysql.old

////jerry

> 
> Thanks,
> -Bart
> 


More information about the freebsd-questions mailing list