Jurnal Database Replication
Jurnal Database Replication
Skripsi
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Informatika
Disusun Oleh:
Rachel Kurniawati
035314066
TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2008
IMPLEMENTATION OF REPLICATION METHOD
OF DISTRIBUTED DATABASE ON
MYSQL 5.0
(Savings And Credit Cooperation)
A Thesis
Presented as Partial Fulfillment of the Requirements
To Obtain the Engineering Bachelor Degree
In Informatics Engineering
By:
Rachel Kurniawati
035314066
” dan ”
(Filipi 3: 13 – 14)
vi
HALAMAN PERSEMBAHAN
Teruntuk:
vii
INTISARI
pedesaan, namun ketersediaan data menjadi masalah karena koperasi pusat dan
data. Dengan replikasi master-master maka koperasi pusat maupun cabang dapat
melakukan perubahan data dan perubahan data tersebut akan dikirimkan ke cabang
lain dimana data tersebut direplikasi. Keuntungan lain dari replikasi adalah
viii
ABSTRACT
lower middle income. Savings and credit cooperation make branchs to serve the rural
people, but the availability become a problem because the central dan branch need the
sharing data.
problem. With master-master replication the central and branch can make a changes
to database and the changes will be send to other branchss where the data is
replicated. The other benefit from replication is high performance because system
ix
KATA PENGANTAR
Puji dan syukur kepada Tuhan Yesus Kristus atas berkat, anugerah dan
MYSQL 5.0“ sebagai salah satu syarat untuk memperoleh gelar Sarjana Teknik (S.T.)
Dalam penelitian ini sampai pada penyusunan skripsi ini, penulis banyak
mendapat bantuan dari berbagai pihak. Pada kesempatan ini, penulis ingin
2. Ibu Agnes Maria Polina, S.Kom., M.Sc., selaku Ketua Jurusan Teknik
sekaligus Tugas Akhir, terimakasih atas ilmu, ide, masukan yang diberikan.
6. Bapak Emanuel Bele Bau, SPd, atas bantuannya saat persiapan ujian.
7. Staff dosen Teknik Informatika atas ilmu yang telah diberikan selama menjalani
akhir ini.
x
8. Staff Sekretariat Teknik yang telah membantu proses administrasi akademik.
9. Terima kasih yang sebesar-besarnya untuk Pak Daniel dan Bu Rido atas segala
10. Untuk mama dan papa, terima kasih atas perhatian, cinta kasih, doa dan usaha
11. Buat mas Budi, makasih banget buat cinta, dukungan, semangatnya buat rachel.
Selalu ngingetin buat tugas akhir dan mau nemenin lembur ngerjain TA. Makasih
12. Makasih juga buat Ibu di Klaten, yang gak pernah capek dan bosan ngingetin dan
13. Makasih buat Sarah yang udah mau berbagi komputer, printer, tinta, kertas. Dah
ngajarin aku buat fungsi, udah memberi semangat walaupun dengan sedikit
SEMANGAT!!!!
14. Buat Dea, dah mau denger semua unek-unek ku, buat masukan, dukungan kamu,
buat pinjeman komputer, printer jaman Pra TA dulu. Hehe.....(Ayo kapan lulus’e?
Kutunggu traktirannya).
15. Gepeng, Jansen, Acit, Dian makasih buat tukar pikiran dan pengalamannya,
16. Buat Albert (Pak D), Merry, Dea, Acit, Sarah yang udah bantu angkut-angkut
xi
17. Ucup, Dian, Acit, Jun, Pak D, Merry, Gepeng, Dea, Sarah yang udah nungguin
proses ujian.
18. Terima kasih buat temen-temen lamaku (Christin, Elyta, X-Ray, K’ Hermina, K’
Yelly, Ika, Nova, Rini dan Yanti) yang masih kontak sampe sekarang, buat
19. Buat Nang uda Ester dan keluarga, makasih udah menganggap Rachel seperti
21. Keluarga besar GPdI Calvary Chapel Surodadi, buat doa dan semangatnya.
skripsi ini, penulis memohon kritik dan saran yang sifatnya membangun. Penulis
memiliki harapan yang sangat besar, semoga skripsi ini dapat bermanfaat bagi
Penulis
Rachel Kurniawati
xii
DAFTAR ISI
BAB I PENDAHULUAN..................................................................................... 1
1.1. Latar Belakang Masalah ........................................................................... 1
1.2. Rumusan Masalah .................................................................................... 2
1.3. Batasan Masalah ....................................................................................... 3
1.4. Tujuan Penelitian...................................................................................... 4
1.5. Metodologi Penelitian .............................................................................. 4
1.6. Sistematika Penulisan ............................................................................... 6
xiv
4.2.2. Mengkonfigurasi My.ini ......................................................... 75
4.2.3. Membuat user replikasi ........................................................... 77
4.2.4. Menghubungkan master dengan slave .................................... 78
4.2.5. Menjalankan Slave .................................................................. 80
4.3. Implementasi Sistem............................................................................... 83
4.3.1. Login User............................................................................... 83
4.3.2. Keanggotaan ............................................................................ 85
4.3.3. Tabungan ................................................................................. 88
4.3.4. Penarikan ................................................................................. 91
4.3.5. Pinjaman .................................................................................. 93
4.3.6. Angsuran ................................................................................. 95
4.3.7. Akun Utama ............................................................................ 97
4.3.8. Preferensi................................................................................. 97
4.3.9. Organisasi ................................................................................ 98
4.3.10. Laporan ................................................................................... 98
BAB V ANALISIS HASIL ...................................................................................105
5.1. Skenario ................................................................................................105
5.2. Analisis Teknologi................................................................................113
5.3. Kelebihan dan Kekurangan ..................................................................114
5.3.1. Kelebihan .......................................................................................114
5.3.2. Kekurangan ....................................................................................115
BAB VI KESIMPULAN DAN SARAN ..............................................................116
6.1. Kesimpulan ...........................................................................................116
6.2. Saran .....................................................................................................116
DAFTAR PUSTAKA ............................................................................................117
xv
DAFTAR GAMBAR
xvi
Gambar 4.1 Arsitektur Replikasi ........................................................................ 68
Gambar 4.2 Form Login...................................................................................... 83
Gambar 4.3 Form Tabungan ................................................................................. 88
Gambar 4.4 Form Penarikan ................................................................................ 93
Gambar 4.5 Form Pinjaman .................................................................................. 94
Gambar 4.6 Form Angsuran.................................................................................. 95
Gambar 4.7 Form Akun Utama............................................................................. 97
Gambar 4.8 Form Preferensi ................................................................................. 97
Gambar 4.9 Form Organisasi ............................................................................... 98
Gambar 4.10 Laporan Kredit Umum ................................................................... 99
Gambar 4.11 Laporan Kredit Umum format Excel ............................................. 99
Gambar 4.12 Laporan Tabungan Wajib ............................................................... 100
Gambar 4.13 Laporan Tabungan Wajib format Excel ......................................... 100
Gambar 4.14 Laporan Tabungan Sukarela ........................................................... 101
Gambar 4.15 Laporan Tabungan Sukarela format Excel...................................... 101
Gambar 4.16 Laporan Penarikan Tabungan.......................................................... 102
Gambar 4.17 Laporan Penarikan Tabungan format Excel.................................... 102
Gambar 4.18 Laporan Pinjaman ........................................................................... 103
Gambar 4.19 Laporan Pinjaman format Excel...................................................... 103
Gambar 4.20 Laporan Angsuran ........................................................................... 104
Gambar 4.21 Laporan Angsuran format Excel .................................................... 104
Gambar 5.1 Form keanggotaan. .......................................................................... 107
Gambar 5.2 List Anggota ................................................................................... 107
Gambar 5.3 Form Simpanan ............................................................................... 108
Gambar 5.4 Lihat Simpanan Wajib .................................................................... 108
Gambar 5.5 Form Simpanan Sukarela ............................................................... 109
xvii
Gambar 5.6 Lihat Simpanan Wajib..................................................................... 110
Gambar 5.7 Form Penarikan ............................................................................... 110
Gambar 5.8 Form Penarikan ............................................................................... 111
Gambar 5.9 Form Peminjaman ........................................................................... 112
Gambar 5.10 Form Angsuran................................................................................ 112
Gambar 5.11 Form Peminjaman ........................................................................... 113
Gambar 5.12 File binary ...................................................................................... 115
xviii
DAFTAR TABEL
xix
BAB I
PENDAHULUAN
Kumpulan item data yang saling berhubungan sering dikenal dengan istilah
database. Database merupakan hal yang sangat penting bagi aspek kehidupan
karena merupakan dasar bagi tersedianya informasi. Database yang relevan, akurat
dan tepat pada waktunya akan sangat menentukan kualitas suatu informasi.
bidang jasa untuk masyarakat terutama yang ada di golongan menengah ke bawah.
Dari sekian banyaknya koperasi tersebut tentunya ada koperasi yang masih dalam
satu yayasan atau dengan kata lain satu koperasi memiliki satu atau lebih cabang yang
letaknya terpisah secara geografis. Namun sangat jarang koperasi pusat dan cabang
tersebut menggunakan data secara bersama. Apabila data di pusat dan cabang dapat
digunakan bersama akan sangat menguntungkan bagi pihak koperasi maupun pihak
anggota yang terdaftar. Data koperasi yang berada di pusat dapat diakses di cabang
1
2
anggota terdaftar di pusat tidak hanya dapat melakukan transaksi di koperasi pusat
fasilitas baru yaitu transfer atau mengirim uang. Dalam penggunaan data secara
bersama diperlukan suatu metode untuk mendistribusikan data. Salah satu cara
Apabila terjadi perubahan data, maka semua data replika juga akan di-update.
Sehingga dengan metode replikasi ini, maka antara data di pusat dan di setiap cabang
akan selalu sama. Keuntungan lain dari metode ini adalah ketersediaan data dapat
dipenuhi. Kantor pusat dapat mengakses data yang ada di cabang maupun sebaliknya,
dan apabila terjadi kerusakan atau kehilangan data maka masih ada data replika di
cabang lain.
Studi kasus pada tugas akhir ini adalah di koperasi dimana sistem yang akan
ini adalah:
4. Data pinjaman yang diinputkan oleh pegawai atau karyawan sudah mendapat
Manfaat bagi pihak koperasi adalah dapat dengan mudah mengakses data
Development Life Cycle (SDLC), yang terdiri dari tiga tahapan utama yaitu :
1. Analisis
Tujuan dalam tahap ini adalah untuk memahami sistem yang sedang
berjalan saat ini, mengidentifikasi masalah dan mencari solusinya. Kegiatan yang
2. Desain
Tujuan dalam tahap perancangan untuk mendesain sistem baru yang dapat
ini adalah :
3. Implementasi
Pada tahap ini akan dibuat sistem yang baru dan dapat berjalan secara
optimal. Kegiatan yang dilakukan adalah koding, testing kemudian dilakukan analisis
hasil.
6
BAB I. PENDAHULUAN
sistematika penulisan
Untuk menjelaskan secara rinci tentang analisa dan desain sistem yang
akan dibangun.
BAB IV IMPLEMENTASI
Di sini akan memuat analisa terhadap sistem yang telah dibuat, apa
LANDASAN TEORI
2.1. Database
disimpan bersama-sama untuk melayani satu atau lebih aplikasi secara optimal
atau dengan kata lain suatu database merupakan serangkaian file yang secara logik
dikurangi.
yang mengerjakan fungsi penciptaan dan peremajaan file, mencari data dan
menghasilkan laporan. Semua data dalam rangkaian file dapat dijangkau oleh
kemungkinan satu data disiapkan dalam beberapa file berbeda untuk memenuhi
8
9
yang saling berelasi secara logis, yang secara fisik tersebar/terdistribusi di seluruh
jaringan kumputer.
Dengan tujuan agar terjadi pertukaran informasi antar komputer dan kerjasama
antara komputer yang satu dengan komputer yang lain untuk mencapai suatu
fungsi. Salah satu topologi untuk menghubungkan komputer dalan jaringan adalah
tiap-tiap site dapat mengakses database lokal (database pada site itu sendiri)
maupun database global (database yang terletak pada site yang berbeda).
10
DB, CPU dan I/O tidak seberat seperti DB pusat. Data yang dipakai untuk
dapat membuat beberapa site tidak dapat diakses. Jika data direplikasi ke
secara lokal di setiap site. Dari biaya komunikasi data, akan lebih murah
untuk memelihara sistem komputer dalam satu site dan menyimpan data
secara lokal.
ini.
sebagai berikut :
koordinasi.
5. Perubahan yang sulit : tidak ada tool atau metodologi untuk membantu
yaitu partisi dan replikasi. Dalam skema partisi, database dibagi ke dalam
sebuah replika dari database disimpan di lebih dari satu site tetapi tidak di semua
site.
pemakainya. Sebuah DDBMS terdiri atas sebuah logical database yang dibagi
kedalam sejumlah fragments. Tiap fragments disimpan pada satu komputer atau
tersebut terhubung oleh suatu jaringan komunikasi. Tiap site (tempat) mampu
User tidak perlu tahu bahwa data didistribusi, user merasakan databsenya
terhadap perintah yang bebas digunakan pada lokasi data maupun pada
sistem dimana operasi berjalan, artinya user tidak perlu tahu pada lokasi
mana potongan data tersimpan, akan tetapi user harus tahu bagaimana data
di fragmentasi.
(data merupakan satu kesatuan utuh kembali) dengan kata lain user tidak
dapat ditampilkan pada level fisik dengan beberapa salinan (replika) yang
berbeda dari objek tersimpan yang sama, pada beberapa sisi yang berbeda.
item data.
tidak terdistribusi) sama seperti jika transaksi tersebut dieksekusi pada satu
abort.
data karena dapat diatur untuk meyediakan akses data bagi user kapanpun dan
diantara hasil duplikat secara umum, yang satu salinan utama dan berbagai salinan
dengan cara yang sesuai yaitu tanpa menggunakan perintah dua antar muka.
Penyebaran bisa meningkat, ketika berdasarkan useran variasi (data dikirim dari
salinan utama ke salinan sekunder). Alternatif lain seluruh salinan sekunder secara
salinan utama.
pada tempat yang berbeda dalam jaringan. Sebelum terhubung, data replicator
akan membuat salinan database yang akan digunakan. Hal tersebut agar
ketersediaan data dalam kasus kegagalan, jika terjadi tubrukan replika, suatu
bahwa ada replikasi pada database. Sistem mengetahui data mana yang direplikasi
ketika transaksi meminta untuk membaca sebuah data, sistem mengambil sebuah
data dari replika terdekat, ketika transaksi meminta untuk mengubah data, sistem
17
mengubah semua data pada semua replika. Bagian sistem bertanggung jawab
control).
1. Replikasi Synchronous
commit). Salinan data di slave diupdate dengan segera ketika data sumber
Pada gambar di atas, query dieksekusi di master dan slave, dan dicommit
2. Replikasi Asynchronous
database sumber diupdate sehingga terjadi delay beberapa menit atau bahkan
sistem replikasi, dan berapa cepat jaringan dapat melewatkan data untuk
dipindahkan.
Data terdistribusi tidak lepas dari kepemilikan data itu sendiri, yaitu sites
mana yang memiliki hak untuk mengupdate data. Tipe utama dari kepemilikan
1. Master/slave
Pada tipe ini, data direplikasi secara asynchronous pada sebuah site
subscribe terhadap data yang dimiliki oleh site utama tersebut, yang berarti
bahwa site-site lain tersebut hanya menerima read-only copies pada sistem
lokal mereka. Tiap site dapat menjadi master site bagi sekumpulan data (data
sets) yang tak overlapping tetapi hanya diperbolehkan satu site saja yang dapat
memperbarui master copy dari suatu data sets, sehingga konflik dapat
dihindari.
2. Workflow
metode ini juga menghindari konflik update data yang terjadi pada waktu yang
bersamaan, yaitu dengan cara yang lebih dinamis. Pada tipe Workflow ini,
sistem mengijinkan hak untuk memperbarui replikasi data berpindah dari satu
20
site ke site lain. Meskipun demikian pada satu waktu tertentu, hanya boleh
3. Update-anywhere
Pada kedua tipe sebelumnya, pada satu waktu yang sama hanya sebuah
site saja yang boleh memperbarui data. Seluruh site yang lain hanya memiliki
akses read-only pada replikasinya. Tetapi pada tipe ini proses update bisa
peer dimana banyak site mempunyai hak yang sama untuk memperbarui
replikasi data. Pada metode ini juga mengijinkan site-site lokal memiliki
1. Performa
karena data diletakan dekat dengan user dan paralel DDBMS juga
dimungkinkan. Unjuk kerja juga akan meningkat karena tiap site hanya
menangani sebagian dari seluruh database, maka tidak mungkin CPU dan alat
2. Perbedaan Geografis
database utama mengalami kegagalan maka masih ada copy dari database
multipel index pada sebuah tabel tunggal. Menyebarkan index melalui dua
2.4.4. Kelemahan
query dari master ke slave dengan delay, sehingga slave mencari record
2.5.1. Privelege
user.
by ‘password_repl’;
23
atau CREATE USER. GRANT untuk membuat user sekaligus dengan previlage,
sedangkan CREATE USER untuk membuat user tanpa previlege (username dan
'my_password';
Atau :
FLUSH PRIVILEGES;
Membuat database
Mekanisme replikasi yang didukung oleh MySQL adalah satu arah, yaitu
Sebuah mesin bertindak sebagai master server dan satu atau lebih mesin
bertindak sebagai slave server. Master menyimpan setiap perubahan yang terjadi
ke dalam databes dengan file binary log. File binary log merekam semua
sejak pertama kali replikasi dikonfigurasi dan dimulai. Master juga membuat dan
memaintain sebuah indek file untuk menjaga track dari rotasi binary log yang
dibuat. Slave server membaca binary log dan melakukan perubahan terhadap
data.
master dan dua thread di slave. Ketika START SLAVE dijalankan pada master
25
slave, slave membuat sebuah thread yang disebut I/O thread untuk
yang diupdate dalam binary log. Sedangkan master membuat sebuah thread
untuk mengirimkan binary log ke slave. Thread ini dapat diidentifikasikan sebagai
Binlog Dump yang dapat dilihat dari SHOW PROCESSTLIST pada master.
Thread I/O pada slave membaca update yang master Binlog Dump kirimkan dan
mengkopi ke lokal file yang diketahui sebagai relay logs di dalam direktori
slave/data. Thread ke tiga adalah SQl thread yang dibuat slave untuk membaca
auto_increment.
Select * from x;
26
ID Nama
1 aaa
3 bbb
5 ccc
Select * from x;
ID Nama
2 xxx
4 yyy
6 zzz
27
2.6. Web
World Wide Web (WWW) merupakan Web yang saling terhubung pada
menggunakan protokol HTTP (HyperText Transfer Protokol). Dan saat ini sudah
banyak berkembang skrip untuk mendukung bahasa HTML, seperti PHP, JSP,
Arsitektur aplikasi web ditunjukkan pada gambar 1.1, sebuah web server
Xitami. Contoh middleware : PHP, JSP, ASP, Perl. Sedangkan yang termasuk
2.7. JSP
JSP adalah suatu teknologi web berbasis bahasa pemrograman java dan
Enterprise Edition). JSP sangat sesuai dan tangguh untuk menangani presentasi di
lengkap dan portabilitas serta memberikan sarana untuk membuat suatu aplikasi
yang memisahkan antara bussines logic (sistem), presentasi dan data. JSP
memerlukan JVM (Java Virtual Machine) supaya dapat berjalan, yang berarti
Selain JVM, JSP juga memerlukan server yang disebut Web Container.
Servlet adalah teknologi java yang memungkinkan pembuatan halaman web yang
bersifat dinamis dan diproses pada sisi server. Pada saat diproses di sisi server,
file JSP sebenarnya dikompilasi menjadi servlet yang merupakan program java
yang berjalan di server. Perlu diketahui bahwa servlet merupakan teknologi java
permintaan halaman web melalui protokol HTTP dalam bentuk JSP (file
berekstensi .jsp) permintaan ini akan disampaikan ke web server. Kemudian web
server mengambil dokumen JSP dan mengirimkan ke JSP Servlet Engine. Bagian
29
disampaikan oleh web server ke client yang memintanya. Kode HTML ini
selanjutnya diproses oleh browser sehingga user bisa memperoleh informasi dari
halaman web yang dikehendaki. Perlu diketahui bahwa pengompilasian kode JSP
hanya dilakukan sekali saja, yaitu pada pemanggilan dokumen pertama kali. Oleh
karena itu user yang memanggil dokumen yang baru saja dibuat atau diperbarui
akan merasakan bahwa tanggapan terhadap permintaan halaman web cukup lama.
HTML maupun WML, namun juga dapat berdiri sendiri dimana sintaks JSP diatur
sesuai dengan spesifikasi JSP yang dapat di dowload dari www.jcp.org . JSP
a. Direktif
seperti deklarasi class atau method. Setting yang dilakukan oleh direktif
gambaran, pada source code java sering kita lihat baris berikut :
import java.io.*;
import java.sql.*;
Pada JSP programer masih bisa melakukan hal tersebut tetapi tentu saja
direktif.
…%>
b. Elemen skripting
Skriplet
<%
For(int i=0;i<10;i++)
%>
31
Deklarasi
method, contoh :
Ekspresi
Kode di atas akan menampilkan tanggal dan waktu saat ini pada
layar browser.
c. Action
Adalah tag yang berfungsi untuk menjalankan suatu operasi yang spesifik,
seperti :
Penanganan Java Applet dan Java bean pada suatu halaman JSP
Atau
/*
32
Pada bagian ini bisa diisi dengan JSP action yang lain
*/
</jsp:nama_aksi>
database untuk berbagai jenis database. Jadi konsep JDBC hampir dengan ODBC
Secara umum terdapat dua layer utama yang harus diapahami jika hendak
menggunakan JDBC yaitu layer driver dan layer aplikasi. Layer driver bertugas
adalah bagian dari JDBC yang mesti digunakan oleh programer. Layer aplikasi
diterapkan sebagai class java.sql.* dalam JDK (Java Developer’s Kit). Dengan
Transaksi yang dilakukan di koperasi cabang dan pusat masih terpisah satu
sama lain. Anggota koperasi hanya dapat melakukan transaksi dimana angota
33
34
a. Karyawan Koperasi
b. Manager
digunakan.
Agar data yang ada di pusat dapat diakses di cabang atau sebaliknya,
Tabel yang akan direplikasi antara lain tabel anggota, tabungan, tabungan
Sedangkan tabel pemakai dan tabel jurnal tidak akan direplikasi karena
dalam pembuatan laporan setiap cabang tidak memerlukan data dari cabang lain.
Eksternal
Input Output
Sistem
no_telpon, jenis_kelamin,
profil anggota
pekerjaan, status_keanggotaa,
biaya_notaris
Kode_anggota, tangggal,
Laporan
kode_akun, bulan
b) Context Diagram
c) Diagram Berjenjang
d) Overview Diagram
DFD Level 0
Data Anggota
1
Formulir Pendaftaran
Tab Pokok
Keanggotaan
Tabungan
Kode penarikan,
Kode anggota,
tanggal ambil, kode akun, saldo tab sukarela, besar penarikan
keterangan,besar penarikan 3
Formulir Penarikan
Penarikan Data Penarikan
Penarikan
Data tagian
Tagihan
Data tagian
Data Angsuran
Angsuran
8 Data Penarikan
Data Angsuran
Data Simpanan
Laporan Data Pinjaman
Data Anggota
Kode akun
7
kebijakan Kebijakan
Data kebijakan
Kebijakan
6
Data Akun Data Akun Akun Utama
Akun Utama
Preferensi
Jurnal
2) Desain Database
simpanan_pokok Double - Ya
simpanan_wajib Double - Ya
47
Simpanan_sukarela Double - Ya
pinjaman Double - Ya
cabang.
No_telpon Varchar 15 Ya
Saldo Double - Ya
koperasi.
tab_wajib Double - Ya
tab_sukarela Double - Ya
bulan_tabwajib Double - Ya
51
penarikan tabungan.
peminjaman.
angsuran.
Denda Double - Ya
pinjaman.
Tabel-tabel tersebut direplikasi karena setiap cabang akan memakai data tersebut
untuk ditambah, diupdate atau hanya dibaca saja. Sedangkan tabel user dan jurnal
tidak direplikasi karena data tersebut hanya akan dipakai oleh koperasi cabang itu
sendiri.
56
adalah :
[mysqld]
log-bin=PL-12-bin
binlog-do-db=ksp
log_bin_trust_function_creators=1
auto_increment-increment=2
auto_increment_offset=2
57
server-id=2
relay-log-index=PL-12-relay-bin
replicate-do-table=ksp.anggota
replicate-do-table=ksp.cabang
replicate-do-table=ksp.akun_utama
replicate-do-table=ksp.angsuran
replicate-do-table=ksp.kebijakan
replicate-do-table=ksp.penarikan
replicate-do-table=ksp.pinjaman
replicate-do-table=ksp.tabungan
replicate-do-table=ksp.tagihan
Konfigurasi master2:
[mysqld]
log-bin=PL-12-bin
binlog-do-db=ksp
log_bin_trust_function_creators=1
auto_increment-increment=2
auto_increment_offset=2
server-id=2
relay-log-index=PL-12-relay-bin
replicate-do-table=ksp.anggota
replicate-do-table=ksp.cabang
replicate-do-table=ksp.akun_utama
replicate-do-table=ksp.angsuran
replicate-do-table=ksp.kebijakan
58
replicate-do-table=ksp.penarikan
replicate-do-table=ksp.pinjaman
replicate-do-table=ksp.tabungan
replicate-do-table=ksp.tagihan
update data.
CHANEG MASTER TO
master_host=’172.21.205.31’,
Master_port=3300,
59
Master_user=’ksp’,
Master_password=’ksp’,
Master_log_file=’PL-12-bin.000001’,
Master_log_pos=98;
CHANEG MASTER TO
master_host=’172.21.205.31’,
Master_port=3300,
Master_user=’ksp’,
Master_password=’ksp’,
Master_log_file=’PL-12-bin.000001’,
Master_log_pos=98;
1. Halaman Login
2. Menu Anggota
3. Tabungan
4. Penarikan
5. Pinjaman
6. Angsuran
7. Akun Utama
8. Preferensi
9. Organisasi
10. Laporan
pinjaman, angsuran pokok dan bunga pinjaman beserta sisa pokok dan bunga
pinjaman. Input untuk laporan ini berupa bulan. Sehingga dari laporan ini dapat
65
diketahui pada bulan yang diinginkan anggota yang sudah mengangsur atau
belum.
No Kode Tabungan Tgl Simpan Kode Anggota Nama Anggota Tab Wajib
IMPLEMENTASI
Pada bab ini membahas tentang implementasi sistem berdasarkan pada analisa
dan perancangan yang telah dibuat pada bab sebelumnya. Perangkat lunak yang
4. J2SDK 1.6
2. Memori : Kingston 1 GB
3. Hardisk : Seagate 80 G
MySQL server pada cabang 1 akan menjadi Master 1 – Slave 2 dan MySql
server pada cabang 2 akan menjadi Master 2 – Slave 1. Master 2 akan menjadi Slave
1 ketika Master 1 melakukan perubahan dan sebaliknya Master 1 akan menjadi Slave
2 bagi Master 2. Untuk memahami arsitektur tersebut lihat gambar 4.1. dari gambar
67
68
tersebut juga dapat dilihat konfigurasi IP dan tabel-tabel yang akan direplikasi
Cabang 2
Cabang 1 172.21.205.28 172.21.205.31 MySQL Server
MySQL Server (Master 2 - Slave 1)
(Master 1 – Slave 2) Server-id=2
Server-id=1 inc=2 User
inc=2 Offs=2
Offs=1 Jurna l
Prefer ensi
Koperasi
User Replikasi
Replikasi
Jurn al Tabel
Prefer ensi
Anggota
Koperasi
Tabungan
Tabel Tabungan_detail Anggota
Penarikan Tabungan
Angsuran_detail Tab ungan _deta il
Pinjaman Penarika n
AkunUtama Angsuran_detail
Pinjaman
Koperasi AkunUtam a
Kebijakan
Angsuran Kebijakan Koperasi
Tagihan
Angsuran
Tagiha n
Tabel
Tabel
5. Menjalankan Slave.
69
Membuat database di setiap cabang dengan struktur tabel yang sama. Query
1. Tabel anggota
2. Tabel tabungan
3. Tabel tabungan_detail
4. Tabel penarikan
5. Tabel pinjaman
6. Tabel tagihan
7. Tabel angsuran
8. Tabel Angsuran_detail
9. Tabel jurnal
[mysqld]
# Konfigurasi Master 1
log-bin=PL-9-bin
binlog-do-db=ksp
log_bin_trust_function_creators=1
auto_increment-increment=2
auto_increment_offset=1
server-id=1
#Konfigurasi Slave 2
relay-log-index=PL-9-relay-bin
replicate-do-table=ksp.anggota
replicate-do-table=ksp.cabang
replicate-do-table=ksp.akun_utama
replicate-do-table=ksp.angsuran
replicate-do-table=ksp.kebijakan
replicate-do-table=ksp.penarikan
replicate-do-table=ksp.pinjaman
replicate-do-table=ksp.tabungan
replicate-do-table=ksp.tagihan
[mysqld]
# Konfigurasi Master 2
log-bin=PL-12-bin
binlog-do-db=ksp
log_bin_trust_function_creators=1
auto_increment-increment=2
auto_increment_offset=2
server-id=2
# Konfigurasi Slave 1
relay-log-index=PL-12-relay-bin
replicate-do-table=ksp.anggota
replicate-do-table=ksp.cabang
replicate-do-table=ksp.akun_utama
replicate-do-table=ksp.angsuran
replicate-do-table=ksp.kebijakan
replicate-do-table=ksp.penarikan
replicate-do-table=ksp.pinjaman
replicate-do-table=ksp.tabungan
replicate-do-table=ksp.tagihan
Master sekaligus sebagai Slave. seharusnya akan membentuk file binary dan file
relay-log sesuai dengan nama yang didefinisikan pada My.ini diikuti index yang
log-bin=PL-9-bin
relay-log-index=PL-9-relay-bin
log-bin=PL-12-bin
relay-log-index=PL-12-relay-bin
apabila Master 1 melakukan perubahan data maka binary log akan disimpan pada file
auto_increment_offset digunakan agar data yang direplikasi tidak tabrakan. Row yang
ditambahkan dari master 1 akan bernilai ganjil mulai dari 1 dan selanjutnya ditambah
1, sedangkan row yang ditambahkan dari master 2 akan bernilai genap mulai dari 2
dan selanjutnya ditambah 1. Pada tabel variable increment digunakan sebagai kode
cabang.
+---------------------+----------+--------------------+-----------------------+
+---------------------+----------+--------------------+-----------------------+
| PL-9-bin.000001 | 98 | ksp | |
77
+---------------------+----------+--------------------+-----------------------+
File binary dan Position akan digunakan ketika menghubungkan Master dengan Slave
Jika file binary sudah terbentuk maka langkah selanjutnya adalah membuat
user replikasi.
1. Dari master 1, buat user ksp yang dapat diakses dari ip address 172.21.205.31
2. Dari master 2, buat user ksp yang dapat diakses dari ip address 172.21.205.28
a. Master 1 – Slave 2
-> master_host='172.21.205.31',
-> master_port=3300,
-> master_user='ksp',
-> master_password='ksp',
-> master_log_file='PL-12-bin.000001',
-> master_log_pos=98;
b. Master 1 – Slave 2
-> master_host='172.21.205.28',
-> master_port=3306,
-> master_user='ksp',
-> master_password='ksp',
-> master_log_file='PL-9-bin.000001',
-> master_log_pos=98;
79
berdasarkan pada informasi yang diperoleh saat melakukan SHOW MASTER STATUS.
80
untuk melihat status dari slave yaitu menggunakan perintah SHOW SLAVE
Yes
Hasil yang diperoleh dari SHOW SLAVE STATUS\G dari Master 1 – Slave 2
Master_Host : 172.21.205.31
Master_User : ksp
Master_Port : 3300
Connect_Retry : 60
Master_Log_File : PL-12-bin.000001
Read_Master_Log_Pos : 98
Relay_Log_File : pl-12-relay-bin.000002
Relay_Log_Pos : 235
Relay_Master_Log_File : PL-12-bin.000001
Slave_IO_Running : Yes
Slave_SQL_Running : Yes
ksp.penarikan
81
Replicate_Ignore_Table :
Replicate_Wild_Do_Table :
Replicate_Wild_Ignore_Table:
Last_Errno :0
Last_Error :
Skip_Counter :0
Exec_Master_Log_Pos : 98
Relay_Log_Space : 235
Until_Condition : None
Until_Log_File :
Until_Log_Pos :0
Master_SSL_Allowed : No
Master_SSL_CA_File :
Master_SSL_CA_Path :
Master_SSL_Cert :
Master_SSL_Cipher :
Master_SSL_Key :
Seconds_Behind_Master :0
Sedangkan untuk mengetahu proses yang sedang berjalan baik proses master maupun
Id :2
User : root
82
Db : NULL
Command : Query
Time :0
State : NULL
Id :3
User : ksp
Host : PL-12:1050
Db : NULL
Time : 420
State : Has sent all binlog to slave; waiting for binlog to be updated
Info : NULL
Id :4
Host :
Db : NULL
Command : Connect
Time : 59
Info : NULL
Id :5
83
Host :
Db : NULL
Command : Connect
Time : 59
State : Has read all relay log; waiting for the slave I/O thread to update it
Info : NULL
Form ini digunakan untuk login ke sistem. User yang login sebagai petugas
maka menu yang dapat ditampilkan adalah menu keanggotaan, tabungan, penarikan,
pinjaman, angsuran. Jika user login sebagai manager maka manager dapat mengakses
berikut:
<%!
String level) {
return(false);
if (pemakai.equals("") || password.equals(""))
return(false);
try {
Class.forName("org.gjt.mm.mysql.Driver");
NAMA_DB,
NAMA_USER, PASSWORD);
'"+level+"' ");
if (hasilQuery.next())
data_password =
hasilQuery.getString("pass");
if (!ada_kesalahan)
85
if (password.equals(data_password))
password_cocok = true;
ada_kesalahan = true;
return(password_cocok);
%>
4.3.2. Keanggotaan
User tidak memasukkan kode anggota, untuk membuat kode anggota pada
try {
Class.forName("org.gjt.mm.mysql.Driver");
NAMA_DB,
NAMA_USER, PASSWORD);
"select buat_kode_anggota(1,1),DATE_FORMAT(curdate(),'%d-%m-
if (hasilQuery.next())
kode = hasilQuery.getString(1);
tgl_daftar = hasilQuery.getString(2);
86
nama= gantiKosong(request.getParameter("nama"));
DELIMITER $$
DROP FUNCTION IF EXISTS `rachel`.`buat_kode_anggota`$$
BEGIN
select
concat(kodeOrg,substring(curdate(),3,2),substring(curdate(),6,2),
substring(curdate(),9,2),'000',(kode_lama + off_set))
into kode_baru
from organisasi;
select
concat(kodeOrg,substring(curdate(),3,2),substring(curdate(),6,2),
substring(curdate(),9,2),'00',(kode_lama + off_set))
into kode_baru
from organisasi;
concat(kodeOrg,substring(curdate(),3,2),substring(curdate(),6,2),
substring(curdate(),9,2),'0',(kode_lama + off_set))
into kode_baru from organisasi;
else
select
concat(kodeOrg,substring(curdate(),3,2),substring(curdate(),6,2),
end if;
else
select
concat(kodeOrg,substring(curdate(),3,2),substring(curdate(),6,2),
end if;
return kode_baru;
END$$
DELIMITER ;
4.3.3. Tabungan
88
Form ini digunakan untuk memasukkan data tabungan wajib dan sukarela.
String strQuery =
""+request.getParameter("tab_sukarela")+","+request.getParameter("j
ml_bayar")+")";
hasil_penyisipan = stm.executeUpdate(strQuery);
DELIMITER $$
DROP PROCEDURE IF EXISTS `rachel`.`insert_tabungan1`$$
CREATE PROCEDURE `insert_tabungan1`(tabungan_kode varchar(20),
anggota_kode varchar(20),
ptgl varchar(10),v_wajib DOUBLE, v_sukarela DOUBLE, jml_tab int)
BEGIN
declare v_bulan varchar(20);
declare v_tgl date;
select ptgl;
select concat(substring(ptgl,7,4),'-',substring(ptgl,4,2),'-
',substring(ptgl,1,2)) into v_tgl;
delete from tabungan_temp where kode_tabungan = 'null' ;
delete from tabungan_temp where kode_tabungan = tabungan_kode and
kode_anggota != anggota_kode;
if(v_wajib > 0) then
while jml_tab > 0 do
if exists (select kode_anggota from anggota where kode_anggota =
anggota_kode) then
if exists(select kode_anggota from tabungan_temp where
kode_anggota = anggota_kode and bulan_tabwajib !='') then
select MONTHNAME(DATE_ADD(tgl_simpan, INTERVAL
period_diff(concat(year(current_date()),indek),date_format(v_tgl,'%
Y%m'))+1 MONTH))
into v_bulan
from tabungan_temp, bulan where kode_anggota =
anggota_kode
and bulan.namabulan = tabungan_temp.bulan_tabwajib
order by indek desc limit 1;
elseif exists(select tabungan_detail.kode_tabungan from
tabungan_detail,tabungan
where tabungan.kode_tabungan=tabungan_detail.kode_tabungan
and tabungan.kode_anggota = anggota_kode
and bulan_tabwajib != '') then
select MONTHNAME(DATE_ADD(tgl_simpan, INTERVAL
period_diff(concat(year(current_date()),indek),date_format(v_tgl,'%
Y%m'))+1 MONTH))
into v_bulan
from tabungan_detail, bulan,tabungan where kode_anggota
= anggota_kode
90
and tabungan.kode_tabungan=tabungan_detail.kode_tabungan
and bulan.namabulan = tabungan_detail.bulan_tabwajib
order by indek desc limit 1;
else
select MONTHNAME(DATE_ADD(tgl_daftar, INTERVAL 1 MONTH))
into v_bulan from anggota
where kode_anggota = anggota_kode;
end if;
insert into tabungan_temp
(kode_tabungan,kode_anggota,tgl_simpan,tab_wajib,tab_sukarela,bulan
_tabwajib,tahun)
values
(tabungan_kode,anggota_kode,v_tgl,v_wajib,0,v_bulan,
year(v_tgl));
end if;
set jml_tab=jml_tab-1;
end while;
end if;
if(v_sukarela>0) then
insert into tabungan_temp
(kode_tabungan,kode_anggota,tgl_simpan,tab_wajib,tab_sukarela,bulan
_tabwajib,tahun)
values
(tabungan_kode,anggota_kode,v_tgl,0,v_sukarela,'',
year(v_tgl));
end if;
END$$
DELIMITER ;
4.3.4. Penarikan
disini minimal meninggalkan saldo Rp 50.000,-. Form penarikan dapat dilihat pada
gambar 4.4. Peminjaman dapat dilakukan oleh anggota lebih dari 1 kali namun
91
pinjaman sebelumnya harus sudah lunas atau dengan kata lain anggota tidak sedang
urut++;
hasil_query.getObject("kode_penarikan") +
hasil_query.getObject("kode_anggota") +
+"</td><td>"+
"</td><tr>");
Repeat1 index++;
data_ada = hasil_query.next();
Query akan mengambil data dari tabel view viewpenarikan. Perintah untuk membuat
DELIMITER $$
92
4.3.5. Pinjaman
93
Form ini digunakan untuk memasukkan data peminjaman dan dapat dilihat
pada gambar 4.5 Untuk mengambil detail peminjaman dan biaya administrasi
hasilQuery = stm.executeQuery(
"select if(right(round(besar_pinjaman/jumlah_angsuran,0),2)>50," +
"round(besar_pinjaman/jumlah_angsuran,0)+(100-
right(round(besar_pinjaman/jumlah_angsuran,0),2))," +
"round(besar_pinjaman/jumlah_angsuran,0)-
right(round(besar_pinjaman/jumlah_angsuran,0),2))
perBln,bunga,provisi,biaya_adm,biaya_kartu_anggota,biaya_materai,bi
aya_notaris,"+
"provisi+biaya_adm+biaya_kartu_anggota+biaya_materai+biaya_notaris
kode_anggota = '"+kode+"'");
while (hasilQuery.next()) {
perbln = hasilQuery.getString(1);
bunga_p = hasilQuery.getString(2);
provisi = hasilQuery.getString(3);
biaya_adm = hasilQuery.getString(4);
biaya_kartu = hasilQuery.getString(5);
biaya_materai = hasilQuery.getString(6);
biaya_notaris = hasilQuery.getString(7);
total = hasilQuery.getString(8);
}
94
4.3.6. Angsuran
pinjaman sesuai dengan perjanjian pinjaman dan membayar denda apabila jatuh
tempo. Besar Potongan program untuk menampilkan detail tagihan beserta dendanya
hasilQuery = stm.executeQuery(
"SELECT
angsuran_temp.kode_tagihan,pokok,bunga,denda,pokok+bunga+denda,baya
like '"+kode_angsuran+"'");
total_bayar = 0.0;
96
while (hasilQuery.next()) {
double total =
Double.parseDouble(hasilQuery.getString("bayar_angsuran"));
total_bayar += total;
out.println("<tr><td>" +
hasilQuery.getString("kode_tagihan")+">"
+hasilQuery.getString("kode_tagihan"));
out.println("</td><td>"+ hasilQuery.getString("bulan"));
out.println("</td><td
align=right>"+hasilQuery.getString("pokok"));
out.println("</td><td
align=right>"+hasilQuery.getString("bunga"));
out.println("</td><td
align=right>"+hasilQuery.getString("denda"));
out.println("</td><td align=right>"+hasilQuery.getString(5));
out.println("</td><td
align=right>"+hasilQuery.getString("bayar_angsuran"));
out.println("</td></tr>");
4.3.8. Preferensi
4.3.9. Organisasi
98
4.3.10. Laporan
angsuran pokok dan bunga pinjaman beserta sisa pokok dan bunga pinjaman. Input
untuk laporan ini berupa bulan. Sehingga dari laporan ini dapat diketahui pada bulan
e. Laporan Peminjaman
ANALISIS HASIL
5.1. Skenario
KBJ dan KPD merupakan koperasi yang masih satu yayasan. Pada skenario
ini setiap anggota yang terdaftar di koperasi tersebut dapat melakukan transaksi di
kedua koperasi. Dengan replikasi yang diterapkan maka apabila ada anggota yang
mendaftar di salah satu koperasi tersebut maka data tersebut juga akan direplikasi ke
cabang lain. Daftar anggota koperasi KPD dan KBJ dapat dilihat pada tabel 5.1 dan
tabel 5.2:
105
106
Transaksi 1 : Pada tanggal 12 April 2008, KPD menerima anggota baru. Anggota
Data anggota akan direplikasi ke KBJ. Dapat dilihat dari gambar 5.2 yang
merupakan hasil melihat data anggota pada sistem yang dipasang di KBJ dan
Hasil penyimpanan data simpanan jika dilihat gambar 5.4 dan 5.5 dari sitem yang
dipasang di KPD:
Data simpanan yang diinputkan juga akan direplikasi ke kantor KBJ namun
apabila petugas KBJ melihat transaksi simpanan dari menu Lihat Simpanan maka
data tidak ditampilkan karena transaksi tersebut tidak boleh diketahui oleh
petugas. Data simpanan hanya dapat dilihat oleh manager dari menu Laporan
penerimaan tabungan wajib dan sukarela. Gambar 5.6 adalag gambar yang
dari gambar 5.6 tampak bahwa data yang dimasukkan di KPD tidak dapat dilihat
100.000,-
Sama halnya dengan tabungan. Data penarikan ini juga akan direplikasi ke cabang
Transaksi 4 : Karena Koperasi KPD tidak beroperasi pada tanggal 14 April 2008
sebanyak 10 kali.
112
Data pinjaman akan direplikasi ke cabang. Dengan tujuan agar anggota tersebut dapat
Transaksi 5 : pada bulan Mei Natanael mengangsur pinjaman di KPD untul pinjaman
Data Angsuran akan direplikasi ke cabang. Dan jika dilihat dari sistem yang
dipasang di KBJ maka data tagihan bulan mei untuk Natanael sudah tidak ada. Lihat
gambar 5.11.
maupun kekurangan.
Dari sistem tersebut dapat memudahkan cabang dalam pembuatan laporan dan
tidak memperkecil pengeluaran karena laporan setiap cabang dapat di akses oleh
manager dari kantor pusat. Anggota juga dapat melakukan transaksi di setiap koperasi
cabang.
koperasi simpan pinjam ini sangatlah cocok karena setiap cabang mempunyai hak
114
yang sama untuk insert, update atau delete data. Selain itu replikasi MySQL juga
mengijinkan fungsi dan store procedure untuk direplikasi meskipun user replikasi
5.3.1. Kelebihan
Replikasi Master-Master MySQL 5.0 (Sistem Koprasi Simpan Pinjam) dapat diambil
beberapa kelebihan:
1. Ketersediaan data meningkat karena data dapat diakses melalui setiap cabang,
2. unjuk kerja sistem meningkat karena setiap cabang koperasi mengakses data
local.
3. Meskipun jika salah satu cabang sedang mengalami gangguan, cabang lain
lokal.
koperasi cabang memiliki data backup di koperasi cabang lain. Apabila data
rusak maka data dapat diperbaiki dari data yang ada di cabang lain.
115
5.3.2. Kekurangan
2. Data belum akurat jika sebuah transaksi melakukan update terhadap data yang
sama pada saat yang bersamaan. Hal ini terjadi karena perubahan data
6.1. Kesimpulan
pengembangan sistem.
6.2. Saran
Saran dari penulis apabila ada pembaca yang mau mengembangkan penelitian
ini adalah :
Cluster.
3. Merancang web yang lebih baik, dengan fasilitas yang lebih lengkap.
116
DAFTAR PUSTAKA
Kadir, Abdul, Dasar Pemrograman JSP (Java Server Pages), Penerbit Andi,
2004, Yogyakarta
Polina, Maria agnes dan Jong Jek Siang, Kiat Jitu Menyusun Skripsi Jurusan
http://lecture.ukdw.ac.id/willysr/sister-it/replication.pdf
http://www.mysql.com
117