Tutorial Replikasi MySQL

mysql_logo.jpgTutorial kali ini adalah mengenai pembuatan replikasi Master-Slave untuk database MySQL. Adapun yang dimaksud dengan Master-Slave adalah sebuah konsep dimana salah satu server MySQL bertindak sebagai Master (database yang selalu terupdate) dan Slave adalah server MySQL satunya yang bertindak melakukan replikasi dari data yang masuk ke database Master tersebut. Dengan kata lain, bahwa replikasi ini adalah replikasi One-way. Perlu saya ingatkan bahwa metoda ini tidak menjamin data Anda aman dan bukan juga bukan solusi MySQL Backup yang dianjurkan karena jika ada data rusak masuk via MySQL Master maka data di server MySQL Slave pun akan ikut rusak. Berikut cara melakukan replikasi Master-Slave untuk MySQL

Dalam tutorial berikut, saya berasumsi bahwa Anda login sebagai root dan bekerja di direktori /root
(di server MySQL Master dan Slave) serta menggunakan variable-variable berikut:

– IP_MASTER : IP MySQL Master
– IP_SLAVE : IP MySQL Slave
– kalpindb : Nama database yang hendak direplikasi
– [passworddbroot] : password database untuk akses root

1. Di sisi MySQL Master, cek apakah koneksi ke port 3306 (MySQL) dari IP_SLAVE diijinkan
   #/sbin/iptables -I INPUT -p[passworddbroot] TCP –dport 3306 -s IP_SLAVE -j ACCEPT
  
2. Di sisi MySQL Master, tambahkan 1 user khusus untuk replikasi
   # mysql -u root -p[passworddbroot]
   mysql> grant replication slave on *.* TO replikasi@”IP_SLAVE” identified by ‘passwordAnda’;
   mysql> quit
  
   Ganti ‘passwordAnda’ dengan password pilihan Anda.

3. Masih di sisi MySQL Master, buka file /etc/my.cnf:
   #vi /etc/my.cnf
   dan tambahkan isian berikut ke bagian [mysqld]:
   log-bin=/var/lib/mysql/mysql-bin.log
   server-id=1
   binlog-ignore-db=”mysql”
  
   Perintah diatas akan menginformasikan bahwa MySQL Master memiliki ID 1, log dalam format binary ke file /var/lib/mysql/mysql-bin.log dan meminta supaya MySQL Slave mengabaikan melakukan replikasi database mysql.
   Lalu restart mysql server Anda yang di Master:
   #service mysqld restart
   atau
   #service mysql restart
   atau
   sesuaikan dengan script startup mysql Anda.

4. Lakukan backup database di Master yang hendak Anda replikasi, supaya bisa direstore ke server slave sebelum dilakukan replikasi
   # mysql -u root -p[passworddbroot] kalpindb > kalpindb.sql
   Copy file kalpindb.sql ke server slave
   # scp kalpindb.sql IP_SLAVE:/root

5. Check status MySQL Master Anda
   # mysql -u root -p[passworddbroot]
   mysql> SHOW MASTER STATUS;
   Anda akan melihat hasil seperti berikut:
   +——————+———-+————–+——————+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +——————+———-+————–+——————+
   | mysql-bin.000155 |   225505 | kalpindb     |                  |
   +——————+———-+————–+——————+
   1 row in set (0.00 sec)

   Harap catat nama file (mysql-bin.00155) serta posisi (225505) yang saat ini sedang aktif di MySQL Master Anda.

Kita masuk ke server MySQL Slave dan melakukan konfigurasi supaya melakukan replikasi ke MySQL Master

1. Buka file /etc/my.cnf
   #vi /etc/my.cnf
   dan tambahkan baris-baris berikut dibagian [mysqld]
   server-id=2
   master-host = IP_MASTER
   master-user = replikasi
   master-password = passwordAnda
   master-port = 3306
  
   Sesuaikan variable diatas dengan langkah dibagian Master

2. Lakukan restore database yang kita backup dari MySQL Master
   # mysql -u root -p[passworddbroot]
   mysql> create database kalpindb;
   mysql> quit
   # mysql -u root -p[passworddbroot] kalpindb < kalpindb.sql

3. Restart MySQL service Anda
   #service mysqld restart
   atau
   #service mysql restart
   atau
   sesuaikan dengan script startup mysql Anda.

4. Check status di MySQL Slave
   # mysql -u root -p[passworddbroot]
   mysql> STOP SLAVE;
   mysql> CHANGE MASTER TO MASTER_LOG_FILE='[mysql-bin.000155]’,MASTER_LOG_POS=[225505];
   mysql> START SLAVE;
   mysql> SHOW SLAVE STATUS\G
  
   Perintah diatas akan menghentikan sementara status slave di MySQL Slave, kemudian melakukan perubahan nama file dan posisi aktif di MySQL Master sebelum replikasi
   Perintah berikutnya adalah mengaktifkan status SLAVE dan melakukan pengecekan status server SLAVE. Dari hasil pengecekan tersebut maka harus dipenuhi hal-hal berikut
   – Slave_IO_State: Waiting for master to send event <=== Harus ada, kalau tidak ada baris ini artinya replikasi masih belum berjalan.
   Contoh output dari server MySQL Slave saya:
   mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: xxx.xxx.xxx.xxx
                Master_User: replikasi
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000155
        Read_Master_Log_Pos: 233408
             Relay_Log_File: mysqld-relay-bin.000002
              Relay_Log_Pos: 171568
      Relay_Master_Log_File: mysql-bin.000155
           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: 233408
            Relay_Log_Space: 171568
            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
1 row in set (0.00 sec)

Dengan demikian, replikasi sudah berjalan dengan baik. Dan kembali, saya ingatkan Anda bahwa sistem replikasi Master-Slave ini tidak menjamin keamanan data Anda.
Sebaiknya Anda, melakukan backup berkala terhadap database yang ada di server MySQL Master Anda, ke tape drive atau server lainnya.

Catatan: Anda bisa melakukan replikasi banyak database sekaligus, cukup mengulangi langkah backup database yang diinginkan di MySQL Master dan direstore ke MySQL Slave.

Semoga bermanfaat.

About Kalpin Erlangga Silaen

My name is Kalpin Erlangga Silaen, black eyes, black hair with good smiles
This entry was posted in Umum. Bookmark the permalink.

5 Responses to Tutorial Replikasi MySQL

  1. Sangar says:

    om kalpin aku boleh minta spoof pribadi ndak om??

  2. DzenT says:

    ewh. tengkiyu om inpona.

  3. SkiN says:

    Prinsip nya kayak HD SCSI ya oms kalpin ya ..

    Patut di coba` 😀

  4. fajar says:

    klo master to master bisa gak???

    Kalpin: Bisa om, sayangnya saya lagi ada kesibukan tersendiri jadi belum sempat nulis. Mudah-mudahan dalam waktu dekat ya.

  5. CO_NGGAK_LAKU says:

    Wah,makasih boz Kalpin..sangat membantu bagi gw yg msh newbie.
    Oia,gw sll menunggu dibukanya kembali request spoof di Allnetwork 😀

Leave a Reply

Your email address will not be published. Required fields are marked *