in Database

Cara Replikasi Database Master-Slave MariaDB 10 di Ubuntu 16.04

Replikasi Database MariaDB Master-Slave di Ubuntu

Replikasi database adalah suatu metode untuk melakukan duplikasi database dari satu/banyak server ke satu/banyak server yang lain.

Model replikasi database:

  • Master-Slave: Jika terjadi perubahan database pada Master, database pada Slave juga ikut berubah. Namun, jika terjadi perubahan pada Slave, Master tidak terpengaruh.
  • Master-Master: Semua server bertindak sebagai Master dan Slave. Karena jika terjadi perubahan database di salah satu server, database pada server lain juga ikut berubah.

Pada percobaan replikasi ini menggunakan model replikasi Master-Slave. Untuk model replikasi Master-Master baca di Cara Replikasi Database Master-Master MariaDB 10 di Ubuntu 16.04.

Perangkat Percobaan

Perangkat yang digunakan pada percobaan replikasi:

  • Distro: Ubuntu 16.04 LTS
  • MariaDB: 10.0.29
  • IP Master: 10.0.8.26
  • IP Slave: 10.0.8.38

Konfigurasi Server MariaDB Master

Ubah konfigurasi MariaDB

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

# baris 29, ubah IP bind-address
bind-address = 10.0.8.26

# baris 74, lepas comment
server-id = 1

# baris 75, lepas comment
log_bin = /var/log/mysql/mysql-bin.log 

Restart service MariaDB

sudo systemctl restart mysql

Buat user untuk akses replikasi

mysql -u root -p

GRANT REPLICATION SLAVE ON *.* TO 'replica'@'10.0.8.38' IDENTIFIED BY 'secret';
FLUSH PRIVILEGES;	

Kunci database agar tidak ada perubahan pada saat konfigurasi replikasi

FLUSH TABLES WITH READ LOCK;

Tampilkan status master. File dan Position dibutuhkan pada saat konfigurasi Slave.

SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |     1961 |              |                  |
+------------------+----------+--------------+------------------+ 

Konfigurasi Server MariaDB Slave

Ubah konfigurasi MariaDB

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

# baris 29, ubah IP bind-address
bind-address = 10.0.8.38

# baris 74, lepas comment. Ganti dengan nomor lain, jangan sama dengan master
server-id = 2

# baris 75, lepas comment
log_bin = /var/log/mysql/mysql-bin.log

Restart service MariaDB

sudo systemctl restart mysql

Konfigurasi koneksi ke Master

mysql -u root -p

CHANGE MASTER TO
MASTER_HOST='10.0.8.26',
MASTER_USER='replica',
MASTER_PASSWORD='secret',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1961; 

Jalankan slave

START SLAVE;

Jika tidak ada masalah pada saat menjalankan slave, lepas kunci database pada server master

mysql -u root -p

UNLOCK TABLES;

Tampilkan status slave

SHOW SLAVE STATUS \G

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.8.26
                  Master_User: replica
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 1961
               Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 1750
        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: 1961
              Relay_Log_Space: 2048
              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: 100
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: No
                  Gtid_IO_Pos: 
1 row in set (0.00 sec)

Pengujian

  • Lakukan pembuatan database, pembuatan tabel, CRUD record pada server Master.
  • Setiap selesai menjalankan satu perintah pada server Master periksa server Slave apakah ada terjadi hal yang sama pada server Master.

cara replikasi database mariadb master-slave ubuntu

selamat mencoba 🙂

referensi:
server-world.info/en
devops.profitbrikcs.com

Write a Comment

Comment