Halo semua!

Selamat siang! Apa kabar? Jumpa lagi di Jurnal saya ya! Sudah lama tidak update dan disini saya ingin memulai tahun 2024 dengan topik migrasi database MySQL di on-premise ke Cloud SQL menggunakan Database Migration Service.

Yup!

Mengapa harus menggunakan Database Migration Service? Sebenarnya bisa saja kita menggunakan tool semacam mysqldump untuk dump database di on-premise dan restore di Cloud SQL. Itu cara termudah dan tidak perlu layanan tambahan seperti Database Migration Service. Hanya saja hal tersebut memiliki kekurangan salah satunya aplikasi haruslah downtime.

Mengapa? karena jika kita menggunakan tool mysqldump sedangkan aplikasi masih dalam keadaan up dan running, maka ditakutkan adanya inkonsistensi data. Data yang ingin dipidahkan haruslah data terbaru dan tidak rusak.

Selain itu juga, jika data yang ingin dipindahkan berukuran sangat besar sehingga akan memakan waktu yang lama, maka aka solusi yang tepat adalah menggunakan layanan tambahan seperti Database Migration Service. Intinya, kita ingin memindahkan database dari MySQL on-premise (misal di atas instance) ke Cloud SQL tanpa ingin mematikan aplikasi dan ingin data tetap utuh dan konsisten.

Bagaimana cara kerja Database Migration Service?

Pertama, kita perlu membuat connection profile yang berisi detail database yang berada di on-premise seperti IP Addressusername dan password yang memiliki hak akses. Selanjutnya kita buat job di DBMS berisi detail seperti tipe migrasi (apakah continuous atau one-time), profile database sumber dan tujuan, serta metode koneksi apa yang ingin dipakai untuk migrasi.

Mari kita mulai.

Sebelum memulai pastikan kedua API dibawah ini, yaitu Database Migration API dan Service Networking API.

Di bawah ini adalah VM instance yang berisi database yang akan kita migrasi ke Cloud SQL.

Selanjutnya, buka layanan DBMS dengan tampilan seperti berikut:

Pertama, kita buat connection profile. Klik Create Profile.

Ada beberapa database engine yang didukung oleh Google Cloud, khususnya untuk MySQL dan PostgreSQL. Disini saya pilih MySQL.

Isikan detail koneksi dari database yang berada di on-premise seperti Hostname/IP Address, port, username, dan password. Untuk connection profile region pilih region dimana Cloud SQL akan ditempatkan. Lalu klik Create.

Selanjutnya, kita tinggal buat job migrasinya! Klik Create a migration job dan isi detail yang terdiri dari 5 tahap. Pertama, isikan nama job, database engine, dan tipe job migrasi. Apa bedanya? untuk Continuous sendiri saat proses migrasi selesai, antara MySQL di on-premise dan Cloud SQL di tujuan akan sama-sama running dan kita bisa verifikasi. Jika ada data masuk di MySQL on-premise, data akan otomatis direplika ke Cloud SQL sampai kita melakukan cutover/promote. Sedangkan on-time, seperti namanya, migrasi hanya akan dilakukan sekali.

Disini saya pilih Continuous.

Langkah kedua pilih connection profile yang telah dibuat sebelumnya.

Langkah ketiga set tujuan instance, disini saya karena belum punya Cloud SQL instance, maka saya pilih New Instance dan set detailnya.

Pada langkah keempat adalah mengatur koneksi apa yang dipilih untuk DBMS melakukan migrasi. Ada tiga pilihan, yaitu IP allowlist, Reverse-SSH tunnel, dan VPC peering.

Ketiganya bisa dipilih salah satu, dan karena disini MySQL on-premise saya simulasikan di VM instance, saya pilih VPC peering.

Langkah kelima bisa direview dan untuk memastikan koneksi aman dan migrasi berhasil bisa Test Job.

Pastikan centang hijau! Klik Create & Start Job untuk mulai migrasi.

Tampilan proses job migrasi

Berikut tampilan Cloud SQL instance.

Bisa verifikasi menggunakan SQL query.

gcloud sql connect mysql-cloudsql -user=root --quiet

Dari tampilan di atas migrasi database kita berhasil! Yeay!

Karena kita pilih Continuous, maka selama job masih running maka data baru yang masuk ke instance akan otomatis direplika ke Cloud SQL. Hal ini biasanya dilakukan untuk melakukan verifikasi dan memastikan data tidak ada yang tertinggal.

Jika sudah selesai kita bisa lakukan cutover dengan klik Promote di job migrasi.

Tunggu sampai selesai dan status akan berubah menjadi Completed.

Migrasi database kita sukses dan selesai!

Sekian!

Sumber: