Assalamu'alaikum warahmatullah wabarakatuh Ciiiee,, balik lagi bersama anee.. Kali ini ane mau share aja nih cara membuat replicati...

CentOS 7 : 9.9 Replication Setting on MySQL Apache CentOS 7

 Assalamu'alaikum warahmatullah wabarakatuh

Ciiiee,, balik lagi bersama anee.. Kali ini ane mau share aja nih cara membuat replication settings di MySQL dengan Apache di CentOS7.  Replication Settings ini berguna saat anda ingin membuat klone, atau tiruan dari server databasenya. Ini untuk menghindari yang namanya penyerangan web sih...

Database yang berada pada server master, akan di clone dan disebarkan ke server slave (Cadangan). Dengan begitu, insyaallah database jadi lebih aman.



Saya menggunakan : 
      • - 2 Server CentOS dengan Apache dan MySQL beserta phpMyAdminnya
      • - 1 client windows dengan browser

Topologi


Bahan-bahan yang dibutuhkan:
    • - 2 Server CentOS
    • - 1 Komputer Client berbasis GUI
    • - Terinstall DNS untuk Master Server, tutor DISINI
    • - Sudah terinstall Apache, modul php, tutor DISINI
    • - Terinstall MySQL, tutor DISINI
    • - Terinstall phpMyAdmin, tutor DISINI
    • - SU mode



Pokok bahasan kita adalah :
    • 1. Menambahkan 2 DNS dengan 2 IP yang berbeda di Master
    • 2. Konfigurasi dan Manajemen User MySQL di Master Server
    • 3. Konfigurasi MySQL di Slave/ node1 server
    • 4. Membuat Get-Dump data di Master Server
    • 5. Konfigurasi Replica Settings di Slave/node1 Server
    • 6. Uji Coba Client


Konfigurasi DNS di Master Server

1. Edit pada forward nya



2. Walau Server Slave berada di Server lain, kita daftarkan domainnya disini aja ya



3. Jangan lupa juga reverse nya



4. Kita cek apakah konfigurasi DNS sudah benar atau belum
nslookup node1.networknjay.com



Konfigurasi dan Manajemen User di MySQL Master Server


1.Edit sedikit pada file berikut ini...

nano /etc/opt/rh/rh-mysql57/my.cnf.d/rh-mysql57-mysql-server.cnf




2.Lalu pada baris ke "22" lalu tambahkan Script berikut...
[mysqld]
log-bin=mysql-bin
server-id=1
Keterangan :
- "log-bin=mysql-bin" = pengarahan ke log pada mysql
-"server-id=1" adalah sintak untuk Memberikan Uniq ID "nomor cantik" pada server



3.Simpan dan Keluar lalu restart MySQL nya.

systemctl restart rh-mysql57-mysqld 




4.  Masuk ke MariaDB nya dan masukkan password anda
mysql -u root -p



5. Membuat User "replica". Kita buat user "replica" dengan password "Xianjeng123!". Boleh diganti untuk kata password nya, tapi untuk nama user "replica" SEBAIKNYA JANGAN DIGANTI.
grant replication slave on *.* to replica@'%' identified by 'Xianjeng123!';
keterangan :
Untuk memberitahu server untuk me-reload tabel grant, lakukan operasi flush-privileges. Hal ini dapat FLUSH PRIVILEGES dilakukan dengan mengeluarkan sebuah pernyataan atau dengan menjalankan hak istimewa mysqladmin flush-mysqladmin atau reload .


6. Lalu kita flush privileges dan exit.
flush privileges;
exit
keterangan :
sudah dijelaskan diatas..




Konfigurasi MySQL di Slave /node1

1. Login pada Slave dan Edit sedikit pada direktori ini

nano /etc/opt/rh/rh-mysql57/my.cnf.d/rh-mysql57-mysql-server.cnf




2. Tambahkan skrip berikut pada baris ke "22".
[mysqld]
log-bin=mysql-bin
server-id=102
read_only=1
report-host=node01.srv.world
keterangan :
- "log-bin=mysql-bin" = Tambahkan log dari MySQL
- "server-id=102" = memberikan ID yang Uniq (harus beda sama master, lebih ke penamaan lewat angka aja sih)
- "read_only=1" = Kasih baca
- "report-host=node1.networknjay.com" = nah, ini kita isi hostname dari slave nya



3. Simpan dan Keluar lalu restart MySQL nya
systemctl restart rh-mysql57-mysqld 




Membuat Get-Dump data untuk MySQL (File backup konfigurasi) pada MASTER


1. Masuk root master, dan login ke MySQL nya.. lalu kita flush tables, dan kita lihat file status dari masternya. List table ini berguna bagi Slave untuk mencocokkan konfigurasi replica dengan master. HAFALKAN FILE DAN POSITION NYA!!!

mysql -u root -p 
flush tables with read lock; 
show master status;
exit
keterangan:
Mengenai flush tables, The FLUSHpernyataan memiliki beberapa bentuk varian yang jelas atau reload berbagai cache internal tabel flush, atau memperoleh kunci. Untuk mengeksekusi FLUSH, Anda harus memiliki hak RELOADistimewa. Pilihan flush yang spesifik mungkin memerlukan hak istimewa tambahan, seperti yang dijelaskan kemudian. Secara default, server menulis FLUSHpernyataan ke log biner sehingga mereka meniru replikasi budak. Untuk menekan logging, tentukan NO_WRITE_TO_BINLOGkata kunci opsional atau alias nya LOCAL.
-"flush tables with read lock" adalah perintah untuk mengunci semua table
- "show master status" adalah perintah untuk melihat file log dari mysql
------TABLES
- "File" adalah file Log dari MySQL yang akan di singkronisasikan pada Slave
- "Position" adalah penomoran file Log nya. (Nomor tidak harus sama)



2. Keluar dari databasenya.. dan ketikkan perintah ini untuk mengeksekusi file dump. Bisa dibilang, kita bikin backupan konfigurasi yang ada saat ini..
mysqldump -u root -p --all-databases --lock-all-tables --events > mysql_dump.sql 



3.Kembali lagi ke MariaDB nya.. Lalu unlock table yang barusan kita execute.. Lalu keluar
mysql -u root -p
unlock tables; 
exit
keterangan :
mengenai lock dan unlock tables, MySQL memungkinkan sesi klien untuk memperoleh kunci tabel secara eksplisit untuk tujuan bekerja sama dengan sesi lain untuk akses ke tabel, atau untuk mencegah sesi lain memodifikasi tabel selama periode ketika sesi memerlukan akses eksklusif kepada mereka
- "unlock tables" adalah perintah untuk membuka table kembali


4.Kita transfer file mysql_dump.sql ke node1 dengan menggunakan user ROOT dari SERVER NODE1 atau Slave nya.. Ingat, MASUKKAN PASSWORD ROOT SERVER NODE1!!! Ini ibarat mengirim sebuah file dengan menggunakan SSH, jadi atur dulu SSH untuk Node1 nya..
scp mysql_dump.sql node1.networknjay.com:/tmp/ 
keterangan :
- "scp" adalah perintah untuk mentransfer file keluar Server, ini juga biasa digunakan pada FTP atau Shared folder dengan syarat kita memiliki izin akses masuk ke PC nya (punya user)




Konfigurasi Replication Setting MySQL di Slave

1.  Setelah file terkirim, kita import file mysql_dump.sql berikut ke MySQL. dengan password root dari NODE1 nya. Karena tadi kita kirim file backup tersebut ke /tmp
mysql -u root -p < /tmp/mysql_dump.sql 




2. Kita masuk ke MariaDB Node1 nya
 mysql -u root -p
change master to 
    -> master_host='172.16.11.115',     # IP master MySQL nya
    -> master_user='replica',     # ID/ User replica
    -> master_password='Xianjeng123!',     # Password Replica
    -> master_log_file='mysql-bin.000001',     # Ingat step "show master status"? Copikan!
    -> master_log_pos=732;     # Position diambil berdasarkan step diatas


3. Start slaaaveee nyaa... :v Kita akan mulai replicaanyaaaa
start slave;




4. Lalu kita lihat, apakah Server dan Slave /Node1 sudah saling terhubung atau belum. Dengan melihat atau menyimak yang sudah di beri garis merahh..
show slave status\G




Uji Coba Client

1.Saya menggunakan client Windows 10 PRO Ori dengan browser mozilla, dan saya akan mencoba mengakses domain dari database server saya.. www.networknjay.com/phpMyAdmin dan Node1.networknjay.com/phpMyAdmin.




2.Ciiie kebuka ciiiee,, lalu kita ke MASTER DULU deh,.. Coba buat database baru. 




3. Testing_DB ya nama databasenya




4. Muncul yaa nama database nya di Server Master....




5. Kita coba ke Slave atau Node1.. Kita login dan lihat daftar database nya.....

0 comments: