19 Agustus 2020 5 min read Show Disclaimer TeknoCerdas.com – Salam cerdas untuk kita semua. Pada tulisan ini TeknoCerdas akan membahas bagaimana sinkronisasi ulang data replikasi pada MySQL Master-Slave. Dimana hal ini akan terjadi jika slave mengalami korup atau terjadi lag yang terlalu jauh dari MySQL master karena error yang tidak bisa di-skip. Sinkronisasi ulang data replikasi akan memastikan bahwa data yang ada pada slave memiliki integrasi yang sama dengan master. Sehingga aplikasi yang melakukan query ke Slave server mendapatkan data yang sesuai. Otomasi yang akan dibuat adalah cukup sederhana dengan menggunakan Bash script. Dan diasumsikan arsitektur terdari dari 1 Master dan 1 Slave. Daftar Isi
Persiapan Pembuatan Sinkronisasi Ulang Data ReplikasiSebelum mulai membuat script untuk sinkronisasi ulang data replikasi pada MySQL Master-Slave terdapat beberapa syarat yang harus diperhatikan.
Jika anda tidak memiliki prasyarat diatas silahkan lanjutkan membaca. Karena mungkin banyak informasi baru yang diperoleh meskipun tanpa mencoba langsung tutorial ini. Membuat SSH Key untuk MasterSSH Key ini digunakan untuk melakukan login ke MySQL Slave server sebagai bagian dari otomasi yang akan dilakukan. Generate SSH key baru dikomputer lokal untuk dikirimkan ke server MySQL Master.
Setelah itu private key perlu disalin ke server Master tepatnya dibawah user
Menyalin SSH Publik Key Master ke SlaveBerikutnya adalah menyalin SSH Publik key dari Master ke server Slave agar user ubuntu dari Master dapat login via SSH.
Membuat Script Sinkronisasi Ulang Data ReplikasiScript yang akan dibuat hanya terdiri dari satu file bernama
Buka
Script diatas memiliki sejumlah helpers yang memudahkan eksekusi perintah shell OS atau pada shell MySQL.
Sebagai contoh untuk menjalankan perintah pada server Master cukup gunakan fungsi berikut.
Untuk menjalankan SQL query pada MyQL master gunakan fungsi berikut.
Menjalankan Script Sinkronisasi Ulang Data ReplikasiPastikan variabel pada file telah diset atau gunakan environment variabel untuk menset nilai dari variabel yang diperlukan.
Kemudian panggil fungsi
Cek status dari Master dan Slave apakah status replikasi sudah berjalan.
Dapat terlihat bahwa Slave sudah berjalan dan menunggu data dari Master untuk direplikasi. Melakukan Test Replikasi Master-SlaveBuat sebuah database baru pada Master.
Dapat terlihat sebuah database baru bernama “dari_master”. Pada sisi Slave harusnya database tersebut juga otomatis dibuat.
Dapat terlihat bahwa database “dari_master” sukses direplikasi ke MyQL Slave server. Jika ingin mengulang proses replikasi dari awal cukup jalankan fungsi
Kelemahan proses ini adalah saat pembuatan file backup menggunakan mysqldump mengunci seluruh database di Master. Sehingga akan menyebabkan proses “write” dihentikan di Master. Ini tidak masalah jika ukuran dari database hanya beberapa Gigabytes. Namun jika ukurannya sudah puluhan bahkan ratusan GB proses ini akan menjadi bottleneck. Solusi dari masalah diatas bisa menggunakan tools buatan Percona yaitu XtraBackup. Kelebihan dari Xtrabackup daripada mysqldump adalah tidak perlu ada database locking ketika backup dilakukan. Dengan demikian maka aplikasi dapat terus berjalan – zero downtime. TeknoCerdas akan mengulas penggunaan XtraBackup di waktu yang akan datang. |