S0t4's Blog

Hanya Catatan dan Mencoba Untuk Berbagi

Tuesday, July 21, 2015

Cara Membuat Master Replikasi Database MySQL

  Blogger Sejati       Tuesday, July 21, 2015
Hanya Catatan...



Ini update tulisan saya tentang replikasi database mysql yang pernah saya buat dahulu untuk versi MySQL terbaru.


Kali ini saya menggunakan versi MySQL 14.14 (Ubuntu 15.04).
Untuk mengecek versi MySQL yang dipakai, bisa menggunakan perintah #mysql --version dari terminal linux.

Asumsi :
Server MySQL sudah terinstal di kedua komputer, kalau belum bisa diinstal dahulu $
sudo apt-get install mysql-server mysql-client
 
Server master MySQL address : 192.168.1.1
Server Slave MySQL address : 192.168.1.2

OK Langsung saja ya ke step-step pengerjaannya...


SERVER MASTER
  1.  Edit file konfigurasi mysql
    $sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf atau
    untuk versi yang lama
    $sudo nano /etc/mysql/my.cnf
  2. Edit/tambahkan baris berikut di file konfirgurasi
    bind-address            = 192.168.1.1 atau * (address server master)
    server-id               = 1
    log_bin                 = /var/log/mysql/mysql-bin.log
    binlog_do_db            = database1 (database yg mau direplikasi)
    
    Kalau mau lebih dari satu database tinggal tambahkan baris lagi 
    binlog_do_db            = database2
    binlog_do_db            = database3 dst
    binlog_ignore_db        = database4 (database yg tdk ikut direplikasi) 
    
    
    
  3. Refresh database mysql $sudo service mysql restart
  4. Login ke Mysql
    #mysql -u root -p
    mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' 
    IDENTIFIED BY 'password'; (buat user replikasi)
    mysql>FLUSH PRIVILEGES;
    mysql>USE database1;
    mysql>FLUSH TABLES WITH READ LOCK;
    mysql>SHOW MASTER STATUS;
    
    
    Akan keluar tampilan seperti berikut 
    mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |      107 | database1    |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
     
    Catat File dan Position yang akan digunakan di SERVER SLAVE 
    (contoh disini mysql-bin.000001 dan 107)
    
    
  5. Backup database yang akan direplikasi untuk diinstal di SERVER SLAVE
    #mysqldump -u root -p --opt database1 > database1.sql
    
    
  6. Unlock Tabel
    mysql>UNLOCK TABLES;
    mysql>QUIT; 
Langkah di SERVER MASTER sudah selesai, lanjut ke SERVER SLAVE


SERVER SLAVE

  1. Buat database yang akan direplikasi di MySQL
    #mysql -uroot -p
    mysql>CREATE DATABASE database1;
    
    
    
  2. Import struktur database yang sudah dilakukan di server master sebelumnya
    #mysql -u root -p database1 < /path/to/database1.sql
    
  3. Edit file konfigurasi MySQL
    $sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 
    
  4. Edit/tambah file konfigurasi mysql
    server-id               = 2 (nomor harus beda dari Server Master)
    relay-log               = /var/log/mysql/mysql-relay-bin.log
    log_bin                 = /var/log/mysql/mysql-bin.log
    binlog_do_db            = database1 (list database yg direplikasi)
    
    
    
  5. Restart MySQL
    $sudo service mysql restart
    
  6. Buka MySQL
    #mysql -u root -p
    mysql>CHANGE MASTER TO MASTER_HOST='12.34.56.789',
    MASTER_USER='slave_user', 
    MASTER_PASSWORD='password', 
    MASTER_LOG_FILE='mysql-bin.000001', 
    MASTER_LOG_POS=  107; (master log & master pos disesuaikan)
    
    
  7. Start Slave
    mysql>START SLAVE;
    mysql>SHOW SLAVE STATUS\G 
    
  8. Jika ada masalah saat koneksi bisa ditambah perintah berikut
    mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; 
    mysql>SLAVE START; 
Langkah sudah selesai, tinggal test replikasi. Setiap menambahkan record di database di SERVER MASTER maka otomatis database di SERVER SLAVE ikut terupdate...



Good LUCK...
logoblog

Thanks for reading Cara Membuat Master Replikasi Database MySQL

Previous
« Prev Post

No comments: