Replikasi Database
1. Tujuan
Setelah menyelesaikan modul ini, anda diharapkan dapat :
1. Mahasiswa memahami konsep Replikasi Database
2. Mahasiswa mampu membuat Replikasi Database
3. Mahasiswa mampu menerapkan Replikasi Database pada lingkungan server
2. Dasar Teori
MySQL Group Replication adalah plugin untuk membuat arsitektur database
yang sangat toleran terhadap kesalahan. Replikasi grup menghilangkan
kemungkinan satu titik kegagalan / single point of failure (SPOF). Dalam modul
ini, Anda akan menginstal dan mengonfigurasi plugin MySQL Group Replication
untuk membuat cluster database yang sangat tersedia.
34
4. Langkah Kerja
4.1 Persiapan
Pastikan memiliki minimal 2 server (boleh lebih) baik fisik, vps atau dalam
bentuk virtual machine. Pastikan sistem operasi yang digunakan merupakan
sistem operasi Ubuntuk versi 18.04 keatas, versi 20.04 yang direkomendasikan.
Catat IP dari masing-masing server yang digunakan, pada kasus ini, missal IP
yang digunakan:
35
$ sudo mysql_secure_installation
- Jika ada permintaan password, masukkan password yang sama
dengan langkah 4.
- Masukkan no, untuk semua pilihan yang diminta
* Lakukan proses diatas pada ketiga server
Contoh hasil:
+--------------------------------------+
| UUID() |
+--------------------------------------+
| 00000000-1111-2222-3333-444444444444 |
+--------------------------------------+
36
2. Edit /etc/mysql/my.cnf
$ sudo nano /etc/mysql/my.cnf
server_id=1
bind-address=0.0.0.0
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
plugin_load_add='group_replication.so'
group_replication_single_primary_mode=OFF
loose-group_replication_group_name="00000000-1111-
2222-3333-444444444444"
loose-group_replication_start_on_boot=ON
loose-group_replication_local_address=
"192.0.2.1:33061"
loose-
group_replication_group_seeds="192.0.2.1:33061,
192.0.2.2:33061, 192.0.2.3:33061"
loose-group_replication_bootstrap_group=OFF
report_host=192.0.2.1
Ganti:
37
- 00000000-1111-2222-3333-444444444444 dengan UUID dari
langkah 4.3.
- 192.0.2.1 dengan IP VM-1
- 192.0.2.2 dengan IP VM-2
- 192.0.2.3 dengan IP VM-3
Keterangan
- server_id=1 (Server 1 pada lingkungan replikasi)
- bind-address=0.0.0.0 (Listen semua IP yang ada pada
lingkungan replikasi)
- gtid_mode=ON (Jalankan replikasi dengan pengidentifikasi transaksi
global)
- enforce_gtid_consistency=ON (MySQL hanya akan
mengeksekusi query yang dapat dicatat dengan aman pada replikasi)
- plugin_load_add='group_replication.so' (jalankan
plugin replikasi)
- group_replication_single_primary_mode=OFF (semua
server punya akses untuk write dan read)
- loose-group_replication_group_name (nama UUID group
replikasi)
- loose-group_replication_start_on_boot (jalankan / tidak
replikasi jika server terestart)
- loose-group_replication_local_address (IP server yang
sedang di konfigurasi)
- loose-group_replication_group_seeds (IP semua server
yang terlibat replikasi)
- loose-group_replication_bootstrap_group=OFF
(mencegah bootstrap group agar tidak ada konflik)
38
- report_host (IP server yang sedang di konfigurasi)
4. Restart MySQL
$ sudo service mysql restart
Ganti:
- Qwerty123456@ dengan password MySQL, syarat: harus ada huruf
besar, huruf kecil, angka dan karakter
3. Cek tidak ada nama group yang sama, kemudian jalankan Group repliaksi
mysql> SET GLOBAL
group_replication_bootstrap_group=ON;
39
mysql> START GROUP_REPLICATION;
+--------------------------------------+-------------+--------------+
+--------------------------------------+-------------+--------------+
40
+----------------------------+
| Tables_in_test_replication |
+----------------------------+
| mahasiswa |
+----------------------------+
server_id=2
bind-address=0.0.0.0
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
plugin_load_add='group_replication.so'
group_replication_single_primary_mode=OFF
loose-group_replication_group_name="00000000-1111-
41
2222-3333-444444444444"
loose-group_replication_start_on_boot=ON
loose-group_replication_local_address=
"192.0.2.2:33061"
loose-
group_replication_group_seeds="192.0.2.1:33061,
192.0.2.2:33061, 192.0.2.3:33061"
loose-group_replication_bootstrap_group=OFF
report_host=192.0.2.2
Ganti:
- server_id=2 dengan 2 (untuk VM-2) dan 3 (untuk VM-3)
- 00000000-1111-2222-3333-444444444444 dengan UUID dari
langkah 4.3
- loose-group_replication_local_address=
"192.0.2.2:33061" dengan IP node server VM-2 / VM-3 (yang
sedang di konfigurasi)
- 192.0.2.1 dengan IP VM-1
- 192.0.2.2 dengan IP VM-2
- 192.0.2.3 dengan IP VM-3
- report_host=192.0.2.2 dengan IP node server VM-2 / VM-3
(yang sedang di konfigurasi)
4. Restart MySQL
$ sudo service mysql restart
5. Login ke MySQL
$ sudo mysql -u root -p
42
mysql> SET SQL_LOG_BIN=0;
Ganti:
- Qwerty123456@ dengan password MySQL, syarat: harus ada huruf
besar, huruf kecil, angka dan karakter
+--------------------------------------+-------------+--------------+
43
| 22222222-40c4-11e9-92b4-7a4c400acda6 | 192.0.2.2 | ONLINE |
+--------------------------------------+-------------+--------------+
* Ulangi tahap diatas untuk Server 3 dan seterusnya
2. Verifikasi server 2 & 3 sudah dapat mengakses replikasi database yang dibuat
server 1
mysql> SHOW databases;
+--------------------+
| Database |
+--------------------+
| simak |
+--------------------+
+----------------------------+
| Tables_in_test_replication |
+----------------------------+
44
| mahasiswa |
+----------------------------+
45