Sebuah distribusi database management system(DDBMS) adalah sebuah sistem perangkat lunak yang memungkinkan pengelolaan database terdistribusi dan membuat distribusi transparan kepada pengguna. Database terdistribusi adalah kumpulan beberapa, database secara logis saling didistribusikan melalui jaringan komputer. Kadang-kadang "didistribusikan sistem database" digunakan untuk merujuk bersama-sama ke database terdistribusi dan DBMS terdistribusi.
Salah satu contoh Replicate MySQL
Dengan menggunakan teknik ini, kehandalan database akan lebih terjamin karena data dapat didisitribusikan ke server-server yang lain. Misalnya seperti transaksi yang terjadi pada Bank, apa yang akan terjadi jika Bank hanya memiliki sebuah database server, apabila pada database server tersebut terjadi kerusakan atau padamnya arus listrik? Pasti transaksi perbankan akan berhenti total. Hal ini tidak demikian terjadi jika kita menggunakan database terdistribusi yang pada setiap transaksi juga direplikasi ke server yang lain.
Terdapat beberapa jenis replikasi akan tetapi yang akan kita bahas di sini hanya sebuah teknik replikasi sederhana saja. Replikasi dapat dilakukan dengan jumlah komputer minimal dua buah, satu buah master dan satu buah slave. Komputer slave akan mengkopi secara otomatis setiap perubahan database yang terjadi pada komputer master.Cara membuat replikasi MySQL di sini hanya bisa digunakan untuk MySQL versi 5.1.x atau di bawah ver si 5.2.x. Jika anda menggunakan MySQL versi yang lebih baru, ada kemungkinan gagal.
Tujuan dasar dari replikasi adalah menjaga data suatu server yang disinkronkan dengan server yang lain. Banyak slave yang dapat dihubungkan ke master tunggal, dan pada suatu waktu slave bisa dipromosikan sebagai master. Replikasi dapat mengatur master dan slave dengan banyak topologi yang berbeda. Replikasi dapat meniru basis data seluruh server, mereplika basis data tertentu, atau bahkan hanya memilih tabel yang ingin replikasi.
Ada empat alasan umum yang mendasari kenapa harus menggunakan replikasi, yaitu:
- Untuk membuat sebuah server basis data siaga. Jika server utama gagal, maka server siaga dapat mengambil alih tugas server utama.
- Untuk mengaktifkan backup tanpa harus mematikan server utama. Setelah terjadi replikasi, backup dilakukan pada slave, bukan pada master. Dengan cara ini, master dapat dibiarkan untuk melakukan tugasnya tanpa gangguan.
- Untuk menyimpan data saat ini di beberapa lokasi. Replikasi diperlukan jika beberapa cabang dari suatu organisasi harus bekerja dari salinan terbaru dari basis data yang sama.
- Untuk menyeimbangkan beban kerja beberapa server. Sehingga memungkinkan untuk membuat replika dari satu basis data pada beberapa server, replikasi dapat membantu meringankan beban kerja dari server basis data tunggal yang kelebihan beban dengan memecah query antara beberapa server, masing-masing berjalan pada perangkat keras terpisah. (Vaswani, 2010).
1. KONFIGURASI KOMPUTER DATABASE MASTER
a. Menyeting IP ADDRESS: 192.168.2.2 pada komputer Master.
b. Setelah itu buatlah sebuah database dengan nama sekolah, sebuah tabel dengan nama siswa dan isikan dua buah data atau terserah pada tabel tersebut.
c. Matikan service MySQL, buka teks editor misalnya: Notepad++ dan buka file yang terletak pada direktori mysql\bin\my.cnf. Jika anda menggunakan XAMPP seperti saya, anda bisa membuka file tersebut di direktori C:\xampp\mysql\bin\my.cnf
d. Tepat di bawah section [mysqld] tambahkan baris berikut
log-bin= mysql-bin
server-id= 1
binlog-do-db= sekolah
log-slave-updates
e. Kemudian buatlah akses user slave ke database master, misalnya dengan nama slave_user dengan perintah sebagai berikut
mysql> grant replication slave on *.* to ‘slave_user’@'%’ identified by ‘asdf’;
(asdf adalah passwordnya)
mysql> flush privileges;
f. Kemudian berikan hak akses kepada user tersebut agar dapat menggunakan database pada master, dengan perintah sebagai berikut
mysql> grant all on *.* to ‘slave_user’@'%’ identified by ‘asdf’;
mysql> flush privileges;
g. Lihat status log pada master, tetapi sebelumnya lock dulu tabelnya, perintahnya sebagai berikut
mysql> flush tables with read lock;
mysql> show master status;
Pada table akan terlihat File dan Position catat baik-baik nama file dan posisinya. Kemudian ketikkan perintah untuk meng-unlock tabel kembali
mysql> unlock table;
b. Setelah itu buatlah sebuah database dengan nama sekolah, sebuah tabel dengan nama siswa dan isikan dua buah data atau terserah pada tabel tersebut.
c. Matikan service MySQL, buka teks editor misalnya: Notepad++ dan buka file yang terletak pada direktori mysql\bin\my.cnf. Jika anda menggunakan XAMPP seperti saya, anda bisa membuka file tersebut di direktori C:\xampp\mysql\bin\my.cnf
d. Tepat di bawah section [mysqld] tambahkan baris berikut
log-bin= mysql-bin
server-id= 1
binlog-do-db= sekolah
log-slave-updates
e. Kemudian buatlah akses user slave ke database master, misalnya dengan nama slave_user dengan perintah sebagai berikut
mysql> grant replication slave on *.* to ‘slave_user’@'%’ identified by ‘asdf’;
(asdf adalah passwordnya)
mysql> flush privileges;
f. Kemudian berikan hak akses kepada user tersebut agar dapat menggunakan database pada master, dengan perintah sebagai berikut
mysql> grant all on *.* to ‘slave_user’@'%’ identified by ‘asdf’;
mysql> flush privileges;
g. Lihat status log pada master, tetapi sebelumnya lock dulu tabelnya, perintahnya sebagai berikut
mysql> flush tables with read lock;
mysql> show master status;
Pada table akan terlihat File dan Position catat baik-baik nama file dan posisinya. Kemudian ketikkan perintah untuk meng-unlock tabel kembali
mysql> unlock table;
2. KONFIGURASI KOMPUTER DATABASE SLAVE
a. Menyeting IP ADDRESS: 192.168.2.3 pada komputer slave.
b. Menyeting my.cnf pada databse slave, tepat di bawah section [mysqld] tambahkan baris:
server-id= 2
master-host= 192.168.2.2
master-user= budak_user
master-password= asdf
master-connect-retry= 30
replicate-do-db= sekolah
master-host= 192.168.2.2
master-user= budak_user
master-password= asdf
master-connect-retry= 30
replicate-do-db= sekolah
c. Start service MySQL dan copykan database yang terdapat di master dengan perintah
mysql> load data from master;
d. setelah berhasil maka database master (sekolah) akan terkopi semua ke slave.
e. Kemudian melakukan setting replikasi pada slave. Sebelum melakakukan setting replikasi pada slave sebaiknya menonaktifkan slave terlebih dahulu dengan perintah
mysql> slave stop;
mysql> change master to master_host=’192.168.2.2′,
-> master_user=’budak_user’,
-> master_password=’asdf’,
-> master_log_file=’mysql-bin.000001′, <- isikan sesuai dengan file log masternya
mysql> change master to master_host=’192.168.2.2′,
-> master_user=’budak_user’,
-> master_password=’asdf’,
-> master_log_file=’mysql-bin.000001′, <- isikan sesuai dengan file log masternya
-> master_log_pos=106; <- isikan sesuai dengan posisi log masternya
(baca kembali langkah 1 g.)
f. Aktifkan slave dengan perintah mysql> slave start;
g. Cek status slave dengan perintah mysql> show slave status\G; dan melihat pada slave_io_running = yes dan slave_sql_running = yes, berarti slave telah berjalan dengan baik.