Anda di halaman 1dari 11

1.

1 Setting Konfigurasi Replikasi Pada Master


Pada sebuah server master replikasi, binary logging harus diaktifkan dan
mempunyai unique server id. Konfigurasi pada binary logging dan server
id memerlukan restart pada server.

Binary logging harus diaktifkan pada server master karena binary log
adalah sebagai basis pengiriman perubahan data dari master ke slave.
Bila binary logging tidak diaktifkan maka replikasi tidak akan dapat
berjalan.

Masing-masing server harus dikonfirgurasi dengan unique server id. Id


ini berfungsi untuk mengidentifikasikan masing-masing server pada
didalam satu grup, dan harus berupa positif integer dari 1 sampai (2 32)-
1.

Untuk mengkonfigurasi binary log dan server id, anda harus mematikan
terlebih dahulu server mysql yang sedang berjalan dan mengubah file
my.cnf (atau my.ini). Tambahkan beberapa baris konfigurasi options
didalam bagian [mysqld]. Bila options tersebut telah ada tapi tidak
teraktifkan karena diberi tag comment (#), hapus tag comment tersebut
dan rubah sesuai kebutuhan anda. Sebagai contoh, untuk mengaktifkan
binary log mengunakan prefix nama mysql-bin, dan konfigurasi server id
adalah 1 sebagai berikut:

[mysqld]
log-bin=mysql-bin
server-id=1

Setelah melakukan perubahan restart server.

Catatan:
Pastikan option skip-networking tidak diaktifkan pada server master
replikasi anda. Bila networking tidak diaktifkan maka slave tidak akan
dapat berkomunikasi dengan master dan replikasi tidak dapat berjalan.

1.2 Setting Konfigurasi Replikasi Pada Slave


Seperti pada master, server slave replikasi juga perlu di set unique
server id. Bagian konfigurasi server id pada slave ini memerlukan restart
pada server.

Bila server id pada slave belum terkonfigurasi, anda harus mematikan


dulu database mysql anda dan merubah file konfigurasi (my.cnf atau
my.ini) seperti layaknya pada server master, seperti pada contoh
berikut:

[mysqld]
server-id=2

Setelah melakukan perubahan, restart server anda.

Bila anda mensetting multiple slave, masing-masing slave harus


memiliki server id yang berbeda dari master dan slave-slave lain.
Bayangkanlah server id sebagai sesuatu yang mirip dengan ip address.

Anda tidak perlu mengaktifkan binary log pada slave, akan tetapi bila
anda mengaktifkan binary log pada slave, anda dapat menggunakan
binary log untuk backup data dan crash recovery pada slave, dan juga
anda dapat menggunakan slave untuk rancangan replikasi yang lebih
kompleks seperti menggunakan slave sebagai master untuk slave yang
lain.

1.3 Membuat Sebuah User Untuk Replikasi


Setiap slave yang terhubung ke master harus menggunakan username
dan password, maka diperlukannya user account pada master yang
dapat digunakan oleh slave untuk dapat terhubung. Semua account
dapat digunakan, bila memiliki privilege REPLICATION SLAVE. Anda
dapat menggunakan account yang berbeda-beda pada masing-masing
slave, atau menggunakan account yang sama pada seluruh slave yang
terhubung pada master.

Anda sebetulnya tidak perlu membuat account khusus untuk replikasi,


akan tetapi username dan password akan tersimpan dalam file plain
text master.info, oleh karena itu anda dapat menggunakan account
terpisah yang hanya diberikan akses untuk replikasi untuk menimimalisir
bahaya sekuritas pada account.

Untuk membuat account baru, gunakan CREATE USER. Untuk


memberikan privilege yang diperlukan untuk replikasi, gunakan GRANT
statement. Bila anda akan membuat account yang khusus untuk
replikasi saja, account tersebut hanya memerlukan privilege
REPLICATION SLAVE. Sebagai contoh, untuk membuat user baru
bernama ‘repl’, yang dapat terhubung dari host manapun, adalah
sebagai berikut:

mysql> CREATE USER 'repl'@'%’ IDENTIFIED BY 'slavepass';


mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

1.4 Mendapatkan Koordinat Binary Log Pada Master


Untuk mengkonfigurasi replikasi pada slave anda harus menentukan
koordinat binary log saat ini pada server master. Anda memerlukan
informasi ini ketika slave akan membuat proses replikasinya agar dapat
memulai memproses event sesuai dengan benar.

Bila anda memiliki data yang sudah ada pada master yang ingin anda
sinkronisasikan dengan slave sebelum memulai proses replikasi, anda
harus menghentikan processing statement pada master, lalu dapatkan
koordinat binary log master saat itu dan dump data yang ada pada
master. Bila anda tidak menghentikan eksekusi statement pada master,
maka data dump dan informasi status master yang anda dapatkan tidak
akan sama dan akan berakhir dengan database yang tidak sesuai atau
corrupt pada slave.

Untuk mendapatkan koordinat binary log pada master, ikuti langkah


sebagai berikut:
1. Mulaisebuah session pada master dengan menggunakan
command-line client, dan flush seluruh tabel dan block write
statement dengan mengeksekusi statement FLUSH TABLES WITH
READ LOCK :

mysql> FLUSH TABLES WITH READ LOCK;

2. Di session yang berbeda pada master, gunakan statement SHOW


MASTER STATUS untuk mendapatkan nama file binary log berserta
posisinya.

mysql> SHOW MASTER STATUS;

Kolom File pada gambar diatas menampilkan nama dari log file
yang dan kolom position menampilkan posisi koordinat binary log
pada file tersebut. Dalam contoh diatas binary log adalah mysql-
bin.000029 dengan position 107. Catat nilai tersebut, karena anda
akan membutuhkannya nanti ketika mensetting konfigurasi pada
server slave. Nama file binlog dan posisi tersebut dibutuhkan slave
sebagai informasi dimana slave akan memulai memproses update
terbaru pada master.

Sekarang anda telah memiliki informasi yang anda butuhkan untuk


mengaktifkan replikasi pada slave agar dapat memulai membaca file
binary log pada posisi yang benar untuk memulai proses replikasi.

1.5 Membuat Data Snapshot Menggunakan mysqldump


Salah satu cara untuk membuat snapshot dari data yang sudah ada
pada database master adalah dengan menggunakan mysqldump tool.
Ketika data dump telah selesai, lalu data dump tersebut dapat anda
import kepada slave sebelum memulai proses replikasi.

Berikut adalah langkah-langkah untuk mendapatkan snapshot data


menggunakan mysqldump:

1. Bila anda belum mengunci tabel pada server untuk menghindari


eksekusi statement maka mulai session baru untuk terhubung
pada server master menggunakan command-line lalu eksekusi
statement FLUSH TABLES WITH READ LOCK.

mysql> FLUSH TABLES WITH READ LOCK;

2. Pada session lainnya, gunakan mysqldump untuk membuat


sebuah file data dump dari seluruh database atau salah satu
database yang akan anda replikasikan.
Contoh:

shell> mysqldump --all-databases --lock-all-tables


>dbdump.sql

Salah satu alternative adalah untuk menggunakan opsi –master-


data, yang akan secara otomatis menambahkan statement
CHANGE MASTER TO yang digunakan slave untuk proses replikasi.

shell> mysqldump --all-databases --master-data


>dbdump.sql

3. Pada client mysql dimana anda mengeksekusi statement read


lock, lepaskan kunci dengan mengeksekusi statement seperti
berikut:

mysql> UNLOCK TABLES;


Atau anda dapat keluar dari session dimana anda mengeksekusi
read lock.

Ketika memilih database yang akan disertakan pada dump, anda harus
memfilter database pada masing-masing slave yang tidak akan anda
sertakan pada proses replikasi.

Anda dapat mengcopy dump file ke masing-masing slave server, atau


secara remote dari server untuk mengimport data.

1.6 Setting Konfigurasi Master Pada Slave


Untuk mengatur agar slave berkomunikasi dengan master untuk
melakukan proses replikasi, anda harus memberikan informasi yang
dibutuhkan oleh slave. Oleh karena itu anda harus mengeksekusi
statement berikut untuk menganti informasi yang ada di slave dengan
informasi yang relevant sesuai yang telah anda dapatkan dari master.

mysql> STOP SLAVE;


mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
mysql> START SLAVE;

Contoh:
Setelah itu anda dapat mengeksekusi statement SHOW SLAVE STATUS
untuk melihat status proses replikasi yang sedang berjalan pada slave.

mysql> SHOW SLAVE STATUS\G

Alternatif lain anda dapat menambahkan options pada konfigurasi mysql


(my.cnf atau my.ini), yang berisi informasi tentang master pada slave.
Tambahkanlah options sebagai berikut:

1. master-host, sebagai informasi ip address atau hostname


database master.

2. master-user, sebagai informasi username account yang akan


digunakan untuk koneksi ke database master.

3. master-password, sebagai informasi password account yang akan


digunakan untuk koneksi ke database master.

4. master-connect-retry, sebagai informasi waktu delay untuk


koneksi kembali ke server master ketika koneksi gagal.

5. replicate-do-db, sebagai informasi database pada master yang


akan direplikasikan.

6. relay-log, sebagai informasi dimana file relay log disimpan.

7. relay-log-index, sebagai informasi dimana file relay log index


disimpan.

Sehingga akan menghasikan konfigurasi sebagai contoh berikut:


[mysqld]
server-id=2

master-host=10.10.1.20
master-user=slaveuser
master-password=slave
master-connect-retry=60
replicate-do-db=test

relay-log = C:/mysql/log/slave-relay.log
relay-log-index = C:/mysql/log/slave-relay-log.index

setelah anda menambahkan options tersebut pada konfigurasi mysql,


anda diharuskan me-restart server pada slave.

Eksekusi statement SHOW SLAVE STATUS untuk melihat status proses


replikasi yang sedang berjalan pada slave.

mysql> SHOW SLAVE STATUS\G