Dengan menggunakan Fitur Replikasi di MySQL dapat membuat duplikasi database master ke slave secara realtime. Database slave ini juga nantinya dapat digunakan sebagai standby server untuk master jika DB master shutdown (in case: terjadi error di master) dengan melakukan perubahan pada aplikasi supaya merujuk ke DB slave.
Dalam membuat replikasi DB Server ini dapat menggunakan operating system Linux maupun Windows.
Langkah-langkahnya adalah sebagai berikut:
1. Master MySQL Database
Lakukan perubahan pada file konfigurasi mysql yang ada di Server Master. Biasanya nama file : mysql.cnf atau my.cnf yang terletak di /etc/mysql (Sesuai dengan Distro yang digunakan).
Lakukan perubahan atau penambahan seperti baris dibawah ini:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog-do-db=database_name_1
binlog-do-db=database_name_2
binlog-do-db=database_name_3
Lalu restart mysql service: /etc/init.d/mysql restart
Kemudian login ke console mysql:
#mysql –u root –p
#enter password:
Pada shell mysql
Mysql> GRANT REPLICATION
Mysql> FLUSH PRIVILEGES;
Mysql> USE nama_db;
Mysql> FLUSH TABLES WITH READ LOCK;
Mysql> SHOW MASTER STATUS;
Hasilnya:
—————+———-+————–+——————+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+—————+———-+————–+——————+
| mysql-bin.000001 | 98 | nama_db | |
+—————+———-+————–+——————+
1 row in set (0.00 sec)
Hasil diatas yang nantinya digunakan untuk konfigurasi DB slave
2. Lakukan snapshot Database master dan di copy ke Slave server. Hal ini dilakukan supaya DB Master dan Slave memiliki struktur dan data yang sama
Snapshot dapat dilakukan dengan menggunakan utility Mysqldump atau dengan menggunakan snapshot data raw files.
mysqldump -u root -p–opt nama_db > nama_db.sql
atau
shell>tar cf /tmp/db.tar ./data
shell>zip -r /tmp/db.zip ./data
shell>rsync --recursive ./data /tmp/dbdata
3. Slave MySQl database
Pada slave buat database dengan nama yang sama nama_db yang datanya bisa diambil dari hasil snapshot yang dilakukan di step 2.
Dengan asumsi DB slave sudah sama dengan Master, lakukan perubahan pada konfigurasi mysql slave /etc/mysql/my.cnf sperti pada baris dibawah ini:
server-id=2
master-host=ip-master
master-user=slave-user
master-password=password-slave
master-connect-retry=60
replicate-do-db=database_name_1
replicate-do-db=database_name_2
replicate-do-db=database_name_3
kemudian restart MySQL:
/etc/init.d/mysql restart
4. penyesuaian data pada slave jika terjadi update pada master pada saat konfigurasi
mysql -u root -p
Enter password:
mysql> SLAVE STOP;
mysql>CHANGE MASTER TO MASTER_HOST=’ip-master′, mysql> MASTER_USER=’slave_user’, MASTER_PASSWORD=’
KETERANGAN :
- MASTER_HOST is the IP address or hostname of the master (in this example it is 192.168.0.100).
- MASTER_USER is the user we granted replication privileges on the master.
- MASTER_PASSWORD is the password of MASTER_USER on the master.
- MASTER_LOG_FILE is the file MySQL gave back when you ran SHOW MASTER STATUS; on the master.
- MASTER_LOG_POS is the position MySQL gave back when you ran SHOW MASTER STATUS; on the master.
Mysql> START SLAVE;
Mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.X.X.X
Master_User: slave_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: MASTERMYSQL01-bin.000009
Read_Master_Log_Pos: 4
Relay_Log_File: MASTERMYSQL02-relay-bin.000015
Relay_Log_Pos: 3630
Relay_Master_Log_File: MASTERMYSQL01-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: nama_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: 4
Relay_Log_Space: 3630
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: 1519187
Untuk melihat jalan tidaknya proses replikasi Parameter Slave_IO_Running and Slave_SQL_Running: harus YES.
Tidak ada komentar:
Posting Komentar