Saturday, May 27, 2017

[CentOS 7] LAB 9.6 Replication Database for Mariadb

Assalamuallaikum 
WarahmatullahiWabarakatuh.

السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ

Selamat sore semua, ketemu lagi dengan ane. Sebelumnya ane mau mengucapkan selamat menjalankan ibadah puasa dibulan Ramadhan 1438 H, semoga apa yang kita jalankan dan lakukan selama ini menjadi keberkahan untuk kita semua, amin ya rabbal alamin. Di awal ramadhan ini ane mau sharing lagi nih hehe, pada artikel yang mau ane sharing mengenai materi Replication Database. Kalau pada lab sebelumnya ane pernah sharing mengani Replication Database tetapi menggunakan PostgreSQL, nah pada kali ini yang akan digunakan untuk Replication Database adalah MariaDB.


Replication database adalah suatu metode yang digunakan untuk menyalin dan mendistribusikan data dari satu database ke database yang lain. Dan selanjutnya, mensinkronisasikan antar database, sehingga konsistensi data dapat terjamin. Replication database dapat digunakan pada banyak sistem manajemen Database, yang dimana proses ini terbentuk dari hasil sikronisasi antara master dengan slave, atau antara yang asli dan salinannya, yang tentunya memerlukan beberapa konfigurasi tambahan agar Replication ini dapat bekerja. Dengan menggunakan teknik replikasi ini, data dapat didistribusikan ke lokasi yang berbeda melalui koneksi jaringan lokal maupun internet. 

Tujuan dibuatnya Database Replication ini adalah agar bersifat redudant, ketika salah satu server mati maka nantinya masih ada pengganti lainnya. Selain itu, Replication database ini digunakan sebagai backup dari suatu database untuk mengantisipasi kehilangan data akibat serangan DOS ataupun faktor lainnya. 

Untuk topologi yang ane gunakan adalah sebagai berikut. Yang sudah ane katakan diatas, database nantinya akan disalin atau di sinkronasikan dari Server Master ke Server Slave, maka dari itu kita memerlukan satu Server lagi yang nantinya digunakan sebagai Slave. Di dalam topologi ane sudah memiliki satu Server lagi yang digunakan untuk Slave, yang menggunakan IP Address 192.168.43.123/24 dan IP DNS nya diarahkan ke IP Address Server Master. Untuk Server Slave yang ane gunakan merupakan hasil cloningan dari Server Master, maka dari itu pada Server Slave nya sudah terinstall dan terkonfigurasi MariaDB dan phpMyAdminnya.
.

Berikut langkah - langkah konfigurasi yang harus dilakukan.

Konfigurasi Server Master (Rizky)

1.) Supaya nantinya dapat mengakses phpMyAdmin Server Slave menggunakan nama domain, disini kita perlu menambahkan sub domain untuk Server Slave nya. Maka dari itu kita edit file forward."nama filenya" yang terletak di directory /var/named. Untuk membuka file, jalankan perintah 
nano /var/named/forward."nama filenya" 
Pada bagian paling bawah tambahkan subdomain untuk Server Slave nya, disini nama yang ane gunakan adalah "node1", jangan lupa IP Address Server Slavenya juga diikut sertakan.


2.) Kemudian edit pada file reverse."nama filenya" yang terletak di directory yang sama. Untuk membuka file jalankan perintah 
nano /var/named/reverse."nama filenya" 
Setelah itu tambahkan command untuk membuat subdomain node1 nya seperti gambar dibawah, dan pastikan IP Address Server Slave diikut sertakan, supaya dapat diakses dan menandakan subdomain node1 berasal dari Server Slave.


3.) Restart service named supaya konfigurasi dapat berjalan dengan baik 
systemctl restart named


4.) Kemudian kita test apakah domain berhasil dibuat atau tidak dengan menjalankan perintah dig. Apabila muncul output seperti gambar dibawah, maka dapat dipastikan subdomain sudah berhasil dibuat dengan baik.


5.) Kemudian edit file mariadb-server.conf yang terletak pada directory /etc/opt/rh/rh-mariadb101/my.cnf.db. Untuk membuka file jalankan perintah
nano /etc/opt/rh/rh-mariadb101/my.cnf.db/mariadb-server.conf
Cari pada Line 9. tepatnya pada bagian [server] kita tekan enter sehingga membentuk baris baru di line 10. Kemudian tambahkan syntax seperti gambar dibawah yang sudah ane blok berwarna biru.
Keterangan :
  • log-bin=mysql-bin : Merupakan binary logging sql, yaitu mysql.bin 
  • server-id=111 : Merupakan penamaan untuk server master ini, penamaan ini tidak bisa menggunakan kata-kata atau kalimat, hanya berlaku untuk angka. Disini contohnya ane memberikan penamaan untuk server master ini dengan 111


6.) Restart service MariaDB nya, supaya konfigurasi dapat berjalan dengan baik
systemctl restart rh-mariadb101-mariadb


7.) Kemudian masuk ke shell MariaDB 
mysql -u root -p
Setelah itu kita stop atau matikan mode slave pada Server Master
stop slave;
Selanjutnya buat user beserta password untuk replicationnya. Disini password yang ane gunakan adalah anandarizky.
grant replication slave on *.* to replica@'%' identified by 'passwordnyaapa';
Terakhir Jalankan perintah 
flush privileges; 
Flush Privileges adalah sinonim untuk reload. Perintah reload menyuruh server untuk membaca ulang tabel hak akses. 
Kemudian keluar dari shell MariaDB
exit


8.) Setelah itu masukan service mariadb kedalam firewall agar dapat diakses nantinya, kemudian kita reload
firewall-cmd --add-service=mysql --permanent 
firewall-cmd --reload
Keterangan : 
  • firewall-cmd : Perintah untuk masuk ke settingan Firewall 
  • firewall --permanent : Perintah untuk menambahkan sesuatu secara permanent didalam firewall 
  • firewall. --add-service=mysql : Perintah untuk menambahkan service mariadb supaya dapat melewati firewall

Konfigurasi Server Slave (Node1Rizky)

1.) Edit file mariadb-server.conf yang terletak pada directory /etc/opt/rh/rh-mariadb101/my.cnf.db. Untuk membuka file jalankan perintah
nano /etc/opt/rh/rh-mariadb101/my.cnf.db/mariadb-server.conf
Cari pada Line 9. tepatnya pada bagian [server] kita tekan enter sehingga membentuk baris baru di line 10. Kemudian tambahkan syntax seperti gambar dibawah yang sudah ane blok berwarna biru.
Keterangan : 
  • log-bin=mysql-bin : Merupakan binary logging sql, yaitu mysql.bin 
  • server-id=111 : Merupakan penamaan untuk server master ini, penamaan ini tidak bisa menggunakan kata-kata atau kalimat, hanya berlaku untuk angka. Disini contohnya ane memberikan penamaan untuk server master ini dengan 111
  • read_only=1 : Disini diatur menjadi 1, dengan demikian berarti tidak ada pembaruan yang diizinkan kecuali dari pengguna dengan hak superuser atau Server Slave yang diperbarui dari Server Master. Variabel read_only berguna bagi Server Slave untuk memastikan tidak ada pembaruan yang sengaja dilakukan di luar apa yang dilakukan pada Server Master
  • report-host=Node1Rizky : Merupakan hostname dari Server Slave itu sendiri, atau bisa juga di atur menjadi nama Domain, Hostname, atau IP Address Server Slave


2.) Restart service MariaDB nya, supaya konfigurasi dapat berjalan dengan baik

systemctl restart rh-mariadb101-mariadb


3.) Masukan service mariadb kedalam firewall agar dapat diakses nantinya, kemudian kita reload 
firewall-cmd --permanent --add-service=mysql 
firewall-cmd --reload
Keterangan : 
  • firewall-cmd : Perintah untuk masuk ke settingan Firewall 
  • firewall --permanent : Perintah untuk menambahkan sesuatu secara permanent didalam firewall 
  • firewall. --add-service=mysql : Perintah untuk menambahkan service mariadb supaya dapat melewati firewall

Back to Server Master (Rizky)

1.) Masuk ke dalam shell MariaDB
mysql -u root -p
Lakukan flush terhadap semua table yang terbuka
flush tables with read lock;
Table baru hanya diperbolehkan dibuka dengan read lock sampai perintah unlock tables; dijalankan. 
Kemudian lihat informasi status tentang binary log files pada Server Master, yang dimana informasi ini akan digunakan dan dicocokan pada Server Slave nantinya
show master status;
 Kemudian keluar dari shell MariaDB
exit


2.) Jalankan perintah
mysqldump -u root -p --all-databases --lock-all-tables --events > mysql_dump.sql 
Mysqldump ini adalah bagian dari paket database relasional mysql yang memungkinkan kita untuk "dump" database, atau kumpulan database, untuk backup atau transfer ke server SQL lain.
Nah kemudian kita coba ls, maka nanti akan terlihat hasil dump yang berhasil dibuat.
Keterangan :
  • --all-databases : Digunakan untuk Dump semua table di semua database 
  • --lock-all-tables : Digunakan untuk mengunci semua table di semua database 
  • --events : Digunakan untuk Dump events terhadap database yang di dump 
  • mysql_dump.sql : Merupakan hasil file yang terbuat dari proses mysqldump


3.) Masuk ke dalam shell MariaDB
mysql -u root -p
Lakukan unlock tables;
unlock tables;
Penggunaan unlock tables ini untuk melepas (semua) read lock yang diperoleh pada perintah flush tables with read lock;
Kemudian keluar dari shell MariaDB
exit


4.) Kemudian kita copy file hasil dump yang telah terbentuk tadi ke Server Slave. Disini untuk mengcopy file tersebut kita menggunakan perintah scp, kalau tidak salah sebelumnya ane pernah mengulas sedikit mengenai scp di blog ini, jad scp ini merupakan secure copy  yang merupakan pengiriman yang di enkripsi seperti ssh. Sebagai contoh disini ane coba mengirim file hasil dump tadi ke Server Slave tepatnya di directory /tmp/
scp mysql_dump.sql "domain server slave:/"filetujuan"/

Back to Server Slave (Node1Rizky)

1.) Kemudian masukkan file hasil dump nya ke Server Slave, supaya nanti nya terjadi sinkronisasi antara Server Master dan Server Slave
mysql -u root -p < /"letakfile"/mysql_dump.sql


2.) Masuk ke shell MariaDB
mysql -u root -p
Kemudian lakukan kaya semacam join atau connecting antara Server Slave dan Server Master
change master to
master_host='192.168.43.122',
master_user='replica',
master_password='anandarizky',
master_log_file='mysql-bin.000001',
master_log_pos=612;
Setelah itu start atau aktifkan mode slave pada Server Slave
start slave;


3.) Untuk melihat apakah Server Master dan Server Slave berhasil sinkron antara satu sama lain atau tidak bisa menjalankan perintah
show slave status\G
Kemudian lihat pada bagian Slave_IO_Running dan Slave_SQL_Running, apabila optionnya menunjukkan kata Yes, maka dapat dikatakan kedua Server berhasil melakukan sinkronisasi.


Verifikas Client

1.) Seperti biasa pastikan client DNS nya sudah diarahkan ke IP Server Master. Jika sudah kemudian buka web browser dan kemudian akses menggunakan domain. Disini domain nya adalah anandarizky.co.id dan subdomain untuk Server Master adalah www. Kemudian disertai /phpMyAdmin di belakangnya. Setelah itu coba lakukan login menggunakan user yang ada, disini user yang ane coba untuk login menggunakan user root.


2.) Nah berhasil masuk, sekarang coba kita buat Database baru. Contoh nya disini nama databasenya adalah TestDB Rizky.


3.) Nah database TestDB Rizky sudah berhasil dibuat.


4.) Sekarang coba akses menggunakan sub domain yang dimilik oleh Server Slave yaitu node1 dengan disertai nama domain dan /phpMyAdmin/ di belakangnya. Maka terlihat jelas database TestDB Rizky yang sebelumnya dibuat pada Server Master juga terlihat atau tersinkron pada Server Slave.

Mungkin hanya sekian yang dapat ane sharing, mohon maaf bila banyak kesalahan dan kekurangan baik dari segi kata maupun penulisan. Oh iya sedikit informasi waktu berbuka sekitar 2 jam lagi hehe.
Terima Kasih. Semoga Bermanfaat. 

Wassalamuallaikum Warahmatullahi Wabarakatuh.

 وَ السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ

1 comment:

  1. Hard Rock Hotel & Casino - MapYRO
    Get directions, reviews and information for Hard 전라남도 출장샵 Rock 목포 출장마사지 Hotel & Casino in Ridgefield, WV. 계룡 출장마사지 Hard Rock Casino, Resort Hotel, Spa and Convention 구미 출장마사지 Center in Ridgefield, 양주 출장샵

    ReplyDelete