Memindahkan direktori mysql

By | 8 March 2008

Kemarin salah satu pelanggan dedicated server kami mengalami masalah penuhnya partisi /var karena penambahan database mysql yang demikian besar.

Filesystem            Size  Used Avail Use% Mounted on
/dev/hda8              52G   15G   35G  30% /home
/dev/hda2             9.9G  3.5G  5.9G  38% /usr
/dev/hda3             7.9G  7.4G  161M  98% /var

Karena tidak mungkin lagi membuat partisi baru maka direktori mysql terpaksa dipindahkan ke partisi /home karena masih banyak sisanya.

Berikut ini prosedur pemindahan direktori mysql dari /var/lib/mysql ke /home/mysql.

Pertama stop mysql dan edit my.cnf

service chkservd stop
service mysql stop
nano -w /etc/my.cnf

Pada bagian mysqld ubah/tambahkan baris berikut:

pid-file = /home/mysql/mysqld.pid
socket = /var/lib/mysql/mysql.sock

datadir = /home/mysql
basedir = /home/mysql

Kemudian copy isi direktori /var/lib/mysql ke /home/mysql. Kami menggunakan perintah rsync dua kali untuk memastikan bahwa tidak ada yang tertinggal.

rsync -vrplogDtH /var/lib/mysql/ /home/mysql/
rsync -vrplogDtH /var/lib/mysql/ /home/mysql/

Sekarang buat link mysql.sock agar mysql bisa berjalan dengan semestinya:

ln -s /home/mysql/mysql.sock /var/lib/mysql/mysql.sock
rm -rf /tmp/mysql.sock
ln -s /home/mysql/mysql.sock /tmp/mysql.sock

Akhirnya restart mysql :

killall -9 mysqld
service mysql start
service chkservd start

Sebelum menghapus data mysql yang ada di direktori lama, alangkah baiknya dimonitor beberapa hari dulu untuk memastikan sesuatunya berjalan dengan semestinya. Jika semua sudah beres baru lakukan sbb:

service chkservd stop
service mysql stop
rm -rf /var/lib/mysql
mkdir /var/lib/mysql
chown mysql /var/lib/mysql
ln -s /home/mysql/mysql.sock /var/lib/mysql/mysql.sock
rm -rf /tmp/mysql.sock
ln -s /home/mysql/mysql.sock /tmp/mysql.sock
service mysql start
service chkservd start

Proses pemindahan data mysql selesai dan sekarang mysql berjalan di direktori yang baru.