Minggu, 11 April 2010

Clustering Mysql Pada ubuntu 9.10

Proyek akhir politeknik telkom lah yang me latar belakangi penulis(haryo pramudito) untuk mengambil judul ini... maksudnya si bukan apa2 cuman untuk berbagi ilmu..he..he

Untuk setup yang benar Anda akan perlu 3 pc. PC pertama akan berfungsi sebagai manajemen node(ndb_mgm), dan dua lainnya sebagai node penyimpanan(storage node).

clustering mysql ini saya install di ubuntu 9.10 dan untuk versi mysqlnya saya gunkan mysql-server 5.0.51, kenapa saya tidak menggunakan latest version dr mysql? jawabannya, karena di sql 5.1xxx tidak terdapat file2 konfigurasi untuk menjalankan clustering, jadi agak repot untuk install lagi tambahan clusteringnya..he..he

seperti biasa biar g capek ngetik sudo, cukup 1x saja ketikkan :

haryo@haryo-server:~$ sudo su -

Install mysql

haryo@haryo-server:~$ apt-get mysql-server-5.0
setelah itu setting password mysql sesuai kebutuhan anda

Konfigurasi Management Node

Buat dan edit the file /etc/mysql/ndb_mgmd.cnf. Copy dan paste text di bawah ini ganti ip address sesuai kebutuhan anda :D.

[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M # besar kapasitas memory yg di alokasikan untuk penyimpanan data
IndexMemory=18M # besar kapasitas memory yg di alokasikan untuk index penyimpanan
# For DataMemory and IndexMemory, we have used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Section untuk cluster management node
[NDB_MGMD]
# IP address dari management node (system ini)
HostName=192.168.1.5

# Section untuk storage nodes
[NDBD]
# IP address untuk storage node ke-1
HostName=192.168.1.6
DataDir=/var/lib/mysql-cluster
BackupDataDir=/var/lib/mysql-cluster/backup
DataMemory=512M
[NDBD]
# IP address untuk storage node ke-2
HostName=192.168.1.7
DataDir=/var/lib/mysql-cluster
BackupDataDir=/var/lib/mysql-cluster/backup
DataMemory=512M

# one [MYSQLD] per storage node
[MYSQLD]
[MYSQLD]

Konfigurasi Storage Node

Seperti yang dapat Anda lihat di file yang telah kita buat di langkah sebelumnya, cluster akan menggunakan /var/lib/ mysql-cluster pada Storage Node. Direktori ini dibuat ketika Anda menginstal server MySQL tetapi kepemilikan file dimiliki oleh root. Kita ingin membuat direktori backup dan mengubah kepemilikan file ke mysql.

haryo@haryo-server:~$ mkdir /var/lib/mysql-cluster/backup
haryo@haryo-server:~$ chown -R mysql:mysql /var/lib/mysql-cluster
Sekarang kita akan konfigurasi mysql agar dapat menghubungkan(dapat berkomunikasi) antara storage node dan management node

Edit /etc/mysql/my.cnf

cari [mysqld] dan [MYSQL_CLUSTER kemudian tambahkan isi file berikut:
[mysqld]
ndbcluster
# masukkin IP address management node
ndb-connectstring=192.168.1.5

[MYSQL_CLUSTER]
ndb-connectstring=192.168.1.5

Lakukan hal yang sama pada storage node yang kedua

Start Management Node

lakukan dengan perintah:
haryo@haryo-server:~$ /etc/init.d/mysql-ndb-mgm restart
setelah itu ketikkan ndb_mgm. dilanjutkan dengan show; anda akan
melihat
ndb_mgm> show;
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.1.6)
id=3 (not connected, accepting connect from 192.168.1.7)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.5 (Version: 5.0.51)

[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)

loh koq g connect? sabar mas, butuh proses,
si manajemen node masih menunggu koneksi dari storage node
(data node), kita harus restart dulu data nodenya

Start Data Node

haryo@haryo-server:~$ /etc/init.d/mysql restart
haryo@haryo-server:~$ /etc/init.d/mysql-ndb restart
Sekarang coba liat manajemen terus liat lagi koneksinya
id=2    @192.168.1.6  (Version: 5.0.51, starting, Nodegroup: 0)
id=3 @192.168.1.7 (Version: 5.0.51, starting, Nodegroup: 0)

Once they have started properly, the show command should display

ndb_mgm> show;
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.6 (Version: 5.0.51, Nodegroup: 0, Master)
id=3 @192.168.1.7 (Version: 5.0.51, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.5 (Version: 5.0.51)
[mysqld(API)] 2 node(s)
id=4 @192.168.1.7 (Version: 5.0.51)
id=5 @192.168.1.6 (Version: 5.0.51)
Tu kan konek.. selamat yach udah conect, tapi tetap hrs d testing dulu :D

Testing Database Cluster

Buatlah 2 database testing di kedua data node, buat dulu saja
secara manual!!!!
haryo@haryo-server:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.0.51a-3ubuntu5.1 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database clustertest;
Query OK, 1 row affected (0.00 sec)
Setelah selesai,Buatlah tabel dan valuenya
mysql> use clustertest;
Database changed
mysql> create table test (i int) engine=ndbcluster;
Query OK, 0 rows affected (0.71 sec)

mysql> insert into test values (1);
Query OK, 1 row affected (0.05 sec)

mysql> select * from test;
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.03 sec)
Kita sudah membuat Tabel dengan 1 entri. perlu diingat untuk
harus menambahkan syntax engine=ndbcluster ketika membuat tabel
untuk menandai bahwa tabel ini akan di cluster oleh MySql.
nah sekarang kita check di data node ke-2 apakh data ikut berubah atw tidak??

mysql> use clustertest;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------------+
| Tables_in_clustertest |
+-----------------------+
| test |
+-----------------------+
1 row in set (0.01 sec)

mysql> select * from test;
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.04 sec)
Anda dapat melihat kalau data di node ke-2
sudah ada(terupdate seperti node ke-1)ini menandakan kalau
cluster anda sudah berhasil :D

Merubah Database yang sudah ada ke mode cluster

Anda dapat merubah ke mode cluster database yang telah
anda buat dengan menggunakan disalah satu node
alter table table_anda engine=ndbcluster;
Maka node yang lain akan ikut terupdate, mudah bukan? selamat mencoba :D








1 komentar:

belajar untuk terpelajar mengatakan...

salam kenal mas broo..
saya udah coba,tapi gagal pada ndb_mgmd> show...setelah mengetik perintah tersebut,ubuntu saya minta install mysql-cluster-server.5.1 dan mysql-server.5.0....saya makai ubuntu 10.04..

mohon pencerahanya mas brow..