Skip to main content

Database Clustering, High Availability, dan Load Balancing.

High Availability didefinisikan sebagai kemampuan mempertahankan sekumpulan aplikasi bisnis, tersedia bagi user sepanjang waktu. Hal ini meliputi dari antisipasi / persiapan saat aliran listrik padam sampai kondisi bencana seperti kebakaran atau gempa bumi. Setiap critical system punya satu atau lebih redundant backup system. Konsep fault tolerance berhubungan dengan high availability pada aplikasi bisnis.

Clustering adalah penggunaan dua atau lebih komputer / node / server untuk sejumlah fungsi-fungsi yang sama. Jadi jika satu komputer mati, maka komputer yang lainnya dapat mengambil alih tugas komputer tersebut. Ide clustering mendukung konsep fault tolerance. Cluster juga dapat meningkatkan kemampuan kalkulasi/komputing/performance/dari sistem komputer sehingga mendukung konsep scalability. Dengan mengimplementasikan ide clustering, kita juga dapat sekaligus mengimplementasikan konsep high availability serta meningkatkan processing power.

Toleransi terhadap failure bergantung kepada dua hal;
1. Lokasi kegagalan; Dari dalam cluster atau dari luar.
2. Kemampuan aplikasinya sendiri dalam mengatasi kesalahan.

MySQL cluster adalah sistem database terdistribusi yang terdiri dari 3 komponen utama ;
1. MySQL server ( SQL node atau API node atau mysqld)
Untuk mendukung MySQL Cluster, MySQL harus dikonfigurasikan untuk menggunakan NDB storage engine. Hal ini bisa dilakukan dengan (pada saat build dari source) menggunakan parameter "--with-ndbcluster" pada script configure. Untuk bisa menggunakan engine tersebut, harus dipastikan sedikitnya satu "MGM" node sudah berjalan. Secara default, MySQL Server yang dikonfigurasi menggunakan engine NDB akan mencari MGM node pada localhost. Dan jika berada pada host lain perlu dispesifikasikan pada "my.cnf" atau command line.
2. Management Server (management node atau MGM node atau ndb_mgmd)
Istilah lainnya adalah cluster management server, dll.
3. Data node (NDB node atau ndbd)
Jika SQL node dijalankan pada host dimana terdapat data node, maka MySQL Server yang bersangkutan harus meng-enable "NDBCLUSTER: storage engine. Selanjutnya setiap proses seperti "create table" atau "alter table" oleh MySQL harus dijalankan setelah cluster dijalankan dan menggunakan engine ndbcluster atau ndb (Misalnya; "create table session (...) engine=ndbcluster;"), selain itu table-table juga harus mempunyai primary key.
4. Data access program (MySQL client, dll).

Untuk 3 komponen pertama, masing-masing daemon yang berjalan adalah:
- "mysqld" (misalnya dijalankan dengan "mysqld --ndbcluster --ndb-connectionstring),
- "ndb_mgmd" (Management server daemon), dan
- "ndbd" (node daemon).

Database yang menggunakan engine ndbcluster juga bisa mengimport data file dari database yang menggunakan engine lain seperti "myisam", misalnya ;
"mysqldump --add-drop-table "name table" > "nama_backup_file".sql
lalu tinggal substitute semua "engine/type=myisam" dengan "engine=ndbcluster".

Untuk setiap daemon terdapat program client yang terinstall secara default yaitu "mysql", "ndb_mgm" (management console)

Contoh:
=====================================================
[root@local bin]pwd

/root/mysqlcluster-63-master/install/mysql/bin

[root@local bin]# ./ndb_mgm -c "192.168.0.126:1186" -e "all status"

Connected to Management Server at: 192.168.0.126:1186

Node 2: started (mysql-5.1.30 ndb-6.3.20)

Node 3: started (mysql-5.1.30 ndb-6.3.20)

=====================================================

Konfigurasi SQL Node dan data Node dispesifikasikan pada "my.cnf" dan management node pada "config.ini".
Dari cluster management server di "dbase-LBal1", berikut ini spesifikasi ketiga node yang terhubung ke management server tersebut misalnya ;
1. "NDB" node: id=3 @dbase-1, id=4 @dbase-2 (not connected, terima koneksi dari dbase-2)
2. "MGM" node: id=1 @dbase-LBal1, id=2 @dbase-LBal2
3, "API" node: id=5 @dbase-1, id=6 @dbase-2, id=7 (not connected)

Untuk mengaktifkan "NDB" node pada "dbase-1" atau "dbase-2"

"service ndbd start"

Sedangkan untuk "API" node,

"service mysql start"

Konfigurasi "my.cnf" pada "dbase-1" dan "dbase-2"

/etc/my.cnf @dbase-1
+++++++++++++++++++++++++++++++++++++++++++++++++++++
[mysqld]
ndbcluster
# IP Address of the cluster management node
ndb-connectionstring=192.168.0.119, 192.168.0.120
[mysql_cluster]
ndb-connectstring=192.168.0.119, 192.168.0.120
+++++++++++++++++++++++++++++++++++++++++++++++++++++

/etc/my.cnf @dbase-2
+++++++++++++++++++++++++++++++++++++++++++++++++++++
[mysqld]
ndbcluster
# IP Address of the cluster management node
ndb-connectionstring=192.168.0.119, 192.168.0.120
[mysql_cluster]
ndb-connectstring=192.168.0.119, 192.168.0.120
+++++++++++++++++++++++++++++++++++++++++++++++++++++

Konfigurasi "config.ini" pada "dbase-LBal1" dan "dbase-LBal2"

"/var/lib/mysql-cluster/config.ini @dbase-LBal1"

Proses :

"/usr/sbin/ndb_mgmd -c localhost:1186 -f /var/lib/mysql-cluster/config.ini"
+++++++++++++++++++++++++++++++++++++++++++++++++++++
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=4000M
IndexMemory=500M
MaxNoOfOrderedIndexes=2048
MaxNoOfAttributes = 3000
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Sectionfor the cluster management node
[NDB_MGMD]
# IP Address of the management node (this system)
HostName=192.168.0.119
[NDB_MGMD]
# IP Address of the management node (this system)
HostName=192.168.0.120
# Section for the storage nodes
[NDBD]
# IP Address of the first storage node
HostName=192.168.0.121
[NDBD]
# IP Address of the second storage node
HostName=192.168.0.122
DataDir=/var/lib/mysql-cluster
# one [MYSQLD] per storage node
[MYSQLD]
[MYSQLD]
# one for restore process
[MYSQLD]
+++++++++++++++++++++++++++++++++++++++++++++++++++++

"/var/lib/mysql-cluster/config.ini @dbase-LBal2

Proses:

"/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini"
+++++++++++++++++++++++++++++++++++++++++++++++++++++
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=4000M
IndexMemory=500M
MaxNoOfOrderedIndexes=2048
MaxNoOfAttributes = 3000
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Sectionfor the cluster management node
[NDB_MGMD]
# IP Address of the management node (this system)
HostName=192.168.0.119
[NDB_MGMD]
# IP Address of the management node (this system)
HostName=192.168.0.120
# Section for the storage nodes
[NDBD]
# IP Address of the first storage node
HostName=192.168.0.121
[NDBD]
# IP Address of the second storage node
HostName=192.168.0.122
DataDir=/var/lib/mysql-cluster
# one [MYSQLD] per storage node
[MYSQLD]
[MYSQLD]
# one for restore process
[MYSQLD]
+++++++++++++++++++++++++++++++++++++++++++++++++++++

Proses backup harian dilakukan dari "dbase-LBal1"
=====================================================

[root@dbase-LBal1 ~]# crontab -l
0 0 * * * /root/automate/automate.sh

=====================================================

=====================================================
[root@dbase-LBal1 ~]# more /root/automate/automate.sh

+++++++++++++++++++++++++++++++++++++++++++++++++++++
#!/bin/sh
tgl='date'
echo "------------------------- [ $tgl ] ---------------------------" >>
root/automate.output.automate.log
/usr/bin/ndb_mgm << EOF >> /root/automate/output.automate.log 2>&1
show
start backup
show
quit
EOF
+++++++++++++++++++++++++++++++++++++++++++++++++++++

Hasil backup bisa disimpan di "/var/lib/mysql-cluster/BACKUP @dbase-1. Hal ini dikarenakan output dari management console menyatakan bahwa NDB id=4 (pada dbase-2) tidak terkoneksi, sehingga proses backup hanya dilakukan pada node 3 (db-1).
+++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++

Comments

Popular posts from this blog

Karakteristik TCP dan UDP

Kali ini kita akan membahas tentang TCP dan UDP. Pada bagian ini, kita akan membahas tentang karakteristik masing-masing dari TCP dan UDP. Dengan mengenal TCP dan UDP, kita dapat tahu kapan kita akan menempatkan suatu protokol yang tepat dalam implementasi jaringan. 1.Kapan menggunakan TCP dan UDP?? DNS menggunakan TCP dan UDP di port komputer 53 untuk melayani permintaan DNS. Nyaris semua permintaan DNS berisi permintaan UDP tunggal dari klien yang diikuti oleh jawaban UDP tunggal dari server. Dan pada saat kapan protocol TCP digunakan? Umumnya TCP dipergunakanhanya ketika ukuran data jawaban melebihi 512 byte, atau untuk pertukaran zona DNS zone transfer. DNS zone transfer adalah sebuah mekanisme untukmereplikasi DNS data dari satu DNS ke DNS server lain. Zone transfer digunakan pada saat kita ingin mereplikasi DNS data pada DNS server kita dalam upaya menghemat bandwidth, untuk meningkatkankecepatan terhadap suatu permintaaan atau untuk membuat DNS data selalu tersedia pada saat
Did you ever got this error message, "Could not start the "application" Service service on Local Computer. Error 1069 : The Service did not start due to a logon failure.” I ever got this message when i try to start an application on windows server 2003 or NT. I try to retype the password in "services" menu. But, it still did not work. Now, i check the permission on file that refer to path that show in "services". And i set it to full access for everyone. And then, i back to the "services" menu again, and starting this. And it's working now. This issue show, it cannot to access the file on windows services. It needs to make sure that the files is able to execute. So if you got this message, try to register in Control Panel > Administrative > Services. And Type the password and start it after you put your password.