Memisahkan Server Database Mysql ke VPS Lain (Remote Mysql)

Ok begini, bro… Lazimnya ketika anda melakukan setup lengkap sebuah VPS untuk digunakan meng-host web, di situ akan terinstal aneka macam aplikasi yg dibutuhkan, sebut saja: webserver Apache ataupun Nginx, PHP, database server misal MariaDB atau Mysql, FTP server, Nameserver yaitu NSD ataupun BIND, Postfix dan lain-lain. Entah anda instal aplikasi tersebut manual satu persatu ataupun beres dengan instalasi panel, semua aplikasi tsb ada dalam satu VPS.

Maksud dari judul di atas adalah kali ini saya akan berbagi tentang cara memisahkan aplikasi database ke VPS lain, mungkin sering juga disebut off-site database server ataupun remote database server seperti yg selalu digunakan oleh situs-situs besar. Pada tutorial sederhana ini, saya menggunakan 2 droplet Digitalocean dengan region yg sama, satu droplet sudah beres setupnya untuk hosting WordPress (tidak dibahas di sini) dan satu droplet lagi akan saya jadikan server databasenya.

Anda bisa menjajal setup mudah ini dengan VPS lain sesuka anda dan tidak harus Digitalocean, tidak harus satu region, tidak harus satu provider. Anda boleh pakai VPS di Russia untuk hosting webnya dan menggunakan VPS lokal Indonesia sebagai server databasenya. Semua bisa kok dan terserah anda saja.

Pertama-tama, saya akan setup server yang akan digunakan khusus sebagai database server. Saya create sebuah droplet Digitalocean dengan ram 512, OS Debian 7 32bit dan private networking enabled untuk nanti akan digunakan ip private-nya. Kemudian… Mari ikuti:

  1. Login as root (droplet baru biasa ada prosedur ubah password root)
  2. Menjalannkan update dengan command apt-get update
  3. Instal file editor vim karena inilah favorit saya, abaikan jika anda pake yg lain. apt-get install vim -y
  4. Kemudian apt-get install python-software-properties
  5. Di sini saya akan gunakan Mariadb SQL server versi 10.1, tambahkan server repo berikut ini:

    ke dalam file /etc/apt/sources.list. Anda boleh cari dan pakai repo lain misalnya yang terdekat dengan server anda.mariadb10 repo
  6. Save file tsb
  7. Next, jalankan command:
  8. Lakukan update lagi supaya repo Mariadb terbaca sistem: apt-get update
  9. Kemudian apt-get install mariadb-server
  10. Tentukan password root Mysql jika diminta mariadb root pass
  11. Ini optional, jalankan command mysql_secure_installation
  12. Muncul beberapa pilihan y/n dan saya rasa anda tahu mana yg pilih yes mana yg no. Saya tidak akan memberi clue, pahami saja pertanyaan yg muncul hehehe
  13. Instalasi Mariadb selesai sudah, editlah konfigurasinya sedikit: vim /etc/mysql/my.cnf
  14. Temukan bind-address, jika berpagar di depannya maka hilangkan pagar tsb kemudian isi dengan ip private macam begini

    mysql bind-address

    ip tsb dapat anda lihat dengan command ifconfig, bisa juga anda lihat dari detail droplet yang anda gunakan dengan catatan private networking telah aktif/enabled private ip DO WARNING: Jika anda menggunakan VPS lain (bukan digitalocean), kemungkinan anda hanya mempunya ip publik maka gunakan ip publik vps anda tsb ke dalam bind-address di atas.
  15. Save kemudian service mysql restart
  16. Kini saatnya membuat sebuah database, username beserta password. Loginlah dengan command mysql -u root -p dan isikan password yang telah anda tentukan di step 10
  17. Buatlah sebuah database, username dan password. Ini nanti digunakan pada web WordPress yang akan diinstal di VPS lain (ataupun yg telah terinstal dan running di VPS lain).
  18. Contoh di atas saya membuat sebuah database dengan nama garong, usernamenya adalah kucing dan passwordnya adalah P4s5w0rd. Silahkan tentukan sendiri sesuai keinginan hati anda masing-masing. OK, trus ip 10.130.3.172 ini ip apa? Ini adalah ip private droplet saya yg lain di mana WordPress telah terinstal di situ. Sekedar mengingatkan lagi: jika server anda tidak memiliki ip internal/private seperti Digitalocean tsb maka yg harus anda gunakan di sini adalah ip publiknya.
  19. Berikutnya, amankan akses ke database ini hanya dengan mengijinkan akses dari droplet satunya. Gunakan command:

    Artinya bahwa yg bisa mengakses database ini adalah ip droplet WordPress saya yaitu 10.130.3.172
  20. Well done! Setup remote database selesai dan siap digunakan oleh server lainnya. Pastikan Mariadb server telah running dengan cek lsof -i TCP:3306

Sejenak kita tinggalkan droplet database ini dan mari login ke droplet yang akan kita pakai untuk setup WordPress. Perhatikan bahwa akan ada 2 skenario yaitu:

Pertama: WordPress belum terinstal dan droplet/VPS masih OS fresh instal, maka:

  • Login as root
  • Lakukan setup lengkap supaya WordPress ready. Saya tidak akan bahas cara setupnya. Silahkan pilih saja: Centos webpanel, Webmin, Centminmond, cPanel, Webuzo, Zpanel, LAMP stack, Easyengine, dll
  • Siapkan instalasi WordPress, edit file wp-config.php via console dan isikan detail database yg telah dibuat pada langkah 17, saya potong pada bagian penting saja, lihatlah dengan baik:
  • Perhatikan ya bro, normalnya pada bagian DB_HOST terisi localhost atau 127.0.0.1 karena database server ada pada server yg sama (1 server), kali ini pada bagian tsb isikan ip dari droplet remote database yang telah diseting di atas.
  • Save file wp-config.php
  • Ada baiknya anda lakukan tes koneksi ke remote database dahulu. Dari console droplet WordPress ini cobalah konek ke droplet Mariadb dengan perintah: mysql -u kucing -h 10.130.20.218 -p
  • Isikan passwordnya, bilamana sukses masuk maka semua setup lolos uji dan instal WordPress akan lancar jaya tanpa kendala apapun seperti proses seting biasanya.masuk remote db
  • Instalasi WordPress bisa segera dirampungkan dengan membuka domain anda di browser
  • Jika ada aplikasi database server yg running di VPS ini, silahkan uninstal saja untuk mengurangi beban server.

Kedua: WordPress sudah terinstal dan sudah berjalan di VPS (sudah banyak konten, sudah banyak visitor, sudah sangat kondang, sudah menghasilkan banyak orderan, banyak profit dollar… dst…), maka:

  • Login as root
  • Masuklah ke direktori tempat instalasi WordPress
  • Cek detail database yg digunakan (dibutuhkan untuk backup) dengan command: cat wp-config.php |grep DB |head -3 hasilnya akan seperti ini:
  • Dari langkah tsb akan terkuak tiga hal penting yaitu database, username dan password yg digunakan di WordPress ini. Gunakan data tsb untuk melakukan dump, jalankan perintah: mysqldump --add-drop-table -u wp891 -p wp891 > wp891.sql
  • Isikan passwordnya, pada contoh di sini yaitu: uhuy333
  • Hasilnya adalah sebuah backup bernama wp891.sql
  • Selanjutnya file backup wp891.sql ini akan kita restore ke remote database dengan command: mysql -u kucing -p garong -h 10.130.20.218 < wp891.sql
  • Muncul isian password, tentu saja password yg harus diisi adalah password-nya si user kucing di atas
  • Karena database sudah ter-restore ke remote database maka isi dari wp-config.php ini juga harus anda ubah pada bagian detail databasenya, isinya harus diubah sama seperti pada point ke tiga di skenario pertama (detail databasenya bukan lagi wp891, wp891 dan uhuy333 tetapi harus diganti menjadi garong, kucing dan P4s5w0rd dan DB_HOST diisi ip remote database tsb). Make sense, dude?
  • Jika sudah diedit dengan benar, segera save wp-config.php tsb dan delete file backup rm -i wp891.sql supaya tidak diunduh orang iseng.
  • Apabila semua langkah ini anda jalankan dengan tepat maka dalam sekejap database yg digunakan WordPress anda akan berpindah ke remote server. Ingat: tidak boleh ada kesalahan termasuk saat mengubah isi wp-config.php karena satu kesalahan saja WordPress anda akan down! (Error establishing a database connection).

Alright, singkat kata: Wordpres anda kini akan melakukan query ke database mysql yg letaknya berada di server lain. Sederhana bukan? Salah satu manfaat dari setup ini adalah beban server WordPress anda akan cukup berkurang karena tugas database telah diadopsi server lain.

OK teman dan sahabat sekalian, selamat mencoba dan semoga bermanfaat. Tidak perlu khawatir postingan ini panjang… sekali lagi konsepnya sangat sederhana dan saya hanya mencoba berbagi sedetail mungkin untuk menghindari kepusingan hehehe. Semoga sukses dan semoga selalu kebanjiran order ataupun profit dari internet!

TIPS:

  • Gunakanlah server database yg pingnya kecil dari server webserver (Pada Digitalocen bisa pilih region yg sama)
  • Pastikan server yg digunakan bagus kualitas dan reputasinya. Ingat database Mysql adalah service yg sangat critical. Kacau jadinya jika web anda online namun server database sering down
  • Karena server remote database hanya dipakai untuk database saja maka uninstal semua aplikasi lainnya yg tidak diperlukan: webserver, php, postfix. sendmail, bind, ftp, dll (jika ada).

Cheers!!!!!!!!!

Kata kunci pencarian:
  • memisahkan database dan web service

Latest Comments

  1. Elite Desain September 12, 2016
    • admin September 14, 2016
  2. agung December 30, 2016
  3. jack January 18, 2017
    • admin January 18, 2017

Leave a Reply