Saturday 3 June 2017

LAB Centos 9.9 | MySQL | Replication

Assalamualaikum Wr. Wb.

Yoo gan :v kembali lagi diblog ini .-. . Sebelumnya ane minta maaf karena sekarang puasa :v, mohon dimaafkan yoo :v. Yup masih dihari yang cerah ini alangkah baiknya Saya membawa materi lanjutan dari lab sebelumnya bisa anda lihat dibagian bar admin server :v. Ya kali ini Saya akan mengshare tentang MySQL yaitu Replikasi Databases. Replikasi itu apa sih gan ?
Replikasi Databases adalah  metode yang digunakan untuk menyalin dan mendistribusikan data dari satu database ke database yang lain. Yang selanjutnya, mensinkronisasikan antar database, sehingga konsistensi data bisa terjamin. Replikasi Database juga dapat digunakan pada banyak sistem manajemen Database, yang mana proses ini terbentuk dari hasil sikronisasi antara  master dengan slave, atau antara Server Database yang asli dengan 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 Replikasi Database adalah agar Server bersifat redudant, jadii ketika salah satu server mati maka akan ada Server pengganti lainnya. Selain itu, Replikasi Database ini juga bisa digunakan sebagai backup dari suatu database untuk mengantisipasi kehilangan data akibat serangan DDOS atau yang lainnya.

Jadi disini saya anggepannya ada dua Server yang satu jadi master yang satunya lagi jadi Slave.

Ya Cukup singkat materi tentang replikasi, maka Lanjut ke topologinya. Oh iya, Disini Saya melanjutkan dari materi Installasi dan phpMyAdmin pada MySQL. mungkin jika belom buat servernya maka bisa lihat dibar admin server.

Topologi
Ya jika sudah lihat topologinya maka Lanjut ke Konfigurasinya guys :v ckckck

Prepare
Pada Database Replication di MySQL ini. Proses sinkronisasi antara server master dan server slave berjalan dengan cara mencocokan UUID.

UUID itu apa? Universally Unique Identifier (UUID) adalah standar identifier unik yang digunakan dalam pembuatan perangkat lunak. UUID pada dasarnya adalah angka 128 bit, yang disajikan dalam bentuk pengelompokan hexadesimal.

Dan karena disini Server slave saya merupakan hasil clone dari server master, maka dari itu, saya harus mengganti UUID server slave nya terlebih dahulu, karena jika UUID nya tidak diganti, maka proses sinkronisasi antara server master dan server slave akan gagal, dikarenakan UUIDnya sama atau bentrok.

Dan berikut adalah cara mengubah server uuid terhadap mysql :

Pertama, edit file auto.cnf untuk mengubah server UUID nya
 "nano /var/opt/rh/rh-mysql57/lib/mysql/auto.cnf"

Lalu ganti/edit server uuid-nya, disini saya hanya mengganti ujungnya saja. yang sebelumnya "7" menjadi "8"


Master Server
1. Pertama, edit file konfigurasi mysql, yaitu rh-mysql57-mysql-server.cnf yang terletak pada direktori /etc/opt/rh/rh-mysql57/my.cnf.d/ dengan menggunakan perintah
 nano /etc/opt/rh/rh-mysql57/my.cnf.d/rh-mysql57-mysql-server.cnf
2. Lalu cari baris [mysqld], kemudian tambahkan syntaks seperti yang sudah saya tandai warna kuning pada gambar dibawah
Keterangan :

  • log-bin=mysql-bin adalah binary logging sql, yaitu mysql.bin
  • server-id=100 merupakan penamaan atau bisa dibilang pengkodean untuk si server, dan penamaan ini tidak bisa menggunakan kata-kata atau kalimat, tetapi hanya berlaku untuk angka saja. Disini saya mengaturnya menjadi angka 100.

3. Setelah itu, restart service mysql nya dengan command
 systemctl restart rh-mysql57-mysqld
4. Selanjutnya, kita akses shell mysql
 mysql -u root -p
Lalu matikan mode slave pada server master
 stop slave;
Setelah itu, buat user replication beserta passwordnya
 grant replication slave on *.* to "namauser"@'%' identified by 'password untuk user' 
Setelah itu, jalankan perintah
 flush privileges;  

Flush privileges merupakan sinonim dari reload. Perintah ini akan menyuruh server untuk membaca ulang tabel hak akses.
Kemudian kita keluar dari shell mysql dengan perintah
exit
5.  Selanjutnya, masukkan service mysql kedalam firewall kemudian reload firewall nya
 firewall-cmd --permanent --add-service=mysql
 firewall-cmd --reload

Slave Server
1. Pertama, kita edit file konfigurasi mysql nya, yaitu rh-mysql57-mysql-server.cnf yang terletak pada direktori /etc/opt/rh/rh-mysql57/my.cnf.d/
 nano /etc/opt/rh/rh-mysql57/my.cnf.d/rh-mysql57-mysql-server.cnf
Kemudian cari baris [mysqld] kemudian tambahkan syntaks seperti yang sudah saya tandai warna kuning pada gambar dibawah
Keterangan :

  • log-bin=mysql-bin adalah binary logging mysql, yaitu mysql.bin
  • server-id=100 merupakan penamaan/pengkodean untuk server, dalam penamaan ini, kita tidak bisa menggunakan kata-kata atau kalimat, namun hanya berlaku untuk angka saja. Disini saya mengaturnya menjadi angka 100. Dan ingat, penamaan ini harus dibedakan id nya dengan server master, jangan sama seperti server master
  • read_only=1, karena diatur menjadi 1, ini artinya tidak ada pembaruan yang diizinkan kecuali dari pengguna dengan hak superuser atau server slave yang diperbarui dari master. Variabel read_only berguna bagi server slave untuk memastikan tidak ada pembaruan yang sengaja dilakukan di luar apa yang dilakukan pada master.
  • report-host=slave.azrich.net merupakan host dari server slave itu sendiri, report-host ini bisa juga kalian atur menjadi nama domain, hostname, atau ip address dari server slave kalian 
2 .Lalu, restart service mysql agar konfigurasi yang baru dilakukan bisa berjalan
 systemctl restart rh-mysql57-mysqld
3. Kemudian, masukkan service mysql kedalam firewall kemudian reload firewall nya
 firewall-cmd --permanent --add-service=mysql
 firewall-cmd --reload 

Replication Setting (Master)
1. Pertama, kita masuk ke shell mysql dengan command
 mysql -u root -p 
Setelah itu lakukan flush kepada semua tables yang terbuka. Dan tabel baru hanya diperbolehkan untuk dibuka dengan read lock sampai perintah unlock tables; dijalankan
 flush tables with read lock;
Kemudian, kita 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;

Lalu kita keluar dari shell mysql
 exit

2. Selanjutnya, jalankan perintah mysqldump, Mysqldump merupakan bagian dari paket database relasional mysql yang memungkinkan Anda untuk "dump" membuang database, atau kumpulan database untuk dibackup atau ditransfer ke server SQL yang lain.
Keterangan :
  • --all-databases digunakan untuk men-Dump semua tabel pada semua database
  • --lock-all-tables digunakan untuk mengunci semua tabel pada semua database
  • --events digunakan untuk men-Dump events terhadap database yang di dump
  • mysql_dump.sql adalah file yang terbuat dari proses mysqldump ini.


3. Setelah itu, masuk ke shell mysql dengan command
 mysql -u root -p  
Lalu jalankan perintah
 unlock tables;
Perintah unlock tables; ini digunakan untuk melepas global (semua) read lock yang diperoleh pada perintah flush tables with read lock;
Kemudian, kita keluar dari shell mysql
 exit
4. Lalu copy file mysql_dump.sql yang telah terbuat sebelumnya, ke host server slave dengan menggunakan perintah scp. Scp ini adalah secure copy, dimana proses kirim ini akan melalui enkripsi seperti ssh. Disini saya akan mengcopy file nya ke directory /tmp/ pada server slave.
 scp mysql_dump.sql 'host server slave':'tempat file akan dicopy'

Replication Setting (Slave)
1. Pertama, masukan file mysql_dump.sql yang sudah tercopy tadi kedalam sql server slave. Hal ini dilakukan agar file dump pada server slave sama dengan yang ada pada server master, sehingga nanti nya bisa tersinkronisasi.
 mysql -u root -p < "letak file mysql_dump.sql"
 
2. Kemudian, masuk ke shell mysql
 mysql -u root -p
Setelah itu, lakukan join pada server slave ke server master
Keterangan :
  • change master to merupakan opsi untuk mengatur parameter yang digunakan oleh server slave agar terhubung dan bisa berkomunikasi dengan server master selama replikasi.
  • master_host merupakan alamat host dari server master
  • master_user merupakan user replica pada server master
  • master_password merupakan password dari user replica tersebut
  • master_log_file dan master_log_pos merupakan status binary log files beserta lokasinya yang berada pada server master. Dan ini harus sama dengan status master yang ada pada server master tersebut.


Selanjutnya, kita jalankan mode slave nya dengan perintah

 start slave;
Setelah itu, kita lihat status slave untuk pengecekan apakah antara server master ataupun slave berhasil tersinkronisasi atau tidak dengan menggunakan command

 show slave status\G

Jika berhasil tersinkronisasi, maka pada Slave_IO_Running dan Slave_SQL_Running statusnya adalah Yes.

Verification phpMyAdmin
1. Untuk pengujiannya, disini saya akan mencoba membuat database pada server master, dan kalian bebas menentukan nama untuk databasenya. Buatnya ini di Web menggunakan phpMyAdmin
Setelah itu, akses server slave nya. Dan coba cek apakah database yang dibuat pada server master, juga ada pada server slave. Jika ada, itu berarti konfigurasi database replication yang sudah dilakukan sudah berhasil.
Cukup Sekian Yang saya Sampaikan Kalau ada kata kata yang salah mohon dikomentar
Wassalamualaikum Wr.Wb.


EmoticonEmoticon