Migrasi dari On Premise Database (MySQL di Compute Engine) ke MySQL di Cloud SQL

Bisa untuk 2 use case, yang ini untuk migrasi menggunakan database migration service, jadi akan membuat database baru, dan use case lainnya untuk migrasi ke database yang sudah ada

Opsi kenapa kita pakai continous (CDC)? Bisa aja buat mempersiapkan seluruh keperluan, jadi kita masih mengambil data dari sumber dan mengirimkan secara real-time ke cloud, sebelum pada akhirnya kita mengirimkan request asli ke cloud dan mematikan database sumber

Link video:  Migrating On-Prem MySQL to Google Cloud SQL | Google Cloud Migration | GCP Database Migration


posisi nya dia punya VM dengan instance MySQL (cek di aplikasi workbench nya), trus ada 2 database

migration dan onpremmigration, yang onprem migration tabel nya udah di-insert


Masuk ke service Database Migration

Klik Connection profiles buat ngebikin koneksi untuk migrasi sumber ke destinasi nya

Klik create profile, trus pilih jenis database nya (MySQL) karena di VM (onprem) nya itu MySQL

isi nama profile, anggap aja kek nama koneksi aja, otomatis buat id juga

isi hostname, biarin port nya karena default MySQL

isi juga kredensial yaitu username dan password nya


Inget itu cuma buat profile atau koneksi on premise nya doang, sekarang kita set up jembatan untuk target migrasi nya


Klik migration jobs

lalu klik create migration jobs

beri nama migration job name nya, otomatis jadi migration job id juga

trus tentuin mesin sumber nya apaan

Tentukan tipe migrasi nya, untuk Continous itu kayak CDC, ada perubahan maka di upload, dengan kata lain ini tuh real-time synchronization. Ada juga tipe One-time, full migrasi sekali doang secara keseluruhan

Klik save and continue


Lanjut ke step define a source, ini kita pilih profile yang tadi dah dibuat, otomatis sistem nya bakalan ngenanlin si sumber, kayak hostname/IP, port, username dan password dll

Save and continue


Sekarang di step create a destination.

# Note: di tahap ini, bukan untuk ngisi koneksi existing database, melainkan tahapan ini akan membuat instance baru

Masukin password cloud instance nya

pilih versi database


Next ke tahap define connectivity method

Gw gak ngerti ini ada 3 opsi di method nya

1. IP allowlist, Access from external networks, not secured

2. Reverse-SSH tunnel via cloud-hosted VM, Access from external-networks, secure, low throughput

3. VPC peering, Access a data source hosted in Google's network

Trus di video ngisi VPC peering, kemudian ada opsi dropdown lagi buat milih sumber VPC nya, dan dia pilih default


Last step, Test and create migration jobs

Pastikan semua nya udah sesuai, mesin sumber dan destinasi, tipe, port si sumber, dll


Di video ini ada error MySQL binlog is configured incorrectly on the source database. Solusi nya perlu kita define log-bin dan server nya di file conf.


ke SSH, trus vim, pastikan udah exit dari command SQL nya

vim /etc/mysql.conf.d/mysql.cnf

di bagian [mysqld] tambahin:

log-bin=mysql-bin

server-id=1


save, restart

systemctl restart mysql.service


On premise database (in VM) 34.69.7.224

nama job migrate nya: migrationonprim

nama koneksi profile: onprimemysql


ada database migration dan table persons

ada database onprimmigrations dan table person dan 1 row data


Cloud SQL database (newly created instance) 34.136.234.233

nama instance nya: migrationonprim


Katanya sih kita bisa tetap masukin data ke on prem DB nya dan nanti akan terkirim juga ke Cloud SQL instance karena job type yg kita pilih tadi itu continous. 


Alhasil nanti klo udah selesai, di tampilan Cloud SQL instance nya bakalan jadi nama_instance-master sebagai sumber (external primary), dan dibawahnya akan ada nama_instance sebagai read-replica, sesuai dengan hostname/ip address nya. Kita gak bisa bikin database baru di instance Cloud SQL nya karena migrate ini bersifat read only/replica, jadi gak ada akses write


Jadi gimana dong caranya klo kita mau pakai si Cloud SQL instance nya sebagai database utama biar bisa akses read and write? Kita buka Database Migration service nya, trus klik Promote, nanti akan ada konfirmasi untuk memutus koneksi dengan sumber dan membuat database instance nya bisa memiliki akses write.


Yang tadinya ada nama_instance di bawah nama_instance-master, sekarang jadi terpecah dan menjadi individu, gak ada lagi terhubung dari yang awalnya di Cloud SQL gak bisa akses write, sekarang dah aman.


Karena job migration dan profile nya udah selesai dan gak akan dipakai lagi, udah bisa dihapus. efek nya juga akan menghapus nama_instance-master, kata video nya sih gitu, tapi dia malah ngapus manual karena belum berhasil wwkkw

Komentar

Postingan populer dari blog ini

What have i learn in almost 3 weeks?

Bikin ETL Sederhana Menggunakan Python dan PostgreSQL

Intensity atau Consistency?