Set up Distributed database

nih bagi – bagi cara buat set up database terdistribusi

set up pada master server
pada file my.cnf Tambahkan utk master ( ingat master !!! bukan slave ) di bagian [mysqld] :
log-bin
binlog-do-db=database_name <– ganti database_name dgn database yg mo di replikasi.
server-id=1

Restart mysql master utk membaca konfigurasi mysql yg baru.
root@localhost # mysql -u root -p

mysql> GRANT REPLICATION SLAVE ON database_name TO ‘slave_user_name’@'%’ IDENTIFIED BY ‘slave_password’;

Disini saya akan menggunakaan metode hot backup. Masuk lagi ke shell nya mysql dengan permission root.

mysql> USE database_name;
mysql> FLUSH TABLES WITH READ LOCK;

Artinya di atas adalah database yg di gunakan akan dikunci proses read write ya jadi tidak akan ada proses update sama sekali.

mysql> SHOW MASTER STATUS;

Catat hasil dari MASTER STATUS !!!! Sekali lagi Catat !!! Hasil yg keluar seperti di bawah ini.
+———————-+———-+————–+——————+

| File | Position | Binlog_do_db | Binlog_ignore_db |

+———————-+———-+————–+——————+

| mysql_binary_log.025 | 796947 | database_name| |

+———————-+———-+————–+——————+

1 row in set (0.00 sec)

JANGAN KELUAR DARI MYSQL CONSOLE !!

Buka 1 session SSH yg baru lagi. Apabila anda tidak membuka SSH session yg baru lagi maka lock yg tadi kita dijalankan akan dilepas secara sendirinya.

Sekarang dalam keadaan database terkunci Lakukan di session SSH yg baru, proses Copy ( transfer ) semua direktori binary file2 data mysql ke direktori binary file data server slave mysql ( file2 ber-extension .MYD .MYI .frm ) dan pastikan di server slave mysql file2 yg sudah ditransfer ownership nya tetap mysql:mysql. Saya pake rsync utk file transfer nya.

[root@localhost /var/db/mysql]# rsync -avuz –progress -e “ssh -C” database_name mysql@slavehost:/var/db/mysql
transfer data beres
Lepas lock table nya di session SSH yg masih berada di mysql console
mysql> UNLOCK TABLES;
BERES utk master :D

Sekarang bagian [mysqld] utk /etc/my.cnf slave nya
server-id=2 <— id bisa 2-99 terserah semau anda :P
# master server settings
master-host=masterhost.com <— ganti hostname nya.
master-user=slave_user_name <— ganti username
master-password=slave_password <— ganti password
master-connect-retry=60 # num of seconds, default is 60
replicate-do-db=database_name

Restart mysql nya.
Masuk ke mysql console dgn akses root.
mysql> CHANGE MASTER TO MASTER_HOST=’master_host_name’, MASTER_USER=’slave_user_name’, MASTER_PASSWORD=’slave_password’,
MASTER_LOG_FILE=’mysql_binary_log.025′, MASTER_LOG_POS=796947;

Ganti variabel di atas dgn posisi master terakhir dan nama logfile master yg terakhir yg didapat dari SHOW MASTER STATUS; beserta hostname, username dan password.

mysql> START SLAVE;
mysql> show slave status \G;
Slave_IO_Running: YES
Slave_SQL_Running: YES

BERES :D Pastikan Slave_IO_Running dan Slave_SQL_Running ada dalam posisi YES. Kalau masih dalam posisi NO berarti replikasi anda belum berjalan ;) Check ulang dari atas.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.