Nafies Luthfi

Life will always feel wonderful if we always think positively.

Cara Mengubah Direktori Data MariaDB dengan Symlink di Ubuntu

Bismillahirrahmaanirrahiim.

Latar Belakang

Sedikit cerita, saya pernah kehilangan data MySQL/MariaDB di localhost karena install ulang Sistem Operasi di laptop. Di localhost laptop, saya mengunakan aplikasi Free PMO untuk mengelola proyek freelance. Jadi data software tersebut hilang sekitar 3 bulan, akhirnya saya harus input ulang berdasarkan dokumen-dokumen kerja yang saya simpan. Tapi tidak bisa kembali semua. :(

Dari situ saya memikirkan gimana caranya agar setiap install ulang sistem operasi, data MySQL/MariaDB saya tetap aman. Akhirnya ketemu artikel di Digital Ocean untuk mengubah direktori data MySQL. Saya praktekkan dengan database MariaDB ke disk drive/partisi harddisk lain di laptop, alhamdulillah berhasil.

Mengubah Direktori Data MariaDB/MySQL

Sebelum Mulai

  1. Di sini kita akan praktek memindahkan direktori data MariaDB ke partisi atau disk drive lain pada laptop/PC, pertama kita perlu konfigurasi auto-mount untuk disk drive yang akan digunakan, caranya bisa cek di artikel ini.

  2. Pada contoh ini, saya punya absolute path untuk direktori di partisi lain seperti ini: /mnt/ND/DB/mysql

  3. Lakukan backup database seluruh terlebih dahulu, untuk menghindari resiko data hilang. Saya biasa pakai script dari artikel ini.

Lanjut, buka terminal, berikut perintahnya:

# Stop MySQL (MariaDB) service
$ sudo systemctl stop mysql
$ sudo systemctl status mysql # Pastikan service mysql sudah stop

# Backup dulu direktori datanya
$ sudo cp -a /var/lib/mysql /var/lib/mysql_bak

# Pindahkan direktori data MySQL
$ sudo mv /var/lib/mysql /mnt/ND/DB/mysql

# Buat symlink
$ sudo ln -s /mnt/ND/DB/mysql /var/lib/mysql

# Update apparmor tunables alias
$ sudo vim /etc/apparmor.d/tunables/alias # Bisa pakai nano juga
alias /var/lib/mysql/ -> /mnt/ND/DB/mysql/, # Tambahkan paling bawah
$ sudo systemctl restart apparmor

# Start MySQL (MariaDB) service
$ sudo systemctl start mysql
$ sudo systemctl status mysql

OK sampai di situ pastikan MySQL (MariaDB) service aktif kembali, lalu coba akses datanya melalui MySQL client biasa yang kita gunakan (PHPMyAdmin / Adminer / MySQL Workbench). Mestinya isi database sama seperti sebelumnya.

Restore Database (Setelah Install Ulang Sistem Operasi)

Nah saat install ulang sistem operasi, kita coba restore database menggunakan direktori data yang sudah kita ubah di atas.

Sebelum Mulai

  1. Lakukan konfigurasi auto-mount untuk disk drive yang akan digunakan, cek di artikel ini.

  2. Pastikan MariaDB sudah terinstall di sistem operasi yang baru.

Baik kita lanjut, buka terminal, jalankan perintah berikut:

# Stop MySQL (MariaDB) service
$ sudo systemctl stop mysql
$ sudo systemctl status mysql # Pastikan service mysql sudah stop

# Backup direktori data default
$ sudo mv /var/lib/mysql /var/lib/mysql_bak

# Buat symlink
$ sudo ln -s /mnt/ND/DB/mysql /var/lib/mysql

# Update apparmor tunables alias
$ sudo vim /etc/apparmor.d/tunables/alias # Atau pakai nano
alias /var/lib/mysql/ -> /mnt/ND/DB/mysql/, # Tambahkan paling bawah
$ sudo systemctl restart apparmor

# Start MySQL (MariaDB) service
$ sudo systemctl start mysql
$ sudo systemctl status mysql

Sampai di sini, mestinya MySQL (MariaDB) service kembali normal, bisa kita cek melalui MySQL client, data lama mestinya sudah kembali.

Mengembalikan Data Direktori Default

OK sekarang gimana kalau kita mengalami kendala saat melakukan langkah di atas? Kita mesti revert atau mengembalikan pengaturan direktori data default seperti semula. Caranya seperti ini:

# Stop MySQL (MariaDB) service
$ sudo systemctl stop mysql
$ sudo systemctl status mysql

# Hapus direktori data hasil symlink
$ sudo rm /var/lib/mysql

# Kembalikan direktori hasil backup
$ sudo mv /var/lib/mysql_bak /var/lib/mysql

# Update apparmor tunables alias
$ sudo vim /etc/apparmor.d/tunables/alias
alias /var/lib/mysql/ -> /mnt/ND/DB/mysql/, # Hapus baris ini
$ sudo systemctl restart apparmor

# Start MySQL (MariaDB) service
$ sudo systemctl start mysql
$ sudo systemctl status mysql

Sip, seharusnya setelah dikembalikan, data MySQL (MariaDB) sudah kembali seperti data default saat baru install MariaDB.

Summary

  1. Cara ini cukup cepat dan efektif untuk mengembalikan data jika kita sering install ulang sistem operasi. Sebelumnya saya melakukan backup dan restore database secara manual, tetapi prosesnya lama dan jadi masalah jika kelupaan.
  2. Backup database juga tetap perlu dilakukan sebelum install ulang sistem operasi, untuk jaga-jaga jika proses pengembalian data dari disk drive lain gagal dilakukan. Saya biasa pakai script dari artikel ini.
  3. Saya pernah gagal saat restore direktori data (MySQL service tidak bisa start), akhirnya membuat symlink lagi ke disk drive lain, kemudian restore hasil backup (summary nomor 2). Setelah dicek harddisknya, ternyata penyebabnya ada bad sector pada harddisk. Jadi perlu diwaspadai juga.

Baik, demikian teman-teman, mudah-mudahan bermanfaat. Terima kasih.