...more recent posts
Moved my MySQL data directory onto it's own drive last night. Went pretty smoothly with only a couple minutes of down time. For my records, here's what I did. In my case I'm changing it from the stock /var/lib/mysql location to /data/mysql.
Make a copy of MySQL conf file in case anything goes horribly wrong and we need to revert to where we were:
cp /etc/my.cnf /etc/my.cnf.bakEdit my.cnf and in the [mysqld] section change
datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sockto
datadir=/data/mysql socket=/data/mysql/mysql.sockThen in the [mysql.server] section change
basedir=/var/libto
basedir=/dataSave /etc/my.cnf when done. Then do
service mysqld stop rsync -vrplogDtH /var/lib/mysql/ /data/mysql/to stop MySQL (so no data gets lost while we are changing locations) and then rsync to copy all the data to the new location. Then here's where I'm not 100% sure, but after one false start where I couldn't connect to MySQL after starting it up at this point I did it all again adding this step after the rsync:
ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sockto create a link in the new data location to the old mysql.sock (which is what a client uses to connect to the database.) Then just:
service mysqld startWorks fine although I'd like to understand better about having to link mysql.sock. I would think this wouldn't be necessary since my.cnf should contain enough info to figure out where the socket is. But maybe other things on the system expect it to be in /var/lib/mysql? I guess that's the case since it seems like you need that link.
Pretty basic stuff, but just so I don't have to look it up again.
Assuming you have a brand new drive (unformatted) to add:
Enter "fdisk [disk name]" (ex., "fdisk /dev/sdb"). You will then be asked to choose a command to enact upon the disk.
Enter "n" to create a new partition. You will then be asked to pick an extended or primary partition.
Enter "p" for a primary partition, unless you are sure you want to set up an extended partition.
Enter "1" to assign the number 1 to your new partition (ex., sdb1) or another number if you want.
Hit enter twice to establish the partition across the default space fdisk has chosen for you.
To set up the partition's system ID, enter "t", select the appropriate partition and enter "83".
Enter "w" to write the new partition to the disk and exit. You have now created a partition on your disk!
Enter "mkfs.ext3 -b 4096 [partition name]" to create an ext3 filesystem on your partition.
(above from here)
Then make a directory where you want to mount it (in this example /data):
mkdir /data
chmod 777 /data
Then edit /etc/fstab so drive will mount automatically on reboot
vi /etc/fstab
Add the following line to the end of /etc/fstab
/dev/sdb1 /data ext3 defaults 0 0
(Of course change /dev/sdb1 to the partition name you made in fdisk above, and change /data to your mount directory)
From the command line do
mount -a
to force a reload of /etc/fstab (so your disk mounts right now without a reboot.)
Also, see here for 3ware RAID management help.