Setup Database MySQL Clustering
Posted by kusprayitna on May 15th, 2012
Database MySQL merupakan database yang sudah tidak asinglagi bagi kita di dunia internet ataupun database gratisan.
Seperti halnya di kantor saya Universitas Islam Indonesia menggunakan database MySQL untuk melayani hosting website bagi sudbomain di bawah uii.ac.id
Untuk meningkatkan kinerja database yang semakin lama diakses olehbanyak pengguna, tentunya melalui websitenya, maka diperlukan upgrade.
Upgrade dilakukan dalam dua jenis, yaitu upgrade hardware dengan menambah kapasitas RAM maupun Harddisk dan jumlah prosesor. Upgrade ini terbatas oleh kemampuan hardware, dimana jumlah slot RAM hanya ada 4 buat slot dan slot CPU hanya ada.
Upgrade yang kedua adalah dengan menambahkan jumlah komputer servernya.
Upgrade yang kedua ini mempunyai beberapa hal yang harus dipertimbangkan, yaitu bagaimana data dibeberapa komputer harus sama. Masalah ini biasa disebut dengan clustering.
Dalam artikel ini, clusting database MySQL akan dilakukan tahap demi tahap mengguankan OS Centos 5.8 dan MySQL 5.
Komputer yang dibutuhkan adalah :
a. 1 buah untuk MySQL Cluster Manager (alokasi IP : 192.168.0.130)
b. 2 buah untuk MySQL database server (alokasi IP : 192.168.0.131 & 192.168.0.132)
c. 1 buah untuk Loadbalancing (alokasi IP : 192.168.0.1)
Tahapan yang dilakukan yaitu :
A. Persiapan
1. Install OS Centos versi 5.8 dan update
Ini dilakukan sebanyak jumlah server yang dibutuhkan, baik dilakukan di Virtual Machine maupun komputer fisik tidak menjadi masalah.
2. Download MySQL-Server
MySQL yang dipakai adalah versi 5.0.19 (versi max!)
File tersebut dapat didownload dari http://www.mirrorservice.org/sites/ftp.mysql.com/ atau dengan cara googling akan diperoleh file tersebut di
Simpan file di /~ dan diextract disana
# tar -xzf mysql-max*
B. Instalasi MySQL Cluster Manager
1. Salin file MySQL hasil download cluster manager (berdasar hasil persiapan)
# cd mysql-max*# mv bin/ndb_mgm /usr/bin# mv bin/ndb_mgmd /usr/bin# chmod 755 /usr/bin/ndb_mg*
2. Konfigurasi MySQl Cluster "/var/lib/mysql-cluster/config.ini"
# mkdir /var/lib/mysql-cluster# vi /var/lib/mysql-cluster/config.ini[NDBD DEFAULT]NoOfReplicas=2[MYSQLD DEFAULT][NDB_MGMD DEFAULT][TCP DEFAULT]# Bagian Cluster Manager[NDB_MGMD]# Alamat IP Cluster Manager (PC bersangkutan)HostName=192.168.0.130# Bagian Cluster Node, setup storage[NDBD]# Node PC pertamaHostName=192.168.0.131DataDir= /var/lib/mysql-cluster[NDBD]# Node PC keduaHostName=192.168.0.132DataDir=/var/lib/mysql-cluster# Bagian MySQLD[MYSQLD][MYSQLD]
3. Start Cluster Manager
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
4. Otomatis start-up,
Perintah no 3 diatas bisa dimasukkan dalam file "/etc/rc.local" agar jalan otomatis saat komputer nyala.
5. Menjalankan Cluster Manager
# ndb_mgmndb_mgm> showCluster Configuration---------------------[ndbd(NDB)] 2 node(s)id=2 (not connected, accepting connect from 192.168.0.131)id=3 (not connected, accepting connect from 192.168.0.132)[ndb_mgmd(MGM)] 1 node(s)id=1 @192.168.0.130 (Version: 5.0.19)[mysqld(API)] 2 node(s)id=4 (not connected, accepting connect from any host)id=5 (not connected, accepting connect from any host)
C. Instalasi MySQL Database Server (2 Server)
1. Install database MySQL menggunakan file versi mysql-max
# mv mysql-max* /usr/local/mysql# groupadd mysql# useradd -g mysql mysql# cd /usr/local/mysql# scripts/mysql_install_db --user=mysql# chown root:mysql . -R# chown mysql data -R
2. Sesuaikan folder mysql/bin
# cp support-files/mysql.server /etc/init.d/# chmod 755 /etc/init.d/mysql.server# cd /usr/local/mysql/bin# mv * /usr/bin# cd ../# rm -fr /usr/local/mysql/bin# ln -s /usr/bin /usr/local/mysql/bin
3. Konfigurasi MySQL Database Server
# vi /etc/my.cnf[mysqld]datadir=/var/lib/mysqlsocket=/tmp/mysql.sockuser=mysql## Default to using old password format for compatibility with mysql 3.x## clients (those using the mysqlclient10 compatibility package).old_passwords=1## Disabling symbolic-links is recommended to prevent assorted security risks;## to do so, uncomment this line:## symbolic-links=0# CLUSTERndbcluster# Alamat IP Cluster Managerndb-connectstring=192.168.0.130[mysql_cluster]# Alamat IP Cluster Managerndb-connectstring=192.168.0.130[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
4. Siapkan folder database
# mkdir /var/lib/mysql-cluster# chown mysql /var/lib/mysql-cluster
5. Start Database node
# ndbd --initial# /etc/init.d/mysql.server startCatatan : opsi "--initial" diberikan untuk start yang pertama kali saja atau jika ada perubahan config.ini di Cluster Manager.
6. Otomatis start database
Untuk menjalankan database node secara otomatis dapat dilakukan dengan memasukkan di file "/etc/rc.local" dari perintah nomor 5 diatas.
C. Ujicoba Clustering MySQL
1. Restart semua server dengan seting bahwa semua seting sudah diset agar jalan otomatis saat start
2. MySQL Cluster
# ndb_mgmndb_mgm> showConnected to Management Server at: localhost:1186Cluster Configuration---------------------[ndbd(NDB)] 2 node(s)id=2 @192.168.0.131 (Version: 5.0.19, Nodegroup: 0)id=3 @192.168.0.132 (Version: 5.0.19, Nodegroup: 0, Master)[ndb_mgmd(MGM)] 1 node(s)id=1 @192.168.0.130 (Version: 5.0.19)[mysqld(API)] 2 node(s)id=4 @192.168.0.132 (Version: 5.0.19)id=5 @192.168.0.131 (Version: 5.0.19)
3. Data diatas menunjukkan semua komputer dalam cluster sudah terhubung dengan baik.
Catatan tentang MySQL Cluster yaitu :- Bersifat read-write untuk semua node yang terhubung- Database tidak otomatis terbuat di setiap database node, akan tetapi jika database sudah ada maka tabel-tabel dan data akan otomatis masuk ke Database node tersebut- Saat membuat tabel, database engine yang digunakan haruslah NDBCLUSTER
4. Ujicoba membuat data di Database Node 1 (192.168.0.131)
# mysqlmysql>show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || test |+--------------------+3 rows in set (0.00 sec)mysql>CREATE DATABASE mysqlclustertest;
mysql> USE mysqlclustertest;
mysql> CREATE TABLE test (i INT) ENGINE=NDBCLUSTER;
mysql> INSERT INTO test VALUES (1);
mysql> SELECT * FROM testtable;+------+| i |+------+| 1 |+------+1 rows in set (0.00 sec)mysql> quit;
5. Login ke Database Node 2 (192.168.0.132)
mysqlmysql>show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || test |+--------------------+3 rows in set (0.00 sec)mysql>CREATE DATABASE mysqlclustertest;
mysql> USE mysqlclustertest;mysql> SELECT * FROM testtable;+------+| i |+------+| 1 |+------+1 rows in set (0.00 sec)
6. Ujicoba saat 1 Node mati
Perubahan di Node lain akan otomatis di update di node yang mati saat node tersebut hidup dan terhubung dengan Cluster Manager
D. Loadbalancing
Loadbalancing ditujukan agar alamat database Node1 maupun Node 2 dapat diakses dengan satu alamat saja, dan jika terjadi salah satu Node mati, maka otomatis akses diarahkan ke Node yang hidup.
Pandung instalasi dapat diakses di http://kusprayitna.staff.uii.ac.id/2012/02/22/linux-loadbalancing-dengan-haproxy/
Disini dilakukan penambahan monitoring database berdasarkan status webserver (httpd) di setiap node. Untuk itu diinstall apache di server database.
Konfidurasi haproxy secara sederhana yaitu :
frontend public_mysqlbind :3306mode tcpdefault_backend farm_mysqlbackend farm_mysqlbalance roundrobinmode tcpoption httpchk HEAD /check.txt HTTP/1.0 # Fungsi cek kesehatan serverserver mysql-db1 192.168.200.131 check port 80server mysql-db2 192.168.200.132 check port 80
Dengan demikian, untuk seting koneksi ke database MySQL maka digunakan alamat IP 192.168.0.1 dengan port 3306
Semoga bermanfaat
Reff:
Tidak ada komentar:
Posting Komentar