REPLIKASI DATABASE MySQL
Replikasi adalah duplikasi data dari database sumber dalam hal ini disebut master ke database lainnya atau juga disebut slave dalam suatu jaringan. Tujuan replikasi adalah untuk mengurangi beban dari server dalam pengaksesan data untuk dibagi ke komputer-komputer lain dan juga untuk meningkatkan kinerja database.Jenis Replikasi
Replikasi Syncronous (Tidak di Support oleh MySQL)
Langkah-langkah Replikasi
Replikasi pada praktikum ini menggunakan MySQL dalam Linux Ubuntu. Pastikan MySQL telah terinstall dan berjalan dengan baik di komputer anda. Replikasi yang akan kita lakukan dalam praktikum ini adalah replikasi dua database tetapi masih dalam satu server.
1. Konfigurasi Master
Pertama kita edit file /etc/mysql/my.cnf pada file ini kita definisikan file log yang berfungsi oleh slave untuk melihat apa yang telah berubah pada master dan kita juga harus mendefinisikan bahwa MySQL pada sever utama ini adalah master. Kita akan mereplikasi database dengan nama sekolah maka kita harus menambahkannya ke file /etc/mysql/my.cnf. File database sekolah dapat anda download di sini.
Langkah-langkahnya sebagai berikut :
a. Buat database sekolah dengan me-restore file sekolah.sql
mysql -u root -p
di MySQL shell buat database baru dengan nama sekolah
mysql> create database sekolah;
mysql> \q
mysql -uroot -p sekolah < sekolah.sql
b. Backup file konfigurasi dengan menyalinnya dengan perintah :
sudo /etc/mysql/my.cnf /etc/mysql/my.cnf.backup
c. Edit file my.cnf dengan perintah :
sudo nano /etc/mysql/my.cnf
Tambahkan baris-baris berikut pada file /etc/mysql/my.cnf dibagian #Logging and Replication server-id = 1
log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10
max_binlog_size = 100M
binlog_do_db = sekolah
#binlog_ignore_db = include_database_name master-host = localhost
master-user = slave_user master-password = ******* master-connect-retry=60 replicate-do-db=sekolah_slave replicate-same-server-id = 1
master-password anda isi sesuai dengan password dari database yang anda jadikan master, atau biasanya password root databasenya.
d. Kemudian restart MySql
sudo /etc/init.d/mysql restart
e. Lalu kita log in ke MySQL sebagai root dan membuat user dengan kewenangan melakukan replikasi.
mysql -u root -p
f. Dalam shell MySQL jalankan perintah :
GRANT REPLICATION SLAVE ON *.* TO ’slave_user’@’%’ IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
Ganti 'password' dengan password yang anda inginkan.
g. Kemudian masih dalam MySQL shell tuliskan perintah :
USE sekolah;
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
Perintah terakhir akan menampilkan seperti berikut :
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000496 | 106 | sekolah | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
Hasil di atas dapat berbeda-beda untuk tiap komputer, gunakan apa yang ada di tampilan komputer anda. Catat konfigurasi diatas karena akan digunakan saat mengkonfigurasi server slave.kemudian keluar dari shell MySQL :
quit;
2. Konfigurasi Slave
a. Pada slave pertama kali kita buat database dulu dengan nama sekolah_slave :
mysql -u root -p
mysql> create database sekolah_slave;
mysql> \q
Kemudian kita import/restore kembali data yang telah kita backup dari master
mysql -uroot -p sekolah_slave < sekolah.sql
b. Lakukan konfigurasi pada MySQL shell :
mysql> SLAVE STOP;
mysql> CHANGE MASTER TO MASTER_HOST= ’localhost′, MASTER_USER=’slave_user’, MASTER_PASSWORD=’password_root‘, MASTER_LOG_FILE=’mysql-bin.xxx′, MASTER_LOG_POS=xxx;
Password dalam MASTER_PASSWORD anda sesuaikan dengan password root, MASTER_LOG_FILE, MASTER_LOG_POS nilainya anda sesuaikan dengan apa yang ada di tampilan ketika anda menuliskan perintah SHOW MASTER STATUS; pada langkah 1 poin g di atas.
c. Lakukan perintah untuk menjalankan slave di MySQL shell
mysql> SLAVE START;
d. Lakukan pengetesan dengan perintah :
mysql> SHOW SLAVE STATUS\G;
Untuk mengetahui jalan tidaknya proses replikasi, parameter Slave_IO_Running dan
Slave_SQL_Running: harus YES.