Dikala menjalankan sebuah program web dan database (seperti LAMP stack) di VPS hosting, akan ada ketika di mana Sahabat perlu menambah resource bagi menampung lebih banyak traffic.
Langkah pertama-tama yang dapat dilakukan yakni memindahkan database ke server VPS lain pada datacenter yang sama.
Panduan ini akan membahas cara memindahkan database MySQL dari satu server ke yang lain. Sebelum memulai, perlu dipahami bersama bahwa program yang digunakan pada panduan ini yakni WordPress. Namun, Sahabat dapat menggunakan cara ini di program lainnya yang menggunakan MySQL.
Prasyarat
Bagi mengikuti panduan ini, Sahabat mesti menjalankan sebuah program dan database pada suatu server VPS.
Agar gampang dimengerti, server ini akan disebut lamp-1 bagi seterusnya.
Di samping itu, Sahabat perlu membangun database MySQL di server VPS lainnya yang mempunyai fitur private networking. Bagi seterusnya sever ini akan dinamakan mysql-1.
Tujuan dari Panduan ini
Di ahir panduan ini, database di lamp-1 akan berpindah ke mysql-1.
Ada dua langkah utama yang mesti dilakukan bagi mencapai tujuan panduan ini:
- Memindahkan database ke server baru.
- Menghubungkan program ke database tersebut.
Memindahkan Database ke Server Baru
Pertama-tama-tama, Sahabat mesti mempunyai server VPS lain yang akan digunakan bagi MySQL database. Server ini akan dinamakan mysql-1.
Bila telah, masuklah ke pada server tersebut dan lakukan update apt dengan command berikut:
sudo apt-get update
Lalu, ketik apt command di bawah ini bagi install server MySQL:
sudo apt-get install mysql-server
Sahabat akan diminta bagi memasukkan root password bagi instalasi ini, yang nantinya pun dapat digunakan selaku password bagi akses ke pada server ini. Sesudahnya, buatlah tabel database dengan command ini:
sudo mysql_install_db
Selaku langkah terakhir, tambahkan command di bawah ini:
sudo mysql_secure_installation
Berikutnya akan muncul beberapa pertanyaan. Pilih “Yes” bagi semuanya, kecuali seandainya Sahabat ingin merespon dengan jawaban “No” bagi reset root password.
Dikala ini database MySQL yang baru hanya dapat berhubungan dengan localhost atau 127.0.0.1. Agar server lamp-1 dapat dihubungkan dengan database tersebut, Sahabat mesti mengaturnya bagi dapat merespons IP addressnya sendiri. Akses konfigurasi MySQL dengan command berikut:
sudo vi /etc.mysql/my.cnf
Di dalamnya, Sahabat 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, Sahabat dianjurkan bagi melakukannya kini. Bila telah, simpanlah perubahan yang telah dibangun dan tutup konfigurasi tersebut. Namun, MySQL perlu di-restart dengan command berikut agar dapat berfungsi:
sudo service mysql restart
Dengan mengerjakan strategi di atas, server mysql-1 dapat merespons traffic MySQL lewat IP addressnya. Di bagian berikutnya, Sahabat akan diajak bagi memindahkan database yang terdapat di server lamp-1.
Ekspor Backup Database Lama
Sebelum memulai proses ini, perlu diingat bahwa Sahabat dapat meminta server lamp-1 bagi tak menambahkan data apa pun ke database lama ketika perpindahan dilakukan. Walau demikian, database ini akan tetap terkunci secara otomatis dalam kurun waktu proses berlangsung.
Di tahap ini, Sahabat akan mengekspor backup database lama dan memindahkannya ke server mysql-1. Pertama-tama, Sahabat mesti mengunci database tersebut agar dapat mengerjakan data dump. Ketika sebuah database dikunci, program yang menggunakannya tak akan dapat menyimpan informasi baru hingga Sahabat menyelesaikan proses ini.
Masuklah ke pada console MySQL di server lamp-1 dengan command berikut:
mysql -u root -p
Command di bawah ini akan mengunci database di server lamp-1:
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;
EXIT
Sekarang ini jalankan command berikut di command shell Sahabat bagi mengekspor backup database lama ke pada file dump.sql:
Mysqldump --lock-all-tables -u root -p --all-databases > dump.sql
Copy file dump.sql tersebut ke pada server mysql-1 menggunakan SCP (secure copy protocol):
scp dump.sql user@mysql_1_private_IP:/tmp
Karena database di server lamp-1 telah tak akan digunakan lagi, Sahabat dapat membiarkannya terkunci. Namun apabila Sahabat ingin membukanya kembali, masukkanlah command ini di console MySQL:
SET GLOBAL read_only = OFF;
UNLOCK TABLES;
Impor Database ke Server Baru
Di tahap ini, Sahabat akan mengimpor database ke server mysql-1. Masukkan command ini di pada server tersebut bagi memindahkan file dump.sql:
mysql -u root -p < /tmp/dump.sql
Dengan demikian, seluruh data dan user di database lama telah berpindah ke server mysql-1. Berikutnya Sahabat akan membangun user-user baru dengan privilege yang sama.
Merancang User Baru bagi Menghubungkan Server Lama
Pengelolaan user di MySQL menggunakan username dan host pair. Oleh karena itu, Sahabat mesti membangun 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 bagi memperlihatkan seluruh 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 dapat Sahabat lihat di atas, ada user bernama wordpressuser dengan source host localhost. Andaikan wordpressuser selaku nama user program Sahabat.
Karena kini program dan databasenya tak berada pada satu server, ia tak akan menggunakan koneksi dari localhost. Sahabat mesti membangun user baru bernama wordpressuser dengan nama host diisi oleh IP address server lamp-1 agar program dapat terhubung dengan database baru.
Di samping itu, Sahabat pun perlu menggunakan password yang telah dibangun ketika mengerjakan pengaturan MySQL di server mysql-1:
CREATE USER ‘wordpressuser’@’lamp_1_private_IP IDENTIFIED BY ‘password’;
Setiap Sahabat membangun ulang user yang telah ada di database lama, misalnya wordpressuser, jalankan statement berikut bagi melihat privilege-nya:
SHOW GRANTS FOR wordpressuser@localhost;
Contoh output:
Perhatikan teks setelah GRANT USAGE ON *.* karena Sahabat akan mengubahnya bagi mengatur privilege user baru.
Selaku contoh, Sahabat akan menggunakan statement berikut bagi memberikan privilege ke user baru (contoh database ini akan dinamakan wordpress). Statement ini sama seperti di output di atas, tetapi localhost diganti dengan IP address server lamp-1:
GRANT ALL PRIVILEGES ON `wordpress`.* TO 'wordpressuser'@'lamp_1_private_IP';
Sekarang ini masukkan command berikut bagi menunjukkan privilege user yang baru saja dibangun:
SHOW GRANTS FOR wordpressuser@lamp_1_private_IP;
Contoh output:
Setelah mengubah host value seluruh user baru, jalankan statement berikut bagi mengaktifkan perubahannya dan menutup console MySQL:
FLUSH PRIVILEGES;
EXIT
Setelah database telah dipindah ke server mysql-1 dan dikonfigurasikan, Sahabat perlu mengubah pengaturan program agar dapat terhubung dengan database di server tersebut.
Memperbarui Pengaturan Program
Langkah terakhir pada panduan ini yakni menghubungkan program Sahabat ke database baru di server mysql-1. Lokasi file konfigurasi tergantung di program yang digunakan serta letak instalasinya. Selaku contoh, panduan ini menggunakan WordPress.
Contoh Pengaturan WordPress
WordPress menyimpan pengaturan koneksi database-nya pada file wp-config.php. File ini dapat Sahabat dapatkan di direktori instalasi program tersebut, contohnya /var/www/html/.
Bukalah pengaturan WordPress dengan command ini:
sudo vi /var/www/html/wp-config.php
Kemudian, dapatkan 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’);
Bila telah, simpan lalu tutup pengaturannya. Tak akan ada yang berubah di WordPress, tapi kini program tersebut telah terhubung dengan database baru di server mysql-1.
Program Lainnya
Cara di panduan ini dapat diaplikasikan di program apapun. Sahabat hanya perlu mengakses pengaturan koneksi database program, lalu mengganti host value localhost atau 127.0.0.1 dengan IP address server baru.
Agar proses ini berhasil, Sahabat pun perlu memulai ulang program yang digunakan.
Menghentikan MySQL di Server Lama
Setelah dipastikan bahwa program Sahabat dapat terhubung dengan database baru, perlu database lama perlu dihapus. Setidaknya, Sahabat perlu menghentikan performa MySQL agar tak menggunakan resource server.
Jalankanlah command berikut di server lamp-1 bagi menghentikan MySQL dan mengaturnya agar tak bekerja lagi:
sudo service mysql stop
sudo sh -c “echo ‘manual’ > /etc/init/mysql.override”
Penutup
Setelah database dipindahkan ke server lain, Sahabat mempunyai resource lebih banyak bagi menampung traffic. Di samping itu, resource tambahan ini pun dapat digunakan bagi load balancing dan replikasi database.
Sumber https://niagahoster.co.id/