PENGEMBANGAN API UNTUK MENDUKUNG FAULT TOLERANT JDBC CONNECTOR PADA DBMS MYSQL
LAPORAN TUGAS AKHIR
Disusun sebagai syarat kelulusan tingkat sarjana
oleh: Tania Krisanty / 13504101
PROGRAM STUDI TEKNIK INFORMATIKA SEKOLAH TEKNIK ELEKTRO DAN INFORMATIKA INSTITUT TEKNOLOGI BANDUNG 2008
LEMBAR PENGESAHAN Program Studi Teknik Informatika
PENGEMBANGAN API UNTUK MENDUKUNG FAULT TOLERANT JDBC CONNECTOR PADA DBMS MYSQL
Tugas Akhir Program Studi Teknik Informatika ITB
Oleh Tania Krisanty / 13504101
Telah disetujui dan disahkan sebagai laporan Tugas Akhir di Bandung, pada tanggal 30 Juni 2008
Pembimbing
Achmad Imam Kistijantoro, S.T., M.Sc., Ph.D NIP: 132320559
ii
ABSTRAKSI Fault tolerance merupakan properti yang memungkinkan suatu sistem dapat terus beroperasi meskipun terjadi kegagalan pada sebagian komponennya. Properti fault tolerance sangat diperlukan terutama pada highly available atau life critical system. Untuk membangun sistem yang fault tolerant, salah satunya dapat dilakukan dengan strategi replikasi, yaitu penyediaan beberapa instan identik dari komponen sistem.
Replikasi pada sistem dengan arsitektur three tier memungkinkan pengalihan komputasi ke backup middle tier server ketika terjadi kegagalan pada primary server. Namun yang menjadi masalah adalah ketika koneksi ke database terputus, database server akan membatalkan semua state dan resource transaksi, sehingga backup server akan kehilangan state sementara transaksi yang diperlukan untuk mengambil alih eksekusi dari primary server. Oleh karena itu, diperlukan dukungan database server agar dapat mengetahui role suatu koneksi dan dapat memindahkan state transaksi dari koneksi primary ke backup ketika koneksi middle tier server ke database server terputus. Untuk mendukung replikasi di middle tier, sebuah metode yang memanfaatkan nama user sebagai identifier koneksi telah dimplementasikan. Pada metode ini, setiap koneksi atas nama user yang sama secara otomatis diperlakukan sebagai satu grup replika.
Untuk mengatasi keterbatasan dari implementasi tersebut, pada tugas akhir ini dilakukan
pengembangan
yang
meliputi
perubahan
implementasi
MySQL
Connector/J untuk mendukung pembentukan koneksi backup dengan id unik sebagai identifier koneksi dan perubahan implementasi MySQL untuk mendukung skema replikasi primary-backup. Pengujian pembentukan koneksi backup dan pengujian failover antara primary dan backup telah dilakukan. Dari kedua pengujian tersebut, dapat disimpulkan bahwa pembentukan koneksi backup berhasil ditangani dan failover berhasil dilakukan tanpa mempengaruhi konsistensi database.
Kata kunci : three tier architecture, replikasi, primary-backup, transaksi, fault tolerance, database connector iii
KATA PENGANTAR Puji syukur kepada Tuhan Yang Maha Esa atas berkat rahmat dan kebaikan yang dilimpahkanNya Penulis dapat menyelesaikan tugas akhir yang berjudul „Pengembangan API untuk Mendukung Fault Tolerant JDBC Connector pada DBMS MySQL‟. Laporan ini dibuat untuk memenuhi syarat kelulusan tingkat sarjana Program Studi Teknik Informatika ITB. Penulis mengucapkan terima kasih kepada pihak-pihak di bawah ini atas bantuan yang telah diberikan selama penyusunan tugas akhir: 1. Bapak Achmad Imam Kistijantoro, S.T., M.Sc., Ph.D selaku dosen pembimbing. Terima kasih atas bimbingan, bantuan teknis, dan dukungan moral selama penyusunan tugas akhir. 2. Bapak Ir. Afwarman Manaf, M.Sc., Ph.D, Bapak Dr. techn. Saiful Akbar, S.T., M.T., dan Bapak Bugi Wibowo, S.T., M.T. selaku dosen penguji. Terima kasih atas saran dan masukan untuk tugas akhir ini. 3. Papi dan Mami tercinta, serta Henry. Terima kasih untuk doa dan dukungan selama Penulis melaksanakan studi di Teknik Informatika ITB. 4. Teman-teman Penulis: Harem Beat (Manda, Momon, Anne, Olip, Illa, dan Fitra), Fitri, Robbi, Paul, Abie, Moren, Ray, Cathy, Step, Ririn, Mamat, Berto, serta seluruh IF 2004. Terima kasih atas kebersamaan, pertolongan, dan semangat yang telah diberikan. 5. Kakak dan adik kelas Penulis: Om Sam, Kak Cepy, Roni, Steve, Victor, Adhi, Ibam, Pendi, Anna, Satria, Oon, dan Shieny. Terima kasih atas kebersamaan, pertolongan, dan semangat yang telah diberikan. 6. Rekan-rekan departemen System and Telecommunications PT LAPI Divusi: Bapak Riza, Mas Oon, Mas Lubis, Budi, Arie, dan Kak Octa. Terima kasih atas bimbingan dan pengajaran yang telah diberikan. 7. Petugas Tata Usaha: Bapak Ade, Mbak Tita, Bapak Rasidi, dan Ibu Titi yang selalu bersedia memberi informasi.
Penulis menyadari bahwa tugas akhir ini masih jauh dari sempurna. Oleh karena itu, Penulis mengharapkan saran dan masukan dari semua pihak. Penulis iv
berharap semoga laporan tugas akhir ini dapat bermanfaat bagi Penulis, pembaca, dan semua pihak yang terkait.
Bandung, 25 Juni 2008
Penulis
v
DAFTAR ISI LEMBAR PENGESAHAN ........................................................................................... ii ABSTRAKSI ................................................................................................................ iii KATA PENGANTAR .................................................................................................. iv DAFTAR ISI ................................................................................................................ vi DAFTAR GAMBAR, KODE, DAN TABEL........................................................... viii BAB I PENDAHULUAN ........................................................................................... I-1 1.1
Latar Belakang ............................................................................................ I-1
1.2
Rumusan Masalah ....................................................................................... I-2
1.3
Tujuan ......................................................................................................... I-3
1.4
Batasan Masalah ......................................................................................... I-3
1.5
Metodologi .................................................................................................. I-3
1.6
Sistematika Pembahasan ............................................................................. I-4
BAB II KAJIAN PUSTAKA ..................................................................................... II-1 2.1
Fault Tolerance.......................................................................................... II-1
2.2
RDBMS (Relational Database Management System) ............................... II-2
2.3
JDBC (Java Database Connectivity) ......................................................... II-6
2.3.1
JDBC API .......................................................................................... II-8
2.3.2
JDBC Driver ...................................................................................... II-9
2.3.3
Connection ....................................................................................... II-10
2.3.4
Session.............................................................................................. II-14
2.4
Interaksi MySQL Connector/J dan MySQL pada Pembentukan Koneksi....... .................................................................................................................. II-15
2.4.1
Implementasi Pembentukan Koneksi pada MySQL Connector/J.... II-18
2.4.2
Penanganan Koneksi pada MySQL ................................................. II-19
BAB III ANALISIS DAN PERANCANGAN ......................................................... III-1 3.1
Rancangan Solusi ...................................................................................... III-2
3.1.1
Asumsi .............................................................................................. III-3
3.1.2
Rancangan Solusi Koneksi Backup .................................................. III-4
3.1.3
Struktur Data ..................................................................................... III-5
3.1.4
Rancangan Protokol Komunikasi MySQL Connector/J dan MySQL ..... ........................................................................................................... III-5 vi
3.1.5
Rancangan Solusi Failover ............................................................... III-8
3.1.6
State Diagram Perilaku MySQL Server ........................................... III-9
BAB IV IMPLEMENTASI DAN PENGUJIAN ......................................................IV-1 4.1
Implementasi .............................................................................................IV-1
4.1.1
Lingkungan Pengembangan ..............................................................IV-1
4.1.2
Batasan Implementasi .......................................................................IV-1
4.1.3
Proses dan Hasil Implementasi .........................................................IV-2
4.1.3.1
Implementasi Penanganan Pembentukan Koneksi Baru...............IV-2
4.1.3.2
Implementasi Failover pada Pemutusan Koneksi.........................IV-2
4.2
Pengujian...................................................................................................IV-3
4.2.1
Tujuan Pengujian ..............................................................................IV-3
4.2.2
Lingkungan Pengujian ......................................................................IV-3
4.2.3
Data Uji .............................................................................................IV-4
4.2.4
Kasus Uji Pembentukan Koneksi Backup.........................................IV-4
4.2.4.1
Skenario Pembentukan Koneksi Backup dengan Primary Id yang
Invalid
.......................................................................................................IV-4
4.2.4.2
Skenario Pembentukan Koneksi Backup dengan Primary Id yang
Valid dan Nama User yang Invalid...............................................................IV-4 4.2.4.3
Skenario Pembentukan Koneksi Backup dengan Primary Id yang
Valid dan Nama User yang Valid .................................................................IV-5 4.2.5
Kasus Uji Failover pada Pemutusan Koneksi ..................................IV-5
4.2.5.1
Skenario Satu Primary dan Satu Backup ......................................IV-5
4.2.5.2
Skenario Failover Beruntun..........................................................IV-6
4.2.5.3
Skenario Failover pada Dua Grup ................................................IV-7
4.2.6
Analisis Hasil Pengujian ...................................................................IV-8
BAB V KESIMPULAN DAN SARAN .................................................................... V-1 5.1
Kesimpulan ................................................................................................ V-1
5.2
Saran........................................................................................................... V-1
Daftar Referensi ............................................................................................................ ix Daftar Pustaka ................................................................................................................ x Lampiran A ................................................................................................................ A-1 Lampiran B ................................................................................................................ B-1 Lampiran C ................................................................................................................ C-1 vii
DAFTAR GAMBAR, KODE, DAN TABEL Gambar II-1 Ko munikasi aplikasi client dan database server [BEL07] ......................................................II-4 Gambar II-2 State diagram transaksi [SIL02]..................................................................................................II-5 Gambar II-3 Arsitektur JDBC [HA E02]...........................................................................................................II-8 Kode II-1 Proses load dan register MySQL Connector/J driver................................................................ II-11 Kode II-2 Pembentukan koneksi ke MySQL dengan DriverManager...................................................... II-11 Tabel II-1 Ko mponen JDBC URL .................................................................................................................. II-11 Kode II-3 Pembentukan koneksi ke MySQL dengan DataSource ............................................................ II-13 Tabel II-2 Properti standar data source .......................................................................................................... II-13 Gambar II-4 Interaksi MySQL Connector/J dan MySQL pada pembentukan koneksi ......................... II-15 Tabel II-3 Body dari Handshake Initializat ion Packet ................................................................................ II-16 Tabel II-4 Body dari Client Authentication Packet...................................................................................... II-17 Gambar III-1 St ruktur data mult imap .............................................................................................................. III-5 Tabel III-1 Body dari Client Authentication Packet ..................................................................................... III-6 Gambar III-2 State diagram perilaku MySQL server ................................................................................... III-9 Tabel IV-1 Tabel Account................................................................................................................................. IV-4 Tabel IV-2 Hasil Akhir Skenario Pertama ..................................................................................................... IV-6 Tabel IV-3 Hasil Akhir Skenario Kedua ........................................................................................................ IV-7 Tabel IV-3 Hasil Akhir Skenario Ketiga ........................................................................................................ IV-8 Kode B-1 Pembentukan koneksi ke JDBC URL.............................................................................................B-1 Gambar B-1 Diagram kelas Driver ....................................................................................................................B-1 Gambar B-2 Diagram kelas Connection ...........................................................................................................B-2 Kode B-2 Pembentukan objek Connection ......................................................................................................B-2 Gambar B-3 Diagram kelas Util.........................................................................................................................B-3 Kode B-3 Penanganan pembentukan objek dengan konstruktor yang diberikan ......................................B-3 Kode B-4 Pembentukan objek JDBC4Connection .........................................................................................B-3 Kode B-5 Pembentukan koneksi ke MySQL server .......................................................................................B-3 Kode B-6 Pembentukan channel Input/Output ke MySQL server ...............................................................B-4 Gambar B-4 Diagram kelas MysqlIO ...............................................................................................................B-4 Gambar B-5 Diagram kelas SocketFactory ......................................................................................................B-4 Kode B-7 Pembentukan koneksi melalui socket .............................................................................................B-5 Kode B-8 Handshaking dan otentikasi dengan MySQL server ....................................................................B-6 Kode B-9 Secure authentication dengan MySQL server ...............................................................................B-7 Kode C-1 Program utama MySQL server ........................................................................................................C-1 Kode C-2 Penanganan pembentukan koneksi dari client...............................................................................C-2 Kode C-3 Pembuatan thread untuk koneksi client ..........................................................................................C-3 Kode C-4 Penanganan koneksi client................................................................................................................C-3
viii