Thursday, March 8, 2012

Mencoba MySQL Cluster di Linux Debian

MySQL adalah salah satu poyek open source paling sukses hingga saat ini. Hampir semua aplikasi web modern menggunakan MySQL sebagai backend untuk basis datanya. MySQL bahkan menjadi salah satu komponen utama dari empat komponen dalam cerita sukses Linux menguasai pasar server. Huruf M pada LAMP merujuk ke MySQL, tiga lainnya terdiri dari Linux, Apache, dan PHP. Sebagai komponen penting, MySQL harus selalu tersedia untuk melayani berbagai request dari user.

Menjaga ketersediaan suatu layanan seperti MySQL tentu bukan suatu pekerjaan mudah, ada banyak faktor yang berpengaruh. Namun bukan pula sebuah perkara yang mustahil. Bahkan Oracle yang kini menjadi pemilik MySQL sudah menyediakan MySQL Cluster. Bagaimana MySQL Cluster menjamin layanan MySQL akan selalu tersedia? Redundancy. MySQL akan dijalankan di beberapa server, sehingga ketika salah satu server mati akan segera digantikan oleh server lainnya.

Nah, di tutorial kali ini kita akan mencoba memasang MySQL Cluster di Debian GNU/Linux. Walaupun idealnya sebuah sistem cluster dijalankan di beberapa server berbeda, dalam tutorial ini kita akan menjalankannya dalam satu server saja. Berikut step by step instalasi MySQL Cluster di Debian GNU/Linux.
  1. Unduh installer MySQL Cluster dari mysql.com. Pilih Linux-Generic, sesuaikan arsitekturnya dengan distro Linux yang digunakan.
  2. Ekstrak tarball berisi installer biner MySQL Cluster.
  3. tar -xzvf mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
    mv mysql-cluster-gpl-7.2.4-linux2.6-x86_64 mysqlc
  4. Buat direktori untuk menampung data dan konfigurasi MySQL Cluster.
  5. mkdir -p my_cluster/{conf,mysqld_data,ndb_data}
  6. Buat konfigurasi untuk mysql.
  7. vim my_cluster/conf/my.cnf
    Salin tempel pengaturan berikut ke berkas tersebut.
    [mysqld]
    ndbcluster
    datadir=~/my_cluster/mysqld_data
    basedir=~/mysqlc
    port=5000
  8. Buat konfigurasi untuk cluster yang akan dijalankan. Di contoh ini kita akan menjalankan dua node.
    vim my_cluster/conf/config.ini
    Contoh konfigurasi paling sederhana untuk satu server MySQL (mysqld), dua node data (ndbd), dan satu node manajemen (ndb_mgmd).
    [ndb_mgmd]
    hostname=localhost
    datadir=~/mysql_cluster/ndb_data
    NodeId=1

    [ndbd default]
    noofreplicas=2
    datadir=~/mysql_cluster/ndb_data

    [ndbd]
    hostname=localhost
    NodeId=3

    [ndbd]
    hostname=localhost
    NodeId=4

    [mysqld]
    NodeId=50
  9. Jalankan skrip mysql_install_db untuk mempopulasikan basis data yang dibutuhkan MySQL.
  10. ./mysqlc/scripts/mysql_install_db --no-defaults --datadir=~/mysql_cluster/mysqld_data/
  11. Jalankan node manajemen, lalu node data secara berurutan.
  12. ./mysqlc/bin/ndb_mgmd -f ~/mysql_cluster/conf/config.ini --initial --configdir=~/mysql_cluster/conf
    ./mysqlc/bin/ndbd -c localhost:1186
    ./mysqlc/bin/ndbd -c localhost:1186
    Hasilnya tampak seperti pada screen shot berikut.
  13. Cek status node data.
  14. ./mysqlc/bin/ndb_mgm -e show
    Pastikan proses start up node-node ini sudah selesai.
  15. Jalankan server MySQL (mysqld).
  16. ./mysqlc/bin/mysqld --defaults-file=~mysql_cluster/conf/my.cnf
  17. Login ke server MySQL dan cobalah untuk mebuat basis data dan tabel menggunakan storage engine ndb.
  18. ./mysqlc/bin/mysql -h 127.0.0.1 -P 5000 -u root
    create database coba_cluster;
    use coba_cluster;
    create table coba(id int not null primary key) engine=ndb;
    insert into coba values (1), (2), (3), (4), (5);
    select * from coba
MySQL Cluster selesai di-install :-)