Aldwin Nayoan Aldwin is a content writer at Niagahoster. Specializing in web hosting and WordPress, he is eager to help people uplevel their business on the internet. Apart from being a tech junkie, Aldwin likes fiction and photography.

Cara Migrasi Database MySQL ke Server Lain di Ubuntu 14.04

4 min read

cara-migrasi-database-mysql-ke-server-ubuntu

Saat menjalankan sebuah aplikasi web dan database (seperti LAMP stack) pada VPS hosting, akan ada saat di mana Anda perlu menambah resource untuk menampung lebih banyak traffic.

Langkah pertama yang bisa dilakukan adalah memindahkan database ke server VPS lain dalam datacenter yang sama.

Panduan ini akan membahas cara memindahkan database MySQL dari satu server ke yang lain. Sebelum memulai, perlu diketahui bahwa aplikasi yang digunakan dalam panduan ini adalah WordPress. Namun, Anda dapat menerapkan cara ini pada aplikasi lainnya yang menggunakan MySQL.

Prasyarat

Untuk mengikuti panduan ini, Anda harus menjalankan sebuah aplikasi dan database dalam suatu server VPS.

Agar mudah dipahami, server ini akan disebut lamp-1 untuk seterusnya.

Di samping itu, Anda perlu membuat database MySQL di server VPS lainnya yang memiliki fitur private networking. Untuk seterusnya sever ini akan dinamakan mysql-1.

Tujuan dari Panduan ini

Di akhir panduan ini, database di lamp-1 akan berpindah ke mysql-1.

Ada dua langkah utama yang harus dilakukan untuk mencapai tujuan panduan ini:

  1. Memindahkan database ke server baru.
  2. Menghubungkan aplikasi ke database tersebut.

Memindahkan Database ke Server Baru

Pertama-tama, Anda harus memiliki server VPS lain yang akan digunakan untuk MySQL database. Server ini akan dinamakan mysql-1.

Jika sudah, masuklah ke dalam server tersebut dan lakukan update apt dengan command berikut:

sudo apt-get update

Lalu, ketik apt command di bawah ini untuk install server MySQL:

sudo apt-get install mysql-server

Anda akan diminta untuk memasukkan root password untuk instalasi ini, yang nantinya juga dapat digunakan sebagai password untuk akses ke dalam server ini. Sesudahnya, buatlah tabel database dengan command ini:

sudo mysql_install_db

Sebagai langkah terakhir, tambahkan command di bawah ini:

sudo mysql_secure_installation

Berikutnya akan muncul beberapa pertanyaan. Pilih “Yes” untuk semuanya, kecuali jika Anda ingin merespon dengan jawaban “No” untuk reset root password.

Saat ini database MySQL yang baru hanya dapat berhubungan dengan localhost atau 127.0.0.1. Agar server lamp-1 dapat dihubungkan dengan database tersebut, Anda harus mengaturnya untuk bisa merespons IP addressnya sendiri. Akses konfigurasi MySQL dengan command berikut:

sudo vi /etc.mysql/my.cnf

Di dalamnya, Anda akan menemukan line seperti ini:

bind-address = 127.0.0.1

Gantilah 127.0.0.1 dengan IP address server mysql-1. Hasilnya seperti demikian:

bind-address = mysql_1_private_IP

Apabila ada pengaturan MySQL lain yang ingin diubah, Anda dianjurkan untuk melakukannya sekarang. Jika sudah, simpanlah perubahan yang telah dibuat dan tutup konfigurasi tersebut. Namun, MySQL perlu di-restart dengan command berikut agar dapat berfungsi:

sudo service mysql restart

Dengan melakukan langkah-langkah di atas, server mysql-1 dapat merespons traffic MySQL melalui IP addressnya. Pada bagian selanjutnya, Anda akan diajak untuk memindahkan database yang ada di server lamp-1.

Ekspor Backup Database Lama

Sebelum memulai proses ini, perlu diingat bahwa Anda bisa meminta server lamp-1 untuk tidak menambahkan data apa pun ke database lama ketika perpindahan dilakukan. Walau demikian, database ini akan tetap terkunci secara otomatis selama proses berlangsung.

Pada tahap ini, Anda akan mengekspor backup database lama dan memindahkannya ke server mysql-1. Pertama, Anda harus mengunci database tersebut agar bisa melakukan data dump. Ketika sebuah database dikunci, aplikasi yang menggunakannya tidak akan dapat menyimpan informasi baru sampai Anda menyelesaikan proses ini.

Masuklah ke dalam console MySQL di server lamp-1 dengan command berikut:

mysql -u root -p

Command di bawah ini akan mengunci database pada server lamp-1:

FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;
EXIT 

Sekarang jalankan command berikut di command shell Anda untuk mengekspor backup database lama ke dalam file dump.sql:

Mysqldump --lock-all-tables -u root -p --all-databases > dump.sql

Copy file dump.sql tersebut ke dalam server mysql-1 menggunakan SCP (secure copy protocol):

scp dump.sql user@mysql_1_private_IP:/tmp

Karena database di server lamp-1 sudah tidak akan digunakan lagi, Anda dapat membiarkannya terkunci. Namun apabila Anda ingin membukanya kembali, masukkanlah command ini di console MySQL:

SET GLOBAL read_only = OFF;
UNLOCK TABLES;

Baca Juga : Tutorial Lengkap Instalasi Ubuntu Server

Impor Database ke Server Baru

Pada tahap ini, Anda akan mengimpor database ke server mysql-1. Masukkan command ini di dalam server tersebut untuk memindahkan file dump.sql:

mysql -u root -p < /tmp/dump.sql

Dengan demikian, semua data dan user di database lama sudah berpindah ke server mysql-1. Selanjutnya Anda akan membuat user-user baru dengan privilege yang sama.

Membuat User Baru untuk Menghubungkan Server Lama

Pengelolaan user di MySQL menggunakan username dan host pair. Oleh karena itu, Anda harus membuat user-user baru dengan host value yang cocok dengan IP address server lamp-1. Mulailah dengan mengakses console MySQL:

mysql -u root -p

Lalu masukkan statement berikut untuk memperlihatkan semua user dan host database:

SELECT user,host FROM mysql.user;

Contoh outputnya demikian:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | 127.0.0.1 |
| root             | ::1       |
| debian-sys-maint | localhost |
| root             | localhost |
| wordpressuser    | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

Seperti yang bisa Anda lihat di atas, ada user bernama wordpressuser dengan source host localhost. Andaikan wordpressuser sebagai nama user aplikasi Anda.

Karena sekarang aplikasi dan databasenya tidak berada dalam satu server, ia tidak akan menggunakan koneksi dari localhost. Anda harus membuat user baru bernama wordpressuser dengan nama host diisi oleh IP address server lamp-1 agar aplikasi dapat terhubung dengan database baru.

Di samping itu, Anda juga perlu menggunakan password yang telah dibuat ketika melakukan pengaturan MySQL di server mysql-1:

CREATE USER ‘wordpressuser’@’lamp_1_private_IP IDENTIFIED BY ‘password’;

Setiap Anda membuat ulang user yang sudah ada di database lama, misalnya wordpressuser, jalankan statement berikut untuk melihat privilege-nya:

SHOW GRANTS FOR wordpressuser@localhost;

Contoh output:

Cara migrasi database MySQL ke server Ubuntu - memeriksa privilege user

Perhatikan teks setelah GRANT USAGE ON *.* karena Anda akan mengubahnya untuk mengatur privilege user baru.

Sebagai contoh, Anda akan menggunakan statement berikut untuk memberikan privilege ke user baru (contoh database ini akan dinamakan wordpress). Statement ini sama seperti pada output di atas, tetapi localhost diganti dengan IP address server lamp-1:

GRANT ALL PRIVILEGES ON `wordpress`.* TO 'wordpressuser'@'lamp_1_private_IP';

Sekarang masukkan command berikut untuk menunjukkan privilege user yang baru saja dibuat:

SHOW GRANTS FOR wordpressuser@lamp_1_private_IP;

Contoh output:

Cara migrasi database MySQL ke server Ubuntu - mengganti privilege user

Setelah mengubah host value semua user baru, jalankan statement berikut untuk mengaktifkan perubahannya dan menutup console MySQL:

FLUSH PRIVILEGES;
EXIT

Setelah database telah dipindah ke server mysql-1 dan dikonfigurasikan, Anda perlu mengubah pengaturan aplikasi agar dapat terhubung dengan database di server tersebut.

Memperbarui Pengaturan Aplikasi

Langkah terakhir dalam panduan ini adalah menghubungkan aplikasi Anda ke database baru di server mysql-1. Lokasi file konfigurasi tergantung pada aplikasi yang digunakan serta letak instalasinya. Sebagai contoh, panduan ini menggunakan WordPress.

Contoh Pengaturan WordPress

WordPress menyimpan pengaturan koneksi database-nya dalam file wp-config.php. File ini dapat Anda temukan di direktori instalasi aplikasi tersebut, contohnya /var/www/html/.

Bukalah pengaturan WordPress dengan command ini:

sudo vi /var/www/html/wp-config.php

Kemudian, temukan teks berikut:

/** MySQL hostname */
define (‘DB_HOST’, ‘localhost’); 

Gantilah localhost dengan IP address server mysql-1. Contohnya seperti di bawah ini:

define(‘DB_HOST’, ‘mysql_1_private_IP’);

Jika sudah, simpan lalu tutup pengaturannya. Tidak akan ada yang berubah pada WordPress, tapi sekarang aplikasi tersebut telah terhubung dengan database baru di server mysql-1.

Aplikasi Lainnya

Cara di panduan ini bisa diterapkan pada aplikasi apapun. Anda hanya perlu mengakses pengaturan koneksi database aplikasi, lalu mengganti host value localhost atau 127.0.0.1 dengan IP address server baru.

Agar proses ini berhasil, Anda juga perlu memulai ulang aplikasi yang digunakan.

Menghentikan MySQL di Server Lama

Setelah dipastikan bahwa aplikasi Anda dapat terhubung dengan database baru, perlu database lama perlu dihapus. Setidaknya, Anda perlu menghentikan kinerja MySQL agar tidak menggunakan resource server.

Jalankanlah command berikut di server lamp-1 untuk menghentikan MySQL dan mengaturnya agar tidak bekerja lagi:

sudo service mysql stop
sudo sh -c “echo ‘manual’ > /etc/init/mysql.override”

Penutup

Setelah database dipindahkan ke server lain, Anda memiliki resource lebih banyak untuk menampung traffic. Di samping itu, resource tambahan ini juga bisa digunakan untuk load balancing dan replikasi database.

0
Aldwin Nayoan Aldwin is a content writer at Niagahoster. Specializing in web hosting and WordPress, he is eager to help people uplevel their business on the internet. Apart from being a tech junkie, Aldwin likes fiction and photography.

Leave a Reply

Your email address will not be published. Required fields are marked *

14 + 2 =

[{"code":""
[{"code":""
"label":"Coba Lagi"
"label":"Coba Lagi"
"win":false}
"win":false}
{"code":"HOSTING50"
{"code":"HOSTING50"
"label":"Extra Diskon 50rb "
"label":"Extra Diskon 50rb "
"win":true}
"win":true}
{"code":"HOSTING20"
{"code":"HOSTING20"
"label":"Extra Diskon 20rb "
"label":"Extra Diskon 20rb "
"win":true}
"win":true}
{"code":"HOSTING100"
{"code":"HOSTING100"
"label":"Extra Diskon 100rb "
"label":"Extra Diskon 100rb "
"win":true}
"win":true}
{"code":""
{"code":""
"label":"Belum Beruntung"
"label":"Belum Beruntung"
"win":false}
"win":false}
{"code":"HOSTING20"
{"code":"HOSTING20"
"label":"Extra Diskon 20rb "
"label":"Extra Diskon 20rb "
"win":true}
"win":true}
{"code":""
{"code":""
"label":"Coba Lagi"
"label":"Coba Lagi"
"win":false}
"win":false}
{"code":"HOSTING50"
{"code":"HOSTING50"
"label":"Extra Diskon 50rb "
"label":"Extra Diskon 50rb "
"win":true}
"win":true}
{"code":"HOSTING20"
{"code":"HOSTING20"
"label":"Extra Diskon 20rb "
"label":"Extra Diskon 20rb "
"win":true}
"win":true}
{"code":"FREESHIPPING"
{"code":"FREESHIPPING"
"label":"Coba Lagi"
"label":"Coba Lagi"
"win":false}
"win":false}
{"code":""
{"code":""
"label":"Sedikit Lagi! "
"label":"Sedikit Lagi! "
"win":false}
"win":false}
{"code":"HOSTING50"
{"code":"HOSTING50"
"label":"Extra Diskon 50rb "
"label":"Extra Diskon 50rb "
"win":true}]
"win":true}]