Senin, Agustus 04, 2014

Memindahkan Direktori Database MySQL di Ubuntu GNU/Linux

Baru baru ini saya meng-install sistem operasi desktop Ubuntu versi 14.04.1 LTS ke laptop dan salah satu aplikasi "wajib" adalah database server MySQL, karena hampir semua aplikasi web yang saya bangun menggunakan MySQL sebagai backend-nya. Salah satu kebiasaan saya ketika meng-install MySQL adalah memindahkan direktori tempat MySQL menyimpan semua databasenya ke lokasi non-standar, yang by default berlokasi di /var/lib/mysql, saya pindahkan ke lokasi /home/direktori/mysql misalnya. Hal ini saya lakukan agar memudahkan pemindahan dan backup data apabila Ubuntu-nya akan saya upgrade ke versi major.

Ternyata memindahkan direktori database MySQL di distro GNU/Linux populer seperti Ubuntu dan CentOS tidak semudah zaman dahulu, seperti zaman Ubuntu versi 8.04 dulu (lama banged yak :p) misalnya. Kalau dulu cukup ubah konfigurasi di file konfigurasi /etc/my.cnf, ubah permission direktori, restart daemon semua langsung jalan. Dengan semakin tinggi-nya keamanan di lapisan aplikasi ada beberapa hal yang harus kita lakukan untuk memindahkan direktori database MySQL di distro Ubuntu 14.04. Berikut akan saya paparkan caranya.

Ubah konfigurasi di my.cnf

Tahap pertama adalah dengan mengubah/memodifikasi file konfigurasi utama MySQL, my.cnf, yang pada Ubuntu terletak pada direktori /etc/mysql. Pada konfigurasi default kita akan melihat konfigurasi seperti ini:

...
[mysqld]
#
# * Basic Settings
#
...
datadir  = /var/lib/mysql/
...
Ubah file my.cnf dengan text editor favorit anda, dan ubah pada bagian parameter datadir dan pada bagian InnoDB menjadi sebagai berikut:
...
[mysqld]
#
# * Basic Settings
#
...
datadir  = /home/dicarve/mysql # sesuaikan dengan direktori baru database MySQL yang kita inginkan
...
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
innodb_data_home_dir = /home/dicarve/mysql/
innodb_log_group_home_dir = /home/dicarve/mysql/
innodb_data_file_path = ibdata1:10M:autoextend
...
Simpan perubahan file tersebut.

Selanjutnya buka program Terminal dan ubah ownership direktori baru database MySQL kita (dalam hal ini /home/dicarve/mysql), agar bisa diakses oleh daemon server MySQL, sekaligus kita copy-kan isi direktori /var/lib/mysql ke direktori baru kita dengan perintah:

dicarve@localhost:~$ sudo cp -R /var/lib/mysql/* /home/dicarve/mysql/
dicarve@localhost:~$ sudo chown -R mysql /home/dicarve/mysql

Ubah setting AppArmor

Distro GNU/Linux populer biasanya menggunakan AppArmor, sebuah modul sistem keamanan kernel Linux yang salah satu fungsinya adalah membatasi aplikasi-aplikasi tertentu di lingkungan GNU/Linux, agar hanya bisa mengakses berkas atau direktori tertentu. Untuk lebih jelasnya mengenai AppArmor bisa kita baca di Wiki AppArmor. Agar daemon server MySQL bisa mengakses direktori database baru yang sudah kita ubah di file my.cnf, kita harus mengubah konfigurasi AppArmor MySQL dengan memodifikasi file /etc/apparmor.d/local/usr.sbin.mysqld. Tambahkan baris berikut pada berkas tersebut:

# Site-specific additions and overrides for usr.sbin.mysqld.
# For more details, please see /etc/apparmor.d/local/README.
/home/dicarve/mysql/* rw
Simpan perubahan berkas tersebut kemudian jalan perintah berikut pada Terminal:
dicarve@localhost:~$ sudo /etc/init.d/apparmor reload

Restart server MySQL

Selanjutnya adalah me-restart server MySQL kita dengan perintah:

dicarve@localhost:~$ sudo /etc/init.d/mysql restart
Apabila semua berjalan lancar, maka kita telah berhasil memindahkan direktori database MySQL kita ke lokasi yang baru yang kita inginkan. Ada kemungkinan cara ini juga berhasil untuk database server MariaDB, tetapi saya belum mencobanya. Semoga bermanfaat dan selamat mencoba :).

1 komentar:

venkat ramana mengatakan...

Good and Interesting blog... Thanks for sharing your views and ideas...


PHP Training in Chennai