Move MySQL database storage location
It’s always a good idea to keep storage away from the boot device. If you run out of space on the boot device the system will halt. If you make a new install it’s easy enough to move your storage and you can do it from a cloud-init script like this:
– mkdir /var/db
– chown -R mysql:mysql /var/db
– sed -i ‘s:datadir=/var/lib/mysql:datadir=/var/db:g’ /etc/my.cnf
– service mysqld start
If the installation is all ready up and running you have to add steps for stopping the MySQL server and copy the database files:
service mysqld stop
mv /var/lib/mysql/* /var/db
chown -R mysql:mysql /var/db
sed -i ‘s:datadir=/var/lib/mysql:datadir=/var/db:g’ /etc/my.cnf
service mysqld start
In these examples I have user /var/db where I mounted the second storage device. You can however use any location you see fit. Points of interest in the command sequence.
[shell]chown -R mysql:mysql /var/db[/shell]
Make sure that the mysql deamon have access to the storage location.
[shell]sed -i ‘s:datadir=/var/lib/mysql:datadir=/var/db:g’ /etc/my.cnf[/shell]
sed is a simple tool for search and replace inside text/config files directly from the command line. Here it searches for the line specifying the MySQL datadir location and replaces it with the new value.
Pingback: Amazon EC2 Linux – Add additional volumes « Hackviking.com