{CentOS7} {LAB 9.6} MariaDB Database Replication
Assalamualaikum wr wbPada kesempatan kali ini saya akan menjelaskan tentang database replication, kalau sebelumnya saya sudah meposting tetang database replciation menggunakan postgresql. Sekarang saya posting tentang Database Replication dengan MariaDB
Apa itu Database Replication?
Database Replication adalah suatu metode yang digunakan untuk menyalin dan mendistribusikan data dari satu database ke database yang lain.
Tujuan dibuatnya Database Replication ini adalah agar bersifat redudant, ketika salah satu server mati maka akan masih ada pengganti lainnya. Selain itu, Database Replication ini digunakan sebagai backup dari suatu database untuk mengantisipasi kehilangan data akibat serangan DOS ataupun faktor lainnya
Topologi
Konfigurasi Server Master Database
Langkah pertama buat domain untuk web replicate nya, jadi nanti database replicate juga bisa di lihat dari web. Disini saya membuat domain node1 untuk database replication nya.
1) Edit file forward.tkj tambahkan domain dan ip address nya
nano /var/named/forward.tkj
2) Jangan lupa untuk menambahkan domain node1 nya pada file reverse.tkj nya juga ya.
nano /var/named/reverse.tkj
3) Restart service named, kemudian cek apakah domain yang tadi ditambahkan sudah bisa dijalankan atau belum. saya mengeceknya dengan perintah nslookup.
systemctl restart named
nslookup node1.pandutama.net
Jika sudah menambahkan domain untuk replicationnya, barulah kita mulai mengkonfigurasi untuk membuat database Replicationnya.
1) Edit file konfigurasi mariadb, yaitu mariadb-server.cnf yang terletak di /etc/opt/rh/rh-mariadb101/my.cnf.d/
nano /etc/opt/rh/rh-mariadb101/my.cnf.d/mariadb-server.cnf
2) Cari baris [mysqld] kemudian tambahkan syntak seperti yang sudah saya tandai warna kuning pada gambar dibawah ini
penjelasan :
log-bin=mysql-bin merupakan binary logging sql, yaitu mysql.bin
server-id=1 merupakan penamaan saja untuk si server, ini tidak bisa menggunakan kata-kata atau kalimat, hanya berlaku untuk angka. Pada contoh ini saya mengaturnya menjadi angka 13) Restart service mariadb agar konfigurasi tadi berjalan dengan lancar
systemctl restart rh-mariadb101-mariadb
4) Masuk ke shell mariadb
mysql -u root -p
5) Matikan mode slavenya, karena yang ini bertindak sebagai master.
stop slave;
6) Buat user replication beserta passwordnya
great replication slave on *.* to pandu@'%' identified by 'namapasword';
7) Jalankan perintah flush privileges;. Flush Privileges adalah sinonim untuk reload. Perintah reload menyuruh server untuk membaca ulang tabel hak akses.
flush privileges;
8) Keluar dari shell mariadb
exit
9) Tambahkan service mariadb kedalam firewall
firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload
Konfigurasi Server Slave (node1) (Replica)
1) Edit file konfigurasi mariadb, yaitu mariadb-server.cnf yang terletak di /etc/opt/rh/rh-mariadb101/my.cnf.d/
nano /etc/opt/rh/rh-mariadb101/my.cnd.d/mariadb-server.cnf
2) Cari baris [mysqld] kemudian tambahkan syntak seperti yang sudah saya tandai warna kuning pada gambar dibawah ini
penjelasan :
log-bin=mysql-bin merupakan binary logging mysql, yaitu mysql.bin
server-id=1 merupakan penamaan saja untuk si server, ini tidak bisa menggunakan kata-kata atau kalimat, hanya berlaku untuk angka. Pada contoh ini saya mengaturnya menjadi angka 2. Dan ingat ini harus dibedain id nya, jangan sama kaya server master
read_only=1, karena diatur menjadi 1, ini berarti 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=node1.pandutama.net merupakan host dari server slave itu sendiri, bisa kalian atur menjadi nama domain, hostname, atau ip address server slave kalian3) Restart service mariadb agar konfigurasi tadi berjalan
systemctl restart rh-mariadb101-mariadb
4) Tambahkan service mariadb kedalam firewall
firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload
Konfigurasi Server Master Database
1) masuk kedalam shell mariadbmysql -u root -p
2) Lakukan flush terhadap semua tables yang terbuka. Tabel baru hanya diperbolehkan dibuka dengan read lock sampai perintah unlock tables; dijalankan
flush tables with read lock;
3) Kemudian lihat informasi status tentang binary log files pada master, yang dimana informasi ini akan digunakan dan dicocokan pada server slave nanti
show master status;
4) Lakukan perintah mysqldump, Mysqldump ini adalah bagian dari paket database relasional mysql yang memungkinkan Anda untuk "dump" database, atau kumpulan database, untuk backup atau transfer ke server SQL lain.
mysqldump -u root -p --all-databases --lock-all-tables --events > mysql_dump.sqlpenjelasan :
--all-databases digunakan untuk Dump semua tabel di semua database
--lock-all-tables digunakan untuk Mengunci semua tabel di semua database
--events digunakan untuk Dump events terhadap database yang di dump
mysql_dump.sql adalah file yang terbuat dari proses mysqldump.
5) Masuk ke shell mariadb
mysql -u root -p
6) Jalankan perintah unlock tables;. Penggunaan unlock tables ini yaitu untuk melepas global (semua) read lock yang diperoleh pada perintah flush tables with read lock;
unlock tables
7) Keluar dari shell mariadb
exit
8) Copy file mysql_dump.sql yang telah terbuat tadi ke host server slave menggunakan perintah scp. Scp ini adalah secure copy, yang dimana proses kirim ini melalui enkripsi seperti ssh. Pada contoh ini saya akan mengcopynya ke directory /tmp/ pada slave
scp mysql_dump.sql "slave host":"file destination"
Konfigurasi Server Slave (Node1)(Replica)
1) Masukan file mysql_dump.sql yang telah tercopy tadi kedalam sql server slave. Hal ini dilakukan agar file dump pada slave sama dengan yang ada pada master, jadi nanti bisa tersinkronisasi.
mysql -u root -p < "letak file mysql_dump.sql"
2) masuk ke shell mariadb
mysql -u root -p
3) Kemudian lakukan join pada server slave ke server master
change master to merupakan opsi untuk mangatur parameter yang digunakan oleh server slave untuk terhubung dan 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 tersebut
master_log_file dan master_log_pos merupakan status binary log files beserta lokasinya pada server master. Ini harus sama dengan status master yang ada pada server master.
4) Jalankan mode slave, karena server ini berfungsi sebagai slave
start slave;
5) Sekarang lihat status slave untuk pengecekan apakah antara server master ataupun slave berhasil tersinkronisasi atau tidak
show slave status\GNah, jika berhasil tersinkronisasi, pada Slave_IO_Running dan Slave_SQL_Running statusnya yaitu Yes
Verifikasi Client
1) Masuk kedalam database master dengan username root beserta passwordnya.
2) Untuk pengujian, coba buat database pada server master, terserah kalian nama databasenya apa
Disini saya mencontohkan membuat dengan nama DBReplicationPandu
3) Pastikan database berhasil dibuat
4) Kemudian buka database pada node1 (replica) nya, pastikan database sudah terbuat seperti yang dibuat oleh master database.
Alhamdulillah selesai
Semoga Bermanfaat
Wassalamualaikum wr wb
0 comments: