Apa yang bisa kami bantu?

A.Pendahuluan

Replikasi database adalah proses menyalin data dari satu database ke database lainnya. Replikasi database sangat berguna dalam situasi dimana aplikasi membutuhkan data yang selalu up-to-date, seperti dalam kasus aplikasi e-commerce atausistem informasi yang membutuhkan akses data yang cepat dan tepat waktu. Namun harap diingat bahwa replikasi database juga membutuhkan perencanaan yang matang dan pemeliharaan yang teratur agar tetap berjalan dengan baik. 

DiMySQL, replikasi database dapat dilakukan untuk menyinkronkan data antara database master dan salah satu atau beberapa database slave. Database master adalah database utama yang digunakan oleh aplikasi untuk menyimpan dan mengolah data. Database slave adalah database yang menyimpan salinan data dari database master, yang berguna untuk meningkatkan performa dan skalabilitas aplikasi dengan membebaskan database master dari beban yang berlebihan.

Model replikasi database:

· Master to Master:Jika ada perubahan di salah satu database master maka database pada server lainyang bertindak sebagai master akan ikut berubah juga, begitupun sebaliknya

· Master to Slave:Jika terjadi perubahan database pada Master, database pada Slave juga ikut berubah. Akan tetapi jika perubahan database ada pada slave, maka database padasisi master tidak akan ada perubahan

 

B.Instalasi & Konfigurasi

Sebelummelakukan instalasi & konfigurasi, berikut adalah informasi spesifikasiserver dan software yang digunakan pada panduan ini 

Sistem Operasi: Ubuntu 18.04
IP Server-a: 103.93.xxx.xxx
IP Server-b: 103.150.xxx.xxx
Software/service: mysql  Ver 14.14 Distrib 5.7.40

 

Replikasi Master to Master

Konfigurasi mysql

server-a

1.   Login sebagai root user dengan perintah

sudo su

2.   Ketikan perintah berikut

vi /etc/mysql/mysql.conf.d/mysqld.cnf

3.   Ubah beberapa bagian menjadi sebagai berikut :
Ubah IP Address menjadi 0.0.0.0
bind-address            = 0.0.0.0
Hilangkan comment ( # ) dan jadikan server 1
server-id               = 1
Hilangkan comment ( # )
log_bin                 = /var/log/mysql/mysql-bin.log
Hilangkan comment ( # ) dan tentukan nama database yang akan direplikasi, padapanduan ini menggunakan nama database percobaan
binlog_do_db            = percobaan

4.   Simpan perubahan konfigurasi dengan menekan ( esc ) lalu :wq

5.   Restart service mysql

systemctl restart mysql

Server-b

1.   Login sebagai rootuser dengan perintah

sudo su

2.   Ketikan perintah berikut

vi /etc/mysql/mysql.conf.d/mysqld.cnf

3.   Ubah beberapa bagian menjadi sebagai berikut :
Ubah IP Address menjadi 0.0.0.0
bind-address            = 0.0.0.0
Hilangkan comment ( # ) dan jadikan server 2
server-id               = 2
Hilangkan comment ( # )
log_bin                 = /var/log/mysql/mysql-bin.log
Hilangkan comment ( # ) dan tentukan nama database yang akan direplikasi, padapanduan ini menggunakan nama database percobaan
binlog_do_db            = percobaan

4.   Simpan perubahan konfigurasi dengan menekan ( esc ) lalu :wq

5.   Restart service mysql

systemctl restart mysql



 

Membuat user replikasi

Membuat user replikasi Server-a

1. Masuk ke mysql dengan perintah

mysql –u root –p

 

2. Buat user dan memberikan privilege

GRANT REPLICATION SLAVE ON *.* TO 'USERNAME'@'IP_PUBLIC_TUJUAN' IDENTIFIED BY'PASSWORD';

pada panduan kali ini menggunakan username replica, ip public server-b danpassword nya P@ssw0rd

GRANT REPLICATION SLAVE ON *.* TO 'replica'@'103.150.XXX.XXX' IDENTIFIED BY 'P@ssw0rd';

 

3.   Simpan perubahan dengan perintah

FLUSH PRIVILEGES;

 

Membuat user replikasi Server-b

1.   Masuk ke mysql dengan perintah

mysql –u root –p

 

2. Buat user dan memberikan privilege

GRANT REPLICATION SLAVE ON *.* TO 'USERNAME'@'IP_PUBLIC_TUJUAN' IDENTIFIED BY'PASSWORD';

pada panduan kali ini menggunakan username replica, ip public server-a dan passwordnya P@ssw0rd

GRANT REPLICATION SLAVE ON *.* TO 'replica'@'103.93.XXX.XXX' IDENTIFIED BY 'P@ssw0rd';

 

3.   Simpan perubahan dengan perintah

FLUSH PRIVILEGES;

Pengecekan status master

1.   Masuk ke mysql dengan perintah

mysql –u root –p

2.   Cek status masterpada masing masing server  dengan perintah berikut :

SHOW MASTER STATUS;

Lakukan pengecekan status master pada masing-masing server 

Status master server-a

Status master server-b



 

Konfigurasi slave pada mysql

Berdasarkan hasil yang ditampilkan pada master status maka konfigurasi slave pada masing masing server sebagai berikut: 

Server-a

1.   Koneksi ke master server-b, dengan ketikan perintah berikut :

CHANGE MASTER TO
MASTER_HOST='103.150.xxx.xxx',
MASTER_USER='replica',
MASTER_PASSWORD='P@ssw0rd',
MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS=154;

untuk MASTER_LOG_FILE didapatkan saat sudah mengetahui hasil informasi File, sedangkan MASTER_LOG_POSdidapatkan saat mengetahui hasil informasi position pada saat menjalankan SHOW MASTER STATUS; pada server B

 

2.   Jalankan slave dengan perintah

start slave;

 

3.   Cek status slave dengan perintah;

SHOW SLAVE STATUS \G

Makaakan muncul informasi sebagai berikut :

 

 

Server-b

1.   Koneksi ke master server-a, dengan ketikan perintah berikut :

CHANGE MASTER TO
MASTER_HOST='103.150.xxx.xxx',
MASTER_USER='replica',
MASTER_PASSWORD='P@ssw0rd',
MASTER_LOG_FILE= 'mysql-bin.000040',
MASTER_LOG_POS= 500;

untuk MASTER_LOG_FILEdidapatkan saat sudah mengetahui hasil informasi file, sedangkan MASTER_LOG_POSdidapatkan saat mengetahui hasil informasi position pada saat menjalankanSHOW MASTER STATUS; pada server-a

 

2.   Jalankan slave dengan perintah

start slave;

 

3.   Cek status slave dengan perintah;

SHOW SLAVE STATUS \G

Maka akan muncul informasi sebagai berikut :


Pengujian

1.   Pada server-a membuat database dengan nama percobaan dan mengecek pada server-b, otomatis terbuat

 

2.   Pada server-b akan membuat table dan akan mengisikan data pada table tersebut, lalu mengecekanya pada server-a, otomatis terupdate

 

Kesimpulan

Untuk konfigurasi master to master ini berhasil dari server-a ke server-b atau sebaliknya. Perlu diperhatikan jika anda melakukan konfigurasi master to master saat di posisis salah satu database mysql sudah terisikan data, maka setelah terkonfigurasi master to master, maka data pada database tersebut tidak akan otomatis tersallin. Hanya perubahan database yang berhasil disalin atau replikasi setelah server dikonfigurasi  master to master.

Dipanduan ini kami hanya melakukan 1replikasi database saja yaitu database percobaan, jika anda ingin melakukan lebih dari satu database, maka anda perlu medivine nama database yang akan dijinkan melakukan replikasi pada binlog_do_db seperti gambar berikut, kami mencoba mendivine 3 database yaitu percobaan, staging dan bgn_knowledege_base

 

Replikasi Master to Slave

Konfigurasi mysql

server-a

1.   Login sebagai root user dengan perintah

sudo su

2.   Ketikan perintah berikut 

vi /etc/mysql/mysql.conf.d/mysqld.cnf

 

3.   Ubah beberapa bagian menjadi sebagai berikut :
Ubah IP Address menjadi 0.0.0.0
bind-address            = 0.0.0.0
Hilangkan comment ( # ) dan jadikan server 1
server-id               = 1
Hilangkan comment ( # )
log_bin                 = /var/log/mysql/mysql-bin.log


 



4.   Simpan perubahan konfigurasi dengan menekan ( esc ) lalu :wq

5.   Restart service mysql

systemctl restart mysql

 

Server-b

1.   Login sebagai root user dengan perintah

sudo su

2.   Ketikan perintah berikut

vi /etc/mysql/mysql.conf.d/mysqld.cnf

 

3.   Ubah beberapa bagian menjadi sebagai berikut :
Ubah IP Address menjadi 0.0.0.0
bind-address            = 0.0.0.0
Hilangkan comment ( # ) dan jadikan server 2
server-id               = 2
Hilangkan comment ( # )
log_bin                 = /var/log/mysql/mysql-bin.log

 

4.   Simpan perubahan konfigurasi dengan menekan ( esc ) lalu :wq

5.   Restart service mysql

systemctl restart mysql



 
Membuat user replikasi server- a

Untuk langkah ini akan hanya dilakukan pada server-a sebagai master, untuk membuat nya bisa mengikuti perintah berikut

1. Masuk ke mysql dengan perintah

mysql –u root –p

 

2. Buat user dan memberikan privilege

GRANT REPLICATION SLAVE ON *.* TO 'USERNAME'@'IP_PUBLIC_TUJUAN' IDENTIFIED BY'PASSWORD';

pada panduan kali ini menggunakan username replica, ip public server-a dan password nya P@ssw0rd

GRANT REPLICATION SLAVE ON *.* TO 'replica'@'103.150.XXX.XXX' IDENTIFIED BY 'P@ssw0rd';

 

3. Kunci database agar tidak ada perubahaan

FLUSH TABLES WITH READ LOCK;

 

4. Tampilkan Master status, untuk memunculkan informasi file dan position yang dibutuhkan untukkonfigurasi slave :

SHOW MASTER STATUS;

 

Konfigurasi Slave server-b

1.   Koneksikan ke master server-a dengan perintah berikut :

CHANGE MASTER TO
MASTER_HOST='103.93.xxx.xxx',
MASTER_USER='replica',
MASTER_PASSWORD='P@ssw0rd',
MASTER_LOG_FILE='mysql-bin.000041',
MASTER_LOG_POS=3241;

 

2.   Kemudian start slave;

start slave;

 

3.   Lalu tampilkan slavestatus

SHOW SLAVE STATUS \G

 

Kemudian jika konfigurasi di sisi slave / server-b sudah aktif maka dapat di lakukan unlock database pada server-a dengan cara

UNLCOK TABLES;

 

Pengujian

Kami mencoba melakukan pembuatan database pada server-a terlebih dahulu dan berhasil

Kemudian kami mencoba hal sebaliknya, mencoba membuat database dari slave / server-b


dan tidak ada perubahan apapun pada sisi master / server-a
 

Kesimpulan

Untuk metode replikasi database Master to slave hanya bisa menyalin databases yang ada dimaster ke slave dan tidak sebaliknya. Kemudian pada master to slave kami tidak mendivine nama database yang akan direplikasi karena hal ini akan melakukan replikasi baik database yang akan dibuat setelah selesai konfigurasi master to slave, maupun database yang sudah ada sebelum melakukan konfigurasi master to slave.

 

Semoga artikel ini dapat membantu Anda. Temukan bantuan lainnya melalui  Knowledge Base Biznet Gio. Jika Anda masih memiliki kendala silahkan hubungi support@biznetgio.com.