Melihat MySQL Cluster di Dua Komputer Berbasis Ubuntu 6.06
Oleh:
1. 2. 3. 4. 5.
Herbert Darwin Joshua R.T.P. Romel Lubis Simon S.K. Wim Permana
(09245) (09229) (10407) (09453) (09313)
Ditujukan Kepada:
Bapak Sigit Priyanta, S.Si, M.Kom selaku Dosen Pengampu Mata Kuliah Basis Data Lanjutan Program Studi Ilmu Komputer Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Gadjah Mada Yogyakarta 2006 MySQL Cluster
1
I. Latar Belakang Sampai tulisan ini dibuat, basis data (database) telah memainkan peranan yang sangat penting dalam kehidupan umat manusia [2]. Mulai dari pengguna rumahan hingga pengguna berskala enterprise. Mulai dari yang dipakai hanya di dalam toko-toko kecil sekelas minimarket hingga ke stasiun ruang angkasa sekaliber NASA. Dalam hal ini, sebuah RDBMS (Relational Database Management Software) ikut menjadi bagian yang tidak terpisahkan dari keadaan tersebut. Dari tahun ke tahun, hasrat manusia (baca: pengguna RDBMS) akan peningkatan kinerja dan penambahan fitur sebuah RDBMS tidak pernah surut [2]. Selalu pasang naik! Hal inilah yang menjadi penyebab timbulnya liga (baca: persaingan) diantara berbagai vendor RDBMS terkemuka dunia untuk selalu meningkatkan unjuk kerja dan standar teknis produk-produk mereka. Salah satu vendor yang populer adalah MySQL AB. Perusahaan pembuat RDBMS MySQL ini telah melengkapi produk mereka dengan fitur cluster. Kebutuhan akan ketersediaan basis data (database) yang bisa terus aktif bekerja selama 24 jam x 7 hari merupakan faktor utama munculnya konsep cluster dalam MySQL [1]. Pada awalnya, MySQL Cluster dirancang khusus oleh MySQL AB untuk perusahaan-perusahaan berbasis telekomunikasi yang memang sangat membutuhkan keaktualan dan keaktivan dari database mereka. Basis data perusahaan-perusahaan ini, selain berkapasitas besar juga bersifat extremely highavailability. Ini berarti, dalam satu tahun masa aktif, database tersebut hanya boleh berada dalam keadaan “off” selama 5 menit saja (1 tahun/365 hari setara dengan ± 518400 menit) [1]. MySQL Cluster
2
II.Rumusan Masalah Berikut ini adalah beberapa masalah yang telah kami coba bahas dan pecahkan di dalam percobaan; 1. Peng-install-an MySQL 5.0.22_debian_0ubuntu6.06 di Linux Ubuntu versi 6.06 2. Peng-install-an MySQL Administrator di Linux Ubuntu versi 6.06 3. Peng-install-an MySQL Query Browser di Linux Ubuntu versi 6.06 4. Setting LAN (Local Area Network) untuk dua PC. 5. Mengaktifkan dan menggunakan MySQL Cluster. 6. Melakukan beberapa operasi (query) di lingkungan MySQL Cluster dan MySQL non-Cluster (reguler). Berikut ini adalah spesifikasi dua komputer yang kami pakai untuk melakukan percobaan; 1. Komputer 1 •
Laptop NEC VERSA
•
Processor Intel® Pentium® M 750 dengan clock speed 1.86 GHz
•
Modul memori berkapasitas 512 Mbyte
•
Integrated NIC (Network Interface Card) Ethernet 100 Mbps
•
Sebagai SQL Node dengan IP Address 192.168.0.3
2. Komputer 2 •
PC Desktop
MySQL Cluster
3
•
Processor Intel® Pentium® dengan clock speed 2.4 GHz
•
Modul memori berkapasitas 512 Mbyte
•
Integrated NIC (Network Interface Card) Ethernet 100 Mbps
•
Sebagai Management Node dan Data Node dengan IP Address 192.168.0.1
Data yang menjadi bahan percobaan kami adalah database world yang kami download
dari
http://downloads.Mysql.Com/docs/world.Sql.
zip. Database ini terdiri tiga tabel yakni: City, Country, dan Language.
III.Batasan Masalah Dalam percobaan ini kami menggunakan dua komputer yang telah kami hubungkan melalui kabel cross over. Pada tahap awal percobaan, kami telah menguji coba MySQL Cluster menggunakan Sistem Operasi Microsoft Windows XP dan Microsoft Virtual PC. Namun ketika kami mencoba meng-install Sistem Operasi Linux Ubuntu versi 6.06 di Komputer 2 menggunakan Microsoft Virtual PC, kami justru mendapati pesan error dari Microsoft Virtual PC. Pesan tersebut menyatakan bahwa sistem mengalami "kernel panic". Keadaaan ini membuat kami mengubah platform utama lingkungan uji coba. Dari yang semula menggunakan Microsoft Windows XP kemudian beralih ke Platform Linux Ubuntu versi 6.06. Alasan lain yang membuat kami mengubah platform uji coba ini adalah karena MySQL Cluster masih belum dapat berjalan di Platform Windows [4]. Keterangan mengenai kompatibilitas MySQL Cluster dapat dilihat
MySQL Cluster
4
secara lengkap di Chapter 16 MySQL Reference Manual. Kendala tidak berhenti sampai di situ. Kondisi perangkat keras yang terbatas juga membuat kami tidak dapat mengembangkan uji coba MySQL Cluster secara lengkap. Untuk menguji coba semua fitur MySQL Cluster, kami membutuhkan sekurang-kurangnya tiga buah komputer dan atau tiga buah host yang saling terhubung melalui jaringan lokal. Namun pada hari-H uji coba, kami tetap belum mampu memenuhi persyaratan teknis ini. Meskipun terjadi banyak kendala, uji coba ini tetap berlangsung. Berikut ini adalah beberapa uji coba yang telah kami lakukan; 1. Setup Cluster 2. Menjalankan Cluster 3. Shutdown Cluster 4. Melihat dan membandingkan secara umum waktu pemrosesan sebuah query di lingkungan MySQL Cluster (engine: ndb cluster) dengan lingkungan MySQL non-Cluster Beberapa fitur yang tidak kami uji coba antara lain; 1. Data Replication 2. Partitioning on Cluster 3. Backup Cluster Dengan demikian, laporan uji coba ini tidak akan membahas mengenai ketiga masalah yang disebutkan di atas. Meskipun fungsi cluster yang utama dalam MySQL adalah justru untuk memanfaatkan fitur-fitur tersebut.
IV.Tinjauan Pustaka MySQL Cluster
5
1. Pengantar MySQL Cluster merupakan sebuah tipe basis data (database) yang dapat beroperasi dalam ukuran data yang relatif besar (maksimal dalam skala beberapa ratus gigabyte) [1]. Sejak diperkenalkan ke khalayak pengguna pada tahun 2004, MySQL Cluster telah mampu meraih pasar yang signifikan di kalangan para pengguna database yang banyak menggunakan lingkungan komputasi terdistribusi (distributed computing evironment) [3]. Pada awalnya, MySQL Cluster banyak dimanfaatkan oleh perusahaanperusahaan telekomunikasi untuk menjalankan aplikasi yang berkaitan dengan HLR (Home Locator Registry) dan SLR (Subscriber Locator Registry) [3]. Namun pada perkembangan selanjutnya, teknologi ini telah meluas hingga banyak digunakan oleh para pengembang untuk aplikasi-aplikasi yang berkaitan dengan VoIP (Voice Over Internet Protocol), internet billing, sesion management, situs-situs e-Commerce, mesin pencari (search engine), bahkan hingga ke aplikasi umum yang biasa digunakan di perkantoran [3].
2. Arsitektur MySQL Cluster merupakan sebuah database yang menggunakan arsitektur shared-nothing dan antarmuka SQL yang telah umum digunakan [4]. Sistem database ini terdiri dari beberapa node yang dapat didistribusikan ke beberapa perangkat keras dan ke beberapa wilayah/zona yang berbeda sekaligus untuk tetap menjaga ketersediaan data meskipun jaringan ataupun salah satu node sedang mengalami kegagalan (failure) [3].
MySQL Cluster
6
Ada tiga node yang menyusun MySQL Cluster, yakni: 1. Data Nodes, digunakan untuk menyimpan semua data yang menjadi milik MySQL Cluster. Semua data direplikasi di node-node ini. 2. Management Server Nodes, digunakan untuk mengendalikan konfigurasi sistem ketika startup. Selain itu, node ini juga dapat digunakan sebagai pengidentifikasi setiap perubahan setting yang terjadi pada cluster. 3. MySQL Server Nodes, berfungsi sebagai pintu akses untuk masuk ke dalam node-node data yang ter-cluster.
3. Kebutuhan Perangkat Keras MySQL Cluster dapat berjalan tanpa menggunakan perangkat keras khusus yang mahal layaknya sistem cluster populer milik Oracle; ORACLE RAC [1]. Untuk menjalankan dan memanfaatkan teknologi ini, sistem hanya memerlukan jaringan dengan protokol TCP/IP. Selain itu, sistem juga memerlukan modul RAM yang minimal dapat menyamai jumlah ukuran data dalam database. Berikut rumus yang digunakan untuk menentukan jumlah RAM yang dibutuhkan [4]: Jumlah RAM = (SizeofDatabase * NumberOfReplicas * 1.1)/NumberOfDataNodes
Di lingkungan korporat, agar dapat menikmati MySQL Cluster yang cepat, sistem memerlukan server yang dilengkapi dengan dua buah processor seperti Intel Xeon atau AMD Opteron, 16 GB RAM, 4 x 73 GB RAID, dan Gigabit Ethernet per server [1].
MySQL Cluster
7
V.Pembahasan Berikut ini adalah pembahasan dan uraian dari apa yang telah kami uji coba: 1. Meng-install aplikasi MySQL untuk Ubuntu versi 6.06. Berikut ini adalah aplikasi-aplikasi dan pustaka-pustaka yang dibutuhkan dalam iji coba ini. No
Nama Paket
1.
mysql-common
mysql database common files
2.
libmysqlclient15off
Pustaka client untuk database mysql
3.
mysql-client-5.0
5.0
binari client untuk database mysql
4.
mysql-server-5.0
5.0
Binari server untuk database mysql
5.
mysql-querybrowser-common
1.1.17 5ubuntu3
Berkas bebas arsitektur untuk MySQL Query Browser
6.
mysql-querybrowser
1.1.17 5ubuntu3
Tool query dengan GUI resmi untuk MySQL database
7.
8.
mysql-admincommon
mysql-admin
MySQL Cluster
Versi
Keterangan
1.1.61build1
Berkas bebas arsitektur untuk MySQL Administrator
1.1.61build1
Tool berbasis GUI untuk pengaturan MySQL administration
8
2. Setup MySQL Cluster ➢
edit file my.cnf di management node.
➢
my.cnf yang sudah diedit memiliki tambahan ndbcluster ndb-connectstring=192.168.0.1 ............................ .................... user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english skip-external-locking ndbcluster ndb-connectstring=192.168.0.1 # # For compatibility to other Debian packages that still use # libmysqlclient10 and libmysqlclient12. old_passwords = 1 ............................. ....................
➢
salin ndb_mgmd.cnf ke direktori /var/lib/mysql-cluster/
joshua@romel-desktop:~$ sudo cp /usr/share/doc/mysql-server5.0/examples/ndb_mgmd.cnf /var/lib/mysql-cluster/ ➢
rename file tersebut menjadi config.ini joshua@romel-desktop:~$ sudo cp /usr/share/doc/mysqlserver5.0/examples/ndb_mgmd.cnf /var/lib/mysqlcluster/ <enter>
MySQL Cluster
9
password: joshua@romel-desktop:~$ cd /var/lib/mysql-cluster/ joshua@romel-desktop: /var/lib/mysql-cluster/ $ ndb_mgmd. cnf config.ini
my
➢
edit file config.ini
➢
edit file my.cnf di sql node. Dengan konfidurasi yang sama dengan pengeditan my.cnf di management node.
3. Menjalankan MySQL Cluster ➢
jika daemon mysqld sudah menyala/aktif di komputer yang menjadi sql node maka daemon mysqld tersebut harus dinon-aktifkan terlebih dahulu.
MySQL Cluster
10
➢
aktifkan management node dengan perintah: joshua@romel-desktop: /var/lib/mysql-cluster$ sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini <enter> password:
➢
aktifkan data node dengan perintah joshua@romel-desktop: /var/lib/mysql-cluster$ ndbd --initial <enter> joshua@romel-desktop: /var/lib/mysql-cluster$
➢
sudo
Aktifkan sql node dengan perintah : seamonk@seamonk- laptop:~$ sudo mysqld password: 060925 16:42:16 InnoDB: Started; log sequence number 0 43665 060925 16:42:16 [Note] mysqld: ready for connections. Version: '5.0.22-Debian_0ubuntu6.06-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 Debian Etch distribution
➢
jalankan console management (ndb_mgm) di management node: di sql node bisa tapi ngerepotin dengan perintah : joshua@romel-desktop: /var/lib/mysql-cluster$ ndb_mgm -- NDB Cluster -- Management Client --
➢
untuk melihat semua node yang sedang aktif dalam MySQL cluster gunakan perintah: ndb_mgm> SHOW ndb_mgm> SHOW <enter> Connected to Management Server at 192.168.0.1:1186 Cluster Cofiguration -------------------[ndbd(NDB)] 1 node(s) id=2 @ 192.168.0.1 (Version: 5.0.22, Nodegroup: Master) [ndb_mgmd(MGM)]
MySQL Cluster
0,
1 node(s)
11
id=1 @ 192.168.0.1 (Version: 5.0.22) [mysqld(API)] 1 node(s) id=3 @ 192.168.0.3 (Version: 5.0.22)
5. Melihat dan membandingkan secara umum waktu pemrosesan sebuah query di lingkungan MySQL Cluster (engine: ndb cluster) dengan lingkungan MySQL non-Cluster ➢
Operasi BETWEEN : SELECT * FROM City where Population between 1000000 and 2000000; dengan MySQL Cluster membutuhkan query time 0:00.1505 tanpa MySQL Cluster membutuhkan query time 0:00.1005
➢
Operasi DISTINCT : SELECT distinct Name FROM City order by Name; dengan MySQL Cluster membutuhkan query time 0:00.7659 tanpa MySQL Cluster membutuhkan query time 0:00.6577
➢
Operasi SELECT : select * from City where Name = "yogyakarta"; dengan MySQL Cluster membutuhkan query time 0:00.1615 tanpa MySQL Cluster membutuhkan query time 0:00.0986
➢
Operasi UNION : (SELECT Continent FROM Country) UNION (SELECT Name FROM City) order by Continent; dengan MySQL Cluster membutuhkan query time 0:00.2098 tanpa MySQL Cluster membutuhkan query time 0:00.1988
MySQL Cluster
12
➢
Operasi ORDER BY : SELECT Name FROM City order by Name; dengan MySQL Cluster membutuhkan query time 0:00.1633 tanpa MySQL Cluster membutuhkan query time 0:00.1002
➢
Operasi JOIN : SELECT Continent as "Gabungan" FROM Country UNION SELECT Name FROM City order by Gabungan; dengan MySQL Cluster membutuhkan query time 0:00.1775 tanpa MySQL Cluster membutuhkan query time 0:00.1554
4. Shutdown MySQL Cluster ➢
untuk mematikan MySQL Cluster gunakan perintah : ndb_mgm> SHUTDOWN Node 2: cluster shutdown initiated Node 2: Node shutdown completed. 1 NDB Cluster node(s) have shutdown. Shutdown of NDB Cluster management server failed. * 0: No error * Executing: ndb_mgm_stop2 <enter> ndb_mgm>
MySQL Cluster
13
VI.Kesimpulan Dalam laporan uji coba ini, kami telah mengeksplorasi beberapa fitur dan kemampuan yang dimiliki oleh MySQL Cluster sekaligus cara untuk menginstall, menjalankan dan mematikan prosesnya. Berikut beberapa hal yang dapat kami simpulkan dari uji coba ini: ➢
Semua fitur MySQL Cluster dapat berjalan dengan baik dan komprehensif dengan dukungan 4 komputer yang saling terhubung dengan protokol TCP/IP.
➢
Kecepatan minimal transfer data dalam jaringan untuk MySQL Cluster adalah sebesar 100 Mbps.
➢
MySQL Cluster membutuhkan modul memori yang berkapasitas besar dan cenderung banyak karena data node disimpan dan diproses di dalam memori bukan harddisk.
➢
Untuk menjalankan dan menggunakan MySQL Cluster, user tidak harus membeli perangkat keras-perangkat keras yang khusus.
MySQL Cluster
14
VII.Daftar Pustaka [1] Alex, Aulbach. 2005. MySQL Cluster very big and fast databases on commodity hardware. PHP Conference. < http://blog.Thinkphp.De/uploads /MySQL-Cluster.Pdf#search =%22alex%20aulbach%20%2B% 20MySQL% 20cluster%22> (diakses tanggal 23 Agustus 2006) [2] Manovich, Lev. ------ . Database As A Symbolic Form.
(diakses tanggal 23 Agustus 2006) [3] MySQL AB. 2006. A MySQL Technical White Paper. (diakses tanggal 23 Agustus 2006) [4] MySQL Reference Manual. (diakses tanggal 23 Agustus 2006)
MySQL Cluster
15