TeknoCerdas.com – Salam cerdas untuk kita semua. Dalam sebuah instalasi MySQL replication ketertinggalan atau lag pada Slave sering terjadi. Pada tulisan ini TeknoCerdas akan membahas bagaimana membuat replication lag monitor untuk MySQL dengan PHP dan AWS Lambda. Show Secara singkat replication lag adalah keterlambatan MySQL slave untuk mereplikasi data dari MySQL master. Apa yang terjadi ketika terjadi lag pada MySQL replication? Kemungkinan terburuk adalah aplikasi tidak berfungsi sebagai mana mestinya. Untuk itu peran monitoring untuk MySQL replication penting untuk mengetahui akar masalah. Replication lag monitoring yang akan dibuat dengan model Serverless dengan perhitungan bahwa aplikasi ini akan tidak dibuka setiap waktu. Monitoring terdiri dari sebuah PHP script dan berjalan diatas AWS Lambda dan menggunakan custom runtime Bref PHP. Kriteria dari aplikasi monitoring ini adalah:
Daftar Isi Persiapan Pembuatan MySQL Replication Lag MonitorSebelum mulai membuat PHP script untuk monitoring replication lag pada MySQL Slave 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 MySQL Akun untuk MonitoringScript perlu melakukan beberapa hal yang membutuhkan privilege tertentu. Untuk itu perlu dibuatkan akun baik disisi Master dan Slave. Berikut ini adalah akun yang dibutuhkan. UserServerPrivilegeCatatanmaster_monitorMasterREPLICATION CLIENTUntuk menjalankan 2slave_monitorSlaveSUPERUntuk menjalankan manajemen Slave dan SET global variabelAkun MySQL yang dibutuhkanPada server MySQL master jalankan query berikut.
Pada server MySQL slave jalankan query berikut.
Membuat Script Replication Lag MonitoringScript ini hanya terdiri dari sebuah file PHP. Karena aplikasi yang dibuat cukup sederhana maka view HTML akan digabungkan menjadi satu untuk simplifikasi. Berikut adalah file 3 yang akan menampilkan monitoring replication lag pada Slave.
Script PHP diatas akan mencoba membaca data dari dua MySQL server yaitu Master dan Slave. Pada Master perintah yang digunakan adalah 2 dan pada Slave perintah yang digunakan adalah 5.Jika ada terjadi kasus SQL Thread tidak jalan maka diasumsikan bahwa sedang terjadi masalah di Slave sehingga. Langkah yang dilakukan adalah menginstruksikan Slave untuk melakukan skip 1 perintah SQL yang ada pada relay log. Untuk menjalankan script PHP diatas pada lokal komputer cukup gunakan PHP built-in web server. Pastikan semua environment variabel telah diset sebelum PHP dijalankan.
Setelah itu jalankan PHP web server pada direktori yang sama dengan script tersebut.
Deployment dengan Serverless FrameworkUntuk melakukan deployment ke AWS Lambda akan digunakan Serverless Framework. Selain itu dibutuhkan juga Bref PHP sebagai tool pembantu untuk deployment.
Setelah itu buat sebuah file YAML 6 untuk menyimpan konfigurasi dari Serverless Framework. Gunakan konfigurasi berikut.
Untuk melakukan deployment jangan lupa export dulu environment variabel yang dibutuhkan.
Baru kemudian lanjutkan dengan perintah deploy.
Alamat URL dari aplikasi dapat dilihat pada atribut 7. Buka alamat tersebut pada web browser dan jika semua konfigurasi benar maka tampilannya akan seperti dibawah ini.Tampilan MySQL Replication Lag MonitorMelakukan Tes Replication Lag Pada SlaveKetika terjadi query yang error karena object pada Slave tidak ditemukan atau karena satu dan lain hal maka SQL thread akan berhenti untuk mereplikasi. Sehingga yang terjadi adalah Slave mengalama lag atau tertinggal. Hal ini ditunjukkan dengan status “Slave_SQL_Running” bernilai “No”. Aplikasi monitoring yang dibuat akan otomatis menampilkan pilihan untuk melakukan Skip Error dengan melakukan set 8.Untuk mensimulasikannya jalankan perintah berikut untuk mengentikan thread SQL Query pada Slave. 0Setelah itu refresh aplikasi lag monitoring pada browser. Harusnya akan muncul sebuah tombol untuk melakukan Skip Error. Simulasi Terjadinya Replication Lag pada SlaveJika tombol SKIP ERROR ditekan maka aplikasi akan hal berikut agar Slave kembali berjalan. 1Proses perbaikan hanya melakukan skip 1 perintah SQL. Sehingga jika terjadi banyak error maka cara terbaik adalah melakukan sinkronisasi ulang slave. Share
Rio Astamal Follow Adalah penulis utama di TeknoCerdas.com. Rio Astamal seorang yang sangat antusias dengan web development sejak 2003. Sejak November 2021 Rio Astamal bekerja di Amazon Web Services (AWS) sebagai Developer Advocate untuk Indonesia. Dia mengelola TeknoCerdas.com di waktu senggangnya sebagai salah satu sarana untuk ikut mencerdaskan pembaca dalam dunia IT. |