Replikasi Database adalah salah satu teknik Disaster Recovery, teknik ini melakukan semacam backup dari database master (utama) ke database slave (backup).
Misal kita memiliki sebuah web server dan database server yang terpisah. Ketika orang mengakses web server kita, maka data-data yang di inputkan orang-orang melalui web tersebut akan masuk ke Database server MasterDB (192.168.1.7). Namun dengan menggunakan teknik replikasi, ketika orang-orang menginput data dan masuk ke Database Server MasterDB (192.168.1.7) , maka secara otomatis data yang telah dimasukkan ke Database MasterDB akan di copy ke Database slave ReplicationDB (192.168.1.8).
Sehingga apapun perubahan data yang di lakukan pada Database MasterDB akan otomatis di replikasi ke database ReplicationDB. Dengan demikian ketika MasterDB mengalami kerusakan, maka data-data akan tetap aman karena telah di replikasi ke ReplicationDB.
Pada tutorial Kali ini, saya menggunakan kasus sebagai berikut
2 buah Server dengan OS Centos 7
Database Engine : MariaDB (Forked from Mysql)
Server MasterDB : IP:192.168.1.7/24, Hostname: sqldb1, Server Utama
Server ReplicationDB : IP :192.168.1.8/24, Hostname: sqldb2, Server Backup
Database yang akan di replikasi : sabtodb
1. Install Centos 7 kepada 2 buah server
2. Setelah di install login lah sebagai root dan hapus paket bernama firewalld
# yum erase firewalld
3. Lalu Disable SELinux untuk memudahkan kita dalam melakukan konfigurasi
# nano /etc/selinux/config
———————————————————————-
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted – Targeted processes are protected,
# minimum – Modification of targeted policy. Only selected processes are pr$
# mls – Multi Level Security protection.
SELINUXTYPE=targeted
———————————————————————-
4. Setting file Hosts pada kedua server
# nano /etc/hosts
—————————————————————————————-
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#– Tambahkan baris berikut –#
192.168.1.7 sqldb1
192.168.1.8 sqldb2
—————————————————————————————-
5. Kemudian restart kedua server
# init 6
6. Setelah itu, install MariaDB (pengganti Mysql) pada kedua server
# yum install mariadb-server mariadb
7. Buatlah agar MariaDB dapat langsung berjalan ketika server startup, lakukan ini pada kedua server
# systemctl enable mariadb
# systemctl start mariadb
# service mariadb restart
8. Setelah itu, berikan pasword login pada mariadb, lakukan ini pada kedua server
# mysql_secure_installation
Opsi 1: tekan [enter]
Set Root Password: Y [enter]New Password: 123456 [enter]
Re-Enter New Password: 123456 [enter]
Remove anonymous user: Y [enter]
Disallow root login remotely: n [enter]
Remove test database and access to it: Y [enter]
Reload privilege tables now: Y [enter]
kita telah menset login untuk masuk ke prompt MariaDB yaitu:
user: root
pass:123456
=== Perintah dibawah ini dilakukan hanya pada server MasterDB sqlbd1 (192.168.1.7) ===
9. Tambahkan baris berikut pada file konfigurasi pada my.cnf
# nano /etc/my.cnf
——————————————————————————————————–
[mysqld]
server_id=1
log-basename=master
log-bin
binlog-format=row
binlog-do-db=sabtodb
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
# Settings user and group are ignored when systemd is used.
——————————————————————————————————–
10. Kemudian restart MariaDB, mungkin membutuhkan waktu beberapa detik jadi mohon sabar menanti.
# service mariadb restart
11. Masuklah ke prompt MariaDB dan buatlah user dan password yang nantinya akan digunakan oleh ReplicationDB untuk berhubungan dengan server MasterDB
# mysql -u root -p123456
MariaDB [(none)]> STOP SLAVE;
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO ‘userslave’@’%’ IDENTIFIED BY ‘passwordslave’;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
MariaDB [(none)]> SHOW MASTER STATUS;
+————————+———–+——————+
| File | Position | Binlog_Do_DB |
+————————+———–+——————+
| mariadb-bin.000002 | 245 | sabtodb |
+————————+———–+——————+
Catatlah hasil output diatas:
File: mariadb-bin.000002
Pos: 245
BinlogDB: sabtodb
12. Lakukan dumping database, yang nantinya file hasil dumping ini akan di transfer ke server ReplicationDB
# mysqldump –all-databases –user=root –password –master-data > masterdatabase.sql
13. Masuk ke prompt mariadb dan lakukan unlock
# mysql -u root -p123456
MariaDB [(none)]> UNLOCK TABLES;
MariaDB [(none)]> quit
14. Lalu Transfer file hasil dumping tadi ke server ReplicationDB
# scp masterdatabase.sql root@192.168.1.8:/root/
Selesai sudah konfigurasi untuk MasterDB. Sekarang kita akan konfig server ReplicationDB
=== Perintah dibawah ini dilakukan hanya pada server ReplicationDB sqlbd2 (192.168.1.8) ===
15. Tambahkan baris berikut pada file my.cnd di server ReplicationDB
# nano /etc/my.cnf
———————————————————————————————————-
[mysqld]
server-id = 2
replicate-do-db=sabtodb
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
# Settings user and group are ignored when systemd is used.
———————————————————————————————————-
16. Import database dari file yang sudah di transfer dari MasterDB tadi
# mysql -u root -p < /root/masterdatabase.sql
17. Masuk ke prompt mariadb dan buat akses untuk mendapatkan replikasi database dari MasterDB
# mysql -u root -p123456
MariaDB [(none)]> STOP SLAVE;
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=’192.168.1.7′, MASTER_USER=’userslave’, MASTER_PASSWORD=’passwordslave’, MASTER_LOG_FILE=’mariadb-bin.000002′, MASTER_LOG_POS=245;
MariaDB [(none)]> SLAVE START;
MariaDB [(none)]> SHOW SLAVE STATUS \G;
Selesai sudah konfigurasi pada Replication Server, saatnya untuk melakukan Testing
=== Perintah dibawah ini dilakukan hanya pada server MasterDB sqlbd1 (192.168.1.7) ===
18. Buatlah database bernama sabtodb dan table bernama contoh, serta di isi datanya
# mysql -u root -p
MariaDB [(none)]> create database sabtodb;
MariaDB [(none)]> use sabtodb;
MariaDB [(none)]> create table contoh (id_contoh int(10) not null, nama varchar(200) not null);
MariaDB [(none)]> insert into contoh values (1,’Cindy Yuvia’);
MariaDB [(none)]> insert into contoh values (2,’Beby Chaesara Anadila’);
MariaDB [(none)]> exit;
=== Perintah dibawah ini dilakukan hanya pada server ReplicationDB sqlbd2 (192.168.1.8) ===
19. Lalu Cek pada server ReplicationDB, apakah database dan table yang kita buat sudah masuk ke server ini.
# mysql -u root -p
MariaDB [(none)]> show databases;
MariaDB [(none)]> use sabtodb;
MariaDB [(none)]> show tables;
MariaDB [(none)]> select * from contoh;
Sekian tutorial tentang Replikasi Database, Jika ada kritik/saran silahkan tinggalkan comment. Terimakasih telah membaca dan semoga bermanfaat.