Replikasi Mysql Master To Master, Master To Slave
3 people liked this article
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.
================================================================================
Tidak ada komentar:
Posting Komentar