dropdown_menu

Selasa, 20 Agustus 2019

Replikasi Database Mysql


Replikasi Mysql merupakan sebuah cara yang digunakan untuk membuat salinan (backup) dari database master ke database slave secara real time. Penggunaan database replikasi ini sangat bermanfaat ketika kita melakukan analisa data. kita dapat melakukan analisa data pada database slave sehingga apabila terjadi kesalahan dalam menganalisa, tidak akan mengganggu database master.

Kali ini kita akan melakukan konfigurasi replikasi database master dan slave dengan konfigurasi sebagai berikut.

Database Master
IP address = 192.168.14.59
Sistem Operasi = Windows 10
Database = db_replikasi

Database Slave
IP address = 192.168.14.60
Sistem Operasi = Windows 10
Database = db_replikasi

KONFIGURASI DATABASE MASTER



Membuat Database Master

MariaDB [none]> CREATE DATABASE db_replikasi;

MariaDB [none]> USE db_replikasi;

MariaDB [db_replikasi]> create table biodata (
    -> nama varchar (50),
    -> alamat varchar (100),
    -> ttl date,
    -> telepon integer (20));
Query OK, 0 rows affected (0.337 sec)



Menambahkan data kedalam tabel biodata.

MariaDB [db_replikasi]> insert into biodata values ('fiki','sumbertempur','1987-08-28',
'081515946941');
Query OK, 1 row affected, 1 warning (0.249 sec)

Konfigurasi Mysql my.cnf

Tambahkan baris berikut.
bind-address = "0.0.0.0"
log-bin = "mysql-bin"
binlog_do_db = "db_replikasi"
server-id = "1"

Restart service mysql server

Membuat user baru pada database master

MariaDB [db_replikasi]> grant replication slave on *.* to 'fiki_slave'@'%' identified by '12345678';
Query OK, 0 rows affected (0.332 sec)

MariaDB [db_replikasi]> flush privileges;
Query OK, 0 rows affected (0.001 sec)

Dump Database
Dump database ini akan kita import ke database slave, namun sebelum melakukan dumping database, kita harus mengunci database master agar tidak ada perubahan data selama kita melakukan proses dumping.

MariaDB [db_replikasi]> use db_replikasi;
Database changed
MariaDB [db_replikasi]> flush tables with read lock;
Query OK, 0 rows affected (0.006 sec)

MariaDB [db_replikasi]> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      328 | db_replikasi |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.001 sec)

MariaDB [db_replikasi]> quit;


Lakukan Dumping database db_replikasi.
D:\xampp\mysql\bin>mysqldump -u root -p db_replikasi > db_replikasi.sql
Enter password:
D:\xampp\mysql\bin>

Unlock database yang tadi telah di lock
MariaDB [(none)]> use db_replikasi;
Database changed
MariaDB [db_replikasi]> unlock tables;
Query OK, 0 rows affected (0.000 sec)


KONFIGURASI DATABASE SLAVE

Buat database baru dengan nama db_replikasi
MariaDB [(none)]> create database db_replikasi;
MariaDB [(none)]> quit;

Import database master yang telah kita dump.
mysql -u root -p db_replikasi < c:\users\client1\downloads\db_replikasi.sql

Konfigurasi Mysql Slave

Buka file xampp/mysql/bin/my.cnf
Tambahkan abris berikut ini.
log-bin = mysql-bin
binlog_do_db = db_replikasi
server_id = 2

Login ke Mysql, kemudian jalankan perintah dibawah ini.
CHANGE MASTER TO MASTER_HOST='192.168.14.59',MASTER_USER='fiki_slave', 
MASTER_PASSWORD='12345678', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=  328;

Keterangan :
MASTER_HOST = IP dari database master
MASTER_USER = user yang telah kita buat sebelumnya di database master
MASTER_PASSWORD = password user yang kita buat di database master
MASTER_LOG_FILE = nama file log-bin (dari perintah show master status)
MASTER_LOG_POS = posisi dimulainya replikasi (dari perintah show master status)

Jalankan database slave
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status \g
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.14.59
                  Master_User: fiki_slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 328
               Relay_Log_File: u-serv-relay-bin.000004
                Relay_Log_Pos: 988
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 855
              Relay_Log_Space: 1196
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
                  Master_UUID:
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
1 row in set (0.00 sec)



Selanjutnya, lakukan proses CRUD pada database master, jika replikasi berhasil seharusnya pada database slave akan mengalami perubahan data yang sama seperti pada database master.


Tidak ada komentar:

Posting Komentar