Archive for the 'Open-Source' Category

MySQL : Quick Recipes

Sebagai seorang DBA (Database Administrator) yang banyak berkecimpung antara lain dengan MySQL, disini saya akan menuliskan berbagai catatan “resep-resep” MySQL yang sering digunakan.

Resep-resep ini bersifat instan, yaitu bisa langsung Anda copas (copy-paste) di layar Terminal server.
Tentunya setelah menyesuaikan berbagai variable yang ada (username, password, dst)

Selamat menikmati πŸ™‚


PERSIAPAN

Jalankan perintah-perintah beriku ini, agar Anda bisa langsung menjalankan berbagai resep yang ada disini :


### persiapan agar bisa menjalankan mysql (client)
### tanpa perlu memasukkan password lagi
echo "[client]" > ~/.my.cnf
echo "user = root" >> ~/.my.cnf
echo "pass = yourpassword" >> ~/.my.cnf


BENCHMARK DATABASE


mysqlslap --user=root --password="rahasiasaya" --host=10.0.8.8 --concurrency=50 --number-of-queries=100000 --auto-generate-sql-unique-query-number=100000 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=key

# contoh hasil benchmark :
# Benchmark
# Average number of seconds to run all queries: 4.031 seconds
# Minimum number of seconds to run all queries: 4.031 seconds
# Maximum number of seconds to run all queries: 4.031 seconds
# Number of clients running queries: 50
# Average number of queries per client: 2000

Pada contoh diatas, ada 100.000 query yang dijalankan, dan membutuhkan waktu 4 detik = 25.000 query / detik.

Panduan lebih detail seputar mysqlslap :
http://dev.mysql.com/doc/refman/5.5/en/mysqlslap.html


RECOVER ROOT USER


sudo /etc/init.d/mysql stop
sudo mysqld_safe --skip-grant-tables &

mysql -e "use mysql; update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root'; flush privileges;"

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start


CREATE A NEW DATABASE & USER


# bikin database & user baru
mysql -e "create user newuser; create database newdatabase;"

# beri newuser akses full ke newdatabase
mysql -e "use mysql; update user set password=PASSWORD('newpassword') where User='newuser'; GRANT ALL PRIVILEGES ON newdatabase.* To 'newuser'@'localhost' IDENTIFIED BY 'newpassword'; flush privileges;"


SETUP MYSQL SERVER (dengan user biasa / bukan root)

Panduannya bisa dibaca disini : [ Install MySQL Server (tanpa root) ]


SETUP MYSQL CLUSTER (dengan user biasa / bukan root)

Panduannya bisa dibaca disini : [ Install MySQL Cluster (tanpa root) ]


SETUP AUTO BACKUP

Panduannya bisa dibaca disini : [ MySQL Archived Backup ]


SETUP REPLIKASI BERANTAI

Replikasi sering dianggap sebagai solusi untuk mengatasi beban kerja yang tinggi. Padahal, untuk banyak kasus, performa sebuah server MySQL sudah lebih dari mencukupi. Tidak perlu menggunakan replikasi lagi.

Replikasi justru paling bermanfaat sebagai fasilitas backup data yang selalu up to date. Dengan memasang fitur ini, maka kita jadi bisa memiliki backup database yang kemudian siap untuk berfungsi jika server database mengalami masalah.

Di resep ini, saya akan melakukan replikasi dengan alur sbb :
Server1 -> Server2 -> Server3

Ya, Server2 akan berfungsi sekaligus sebagai Slave (dari Server1) dan Master (untuk Server3)

Terlampir adalah resep untuk melakukan ini.
Perhatian, Anda perlu menyesuaikan variable-variable ini terlebih dahulu sebelum melakukan copy-paste di Terminal server ybs :

  • exampledb
  • server1
  • server2
  • server3
  • yourpassword
  • replicauser
  • replicapassword
  • Baris-baris “CHANGE MASTER”, yaitu variable MASTER_LOG_FILE dan MASTER_LOG_POS


########## SERVER1 ################
### install LAMP
sudo apt-get install phpmyadmin mysql-server

### persiapan agar bisa menjalankan mysql (client)
### tanpa perlu memasukkan password lagi
echo "[client]" > ~/.my.cnf
echo "user = root" >> ~/.my.cnf
echo "pass = yourpassword" >> ~/.my.cnf

### setting Master1
sudo bash -c 'echo server-id=1 >> /etc/mysql/my.cnf'
sudo bash -c 'echo log-bin = /var/log/mysql/mysql-bin.log >> /etc/mysql/my.cnf'
sudo bash -c 'echo bind-address = 0.0.0.0 >> /etc/mysql/my.cnf'

#### JANGAN lupa untuk hapus baris ini : bind-address = 127.0.0.1
#### jika tidak, maka slave tidak akan bisa connect ke Master1

### restart MySQL
/etc/init.d/mysql restart

### buat user untuk replikasi
mysql -e "GRANT REPLICATION SLAVE ON *.* TO 'replicauser'@'%' IDENTIFIED BY 'replicapassword'; FLUSH PRIVILEGES;"

### kunci database
mysql -e "FLUSH TABLES WITH READ LOCK;"

### catat output dari perintah berikut ini
mysql -e "SHOW MASTER STATUS;"

### outputnya seperti ini
#+------------------+----------+--------------+------------------+
#| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
#+------------------+----------+--------------+------------------+
#| mysql-bin.000001 | 618 | exampledb | |
#+------------------+----------+--------------+------------------+

### backup database tsb
mysqldump -u root -p --add-drop-database --databases exampledb > /tmp/exampledb.sql

### buka kembali kunci database
mysql -e "UNlOCK TABLES;"

########## SERVER2 ################
### install LAMP
sudo apt-get install phpmyadmin mysql-server

### persiapan agar bisa menjalankan mysql (client)
### tanpa perlu memasukkan password lagi
echo "[client]" > ~/.my.cnf
echo "user = root" >> ~/.my.cnf
echo "pass = yourpassword" >> ~/.my.cnf

### copy backup dari server1
scp -v root@server1:/tmp/exampledb.sql /tmp/exampledb.sql
mysql -u root -p < /tmp/exampledb.sql ### setting Slave1 / Master2 sudo bash -c 'echo server-id=2 >> /etc/mysql/my.cnf'
sudo bash -c 'echo replicate-do-db=exampledb >> /etc/mysql/my.cnf'

### restart MySQL
/etc/init.d/mysql restart

### mulai setting sebagai Slave1
mysql -e "SLAVE STOP;"

mysql -e "CHANGE MASTER TO MASTER_HOST='server1', MASTER_USER='replicauser', MASTER_PASSWORD='replicapassword', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=618;"

mysql -e "START SLAVE;"

# ---------------------------------
### mulai setting sebagai Master2
sudo bash -c 'echo log-slave-updates >> /etc/mysql/my.cnf'
sudo bash -c 'echo relay-log=server1-relay-bin >> /etc/mysql/my.cnf'

### restart MySQL
/etc/init.d/mysql restart

### tunggu agar sempat sync dengan Master1
sleep 600

### buat user untuk replikasi
mysql -e "GRANT REPLICATION SLAVE ON *.* TO 'replicauser'@'%' IDENTIFIED BY 'replicapassword'; FLUSH PRIVILEGES;"

### kunci database
mysql -e "FLUSH TABLES WITH READ LOCK;"

### catat output dari perintah berikut ini
mysql -e "SHOW MASTER STATUS;"

### outputnya seperti ini
#+------------------+----------+--------------+------------------+
#| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
#+------------------+----------+--------------+------------------+
#| mysql-bin.000003 | 777 | exampledb | |
#+------------------+----------+--------------+------------------+

### backup database tsb
mysqldump -u root -p --add-drop-database --databases exampledb > /tmp/exampledb.sql

### buka kembali kunci database
mysql -e "UNlOCK TABLES;"

########## SERVER3 ################
### install LAMP
sudo apt-get install phpmyadmin mysql-server

### persiapan agar bisa menjalankan mysql (client)
### tanpa perlu memasukkan password lagi
echo "[client]" > ~/.my.cnf
echo "user = root" >> ~/.my.cnf
echo "pass = yourpassword" >> ~/.my.cnf

### copy backup dari server1
scp -v root@server2:/tmp/exampledb.sql /tmp/exampledb.sql
mysql -u root -p < /tmp/exampledb.sql ### setting Slave2 sudo bash -c 'echo server-id=3 >> /etc/mysql/my.cnf'
sudo bash -c 'echo replicate-do-db=exampledb >> /etc/mysql/my.cnf'

### restart MySQL
/etc/init.d/mysql restart

### mulai setting sebagai Slave1
mysql -e "SLAVE STOP;"

mysql -e "CHANGE MASTER TO MASTER_HOST='server2', MASTER_USER='replicauser', MASTER_PASSWORD='replicapassword', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=777;"

mysql -e "START SLAVE;"

### restart MySQL
/etc/init.d/mysql restart

MEMPROMOSIKAN SERVER2 MENJADI MASTER


### set server2 = master
mysql -e "STOP SLAVE;"

### jangan lupa remark baris
### "log-slave-updates" & "relay-log"
### dari /etc/mysql/my.cnf

BERBAGAI SKEMA REPLIKASI LAINNYA

http://dev.mysql.com/doc/refman/5.1/en/replication-solutions-performance.html

http://dev.mysql.com/doc/refman/5.1/en/replication-solutions-switch.html

Presentasi soal MySQL Replication dari tim engineer Yahoo


PURGE BINARY LOGS

### Untuk hapus binlog jadul = hemat disk space
mysql -e "PURGE BINARY LOGS BEFORE '2012-11-01 00:00:01';"

BSA Sued by Indonesian company

I thought I’d never see the day – BSA (Business Software Alliance) is currently being sued by an Indonesian company, Multisari, due to the illegal raids carried out to find illegal / pirated software.

I know, I know – what an irony indeed, right ? πŸ™‚ breaking the law to find the breakers of the law, gosh.
What a bunch of genius. πŸ˜€

Context : Here in Indonesia, some(often?)times there are rogue officials, from BSA or Police, who conducted the checks (raids) illegally.

Imagine having your computers / servers seized suddenly, due to suspicion of having illegal software in it.
What a nasty way to halt a company’s daily operation eh? Yet that’s what happened with a lot of companies here.

No search warrant. No warning whatsoever.
Just some officers suddenly showing up in your office, do some quick check – and there goes your computers.

However, most of the victims chose to stay silent. Or, do a backhand deal with said officers, involving some cash of course, to secure the return of their computer.

Some of the victims of these illegal BSA raids also chose to migrate to Linux πŸ™‚ which then are welcomed warmly by the local F/OSS community.
Thanks BSA for sending them our way ! Bill Gates & Steve Ballmer would be SO happy that you did such a great job πŸ˜€

Anyway, Multisari chose to stood its ground. It chose to strike back at these BSA bullies. And I’m so happy to be able to witness such a day. Good for them !

Quoted :


“In case number 517/Pdt.G/2011/PN.Jkt.Pst, Multisari Langgeng Inc. sued BSA Singapore, BSA Indonesia, and BSA Washington DC”


“Multisari sued BSA because of the raids conducted by BSA Singapore (**) and BSA Indonesia to its office on September 22dn, 2011”

(**) What the hell is BSA Singapore doing here, raiding Indonesian companies, on Indonesian soil ?
This is an outrage.

Source : http://www.bisnis.com/articles/hukum-bisnis-perkara-multisari-vs-bsa-masuk-mediasi
(hint: Google Translate is your friend)

MySQL Performance :: Panduan Utama Tentang MySQL & Hardware Yang Dibutuhkan + MySQL Bantai Memcached & NoSQL !

Panduan Utama : MySQL & Hardwarenya Yang Diperlukan

Beberapa client utama saya adalah pengguna MySQL. Software yang mereka gunakan memanfaatkan MySQL sebagai databasenya dengan intensif, dan dengan beban kerja yang banyak & berat.

Karena itu, semua hal seputar topik performa MySQL sangat menarik perhatian saya.

Secara rutin saya & tim kami melakukan berbagai penelitian seputar kinerja MySQL.
Untuk beban kerja tertentu, bagian sistim yang mana yang menjadi bottleneck ? Bagaimana cara melenyapkan bottleneck tersebut ? Bagaimana meningkatkan response time dari MySQL ? Bagaimana cara meningkatkan kapasitas pemrosesan datanya ? Dan seterusnya.

Karena itu saya cukup terkejut gembira menemukan file presentasi berikut ini — dimana berbagai isinya selaras dengan banyak dari temuan kami selama ini. Maka, Anda akan dapat memanfaatkan informasi di dokumen ini seketika; dan tidak perlu sampai melakukan riset selama bertahun-tahun seperti yang kami lakukan secara rutin:

[ Linux & Hardware Optimizations For MySQL ]

Berikut ini adalah beberapa poin-poin ringkasannya :

  • Hardware RAID bisa mengakibatkan performa yang buruk : Tidak setaranya kualitas berbagai produk hardware RAID yang ada jadi bisa menyebabkan justru turunnya performa dibandingkan jika tanpa RAID. Prosesor yang melempem, firmware yang buggy / tidak berkualitas, dst — semua ini dapat menyebabkan penurunan kinerja yang cukup serius. Karena itu sudah cukup lama kami menyarankan untuk melakukan RAID secara software, terutama RAID0 / RAID10.
  • Banyak RAM = Kinerja Naik : MySQL dapat memanfaatkan RAM yang ada untuk banyak hal — mengatur agar proses INSERT menjadi sequential ke disk (sangat signifikan untuk harddisk / bukan SSD), “join” buffer, cache, dst.

    Pasang RAM sebanyak-banyaknya di server database Anda, dan lalu atur setting MySQL, agar bisa memanfaatkan RAM yang ada tersebut.

  • RAID0 / RAID10 adalah cara termurah untuk meningkatkan kinerja disk
  • InnoDB lebih kencang untuk Write-Ops : InnoDB melakukan proses row-level locking pada saat write — dan bukannya table-level locking seperti MyISAM. Pada MyISAM, jika sedang ada proses Write (insert / update / delete) maka seluruh operasi lainnya dihentikan oleh MySQL. Karena itu, pada table MyISAM yang proses Write nya cukup banyak, performanya bisa langsung anjlok dengan sangat drastis.
  • SSD SATA lebih lambat daripada SSD PCI-Express : kadang bisa lebih dari 2x lipat.
  • BBWC = Battery Backed-up Write Cache : satu kelebihan Hardware RAID adalah BBWC. Dengan BBWC, maka proses Write bisa menjadi jauh lebih cepat. Jangan lupa untuk mematikan dulu write cache di masing-masing disk nya sendiri.

Dan masih ada sangat banyak lagi tips & informasi berguna lainnya, yang sulit untuk ditemukan dimana-mana.
Berbeda dengan berbagai artikel di banyak situs, dokumen ini sangat padat isinya, dan tidak bertele-tele. Straight to the point. Sampai kadang bisa kebingungan sendiri membacanya πŸ™‚

Sangat direkomendasikan untuk mereka yang banyak bersentuhan dengan MySQL.

Untuk melakukan sendiri berbagai proses profiling & optimization nya, saya juga bisa merekomendasikan dokumen ini : [ Performance TUning & Stabilization Tips ]


MySQL Bantai Memcached & NoSQL : 750.000 query / second !

Beberapa tahun terakhir ini kita sering mendengar bagaimana MySQL itu lambat. Bahwa musti pakai Memcached baru bisa agak cepat / meningkat kapasitas (pemrosesan data) nya. Bahwa untuk jumlah query yang sangat banyak, maka musti membuang MySQL dan pindah ke NoSQL.

Yoshinori Matsunobu membuktikan bahwa MySQL sebetulnya amat kencang – dengan Plugin “HandlerSocket”, maka MySQL jadi bisa memproses 750.000 query per detik ! Sementara memcached hanya bisa mencapai 420.000 qps, dan Yoshinori belum berhasil menemukan produk NoSQL yang performanya bisa menyaingi ini.

Secara ringkas – HandlerSocket adalah plugin yang memungkinkan kita untuk mengakses database MySQL secara direct / bypass layer SQL internalnya. Jadinya seperti NoSQL juga, hanya saja ini di MySQL – bukan menggunakan database server lainnya.

HandlerSocket ini, karena berbasis MySQL, jadi memiliki berbagai kelebihan berikut ini dibandingkan dengan software NoSQL biasa :

  • Databasenya bisa diakses secara normal : karena mengakses database MySQL, maka datanya tetap bisa diakses secara normal / dengan perintah / query SQL biasa. Contoh: pembuatan laporan, tetap bisa menggunakan query SQL biasa.

    Tidak seperti software NoSQL lainnya; dimana seluruh akses harus berupa perintah NoSQL.

  • Crash-safe : HandlerSocket di desain untuk menggunakan database engine InnoDB di MySQL.
  • Semua keuntungan operasional MySQL : karena HandlerSocket berjalan di dalam MySQL sebagai plugin, maka semua manfaat MySQL bisa didapatkan — replication, online backup, SQL, internal cache / buffer pool, monitoring, SHOW xxxx STATUS, dst.
  • Tidak perlu merubah MySQL : karena berupa plugin, sehingga langsung kompatibel dengan semua versi MySQL.
  • Kompatibel dengan semua engine database di MySQL.
  • Dll

Siapa sangka ternyata kita tidak perlu pindah ke software NoSQL untuk mendapatkan performa yang tinggi ? Terus gunakan saja MySQL + HandlerSocket plugin.


Penutup

Berbeda dengan mitos & khayalan yang lazim ada, MySQL sebetulnya mampu memberikan kinerja yang sangat tinggi, dengan tetap menjaga integritas data kita.

Dan di luar dugaan, ketakutan saya paska akuisisi MySQL oleh Oracle tidak terjadi. MySQL tidak dibunuh oleh Oracle – tetapi, malah dikembangkan dengan jauh lebih cepat & mengesankan.
MySQL 5.5.x & MySQL Cluster 7.2.x adalah produk-produk MySQL yang paling impresif yang pernah saya temui. InnoDB di MySQL 5.5.x sudah sangat advanced dibandingkan versi sebelumnya. Dan MySQL Cluster 7.2.x akhirnya bisa menyimpan data di disk. Dan banyak kemajuan signifikan lainnya.

Pengetahuan mengenai seluk-beluk MySQL akan memungkinkan kita untuk membuat performanya melesat jauh dari para kompetitornya.

Bahan bacaan lebih lanjut :

Seri Belajar Open Source Cara Copas (BOSCA) : Install MySQL Cluster (tanpa root)

Belum lama ini Oracle telah merilis versi terbaru dari MySQL Cluster, yaitu versi 7.2.x. Ada banyak kelebihan versi terbaru ini, namun yang paling signifikan adalah kemampuannya untuk menyimpan database di disk.

Ya, dulu MySQL Cluster hanya bisa menyimpan data di memory.
Memang ini jadi meningkatkan performa, namun di lain sisi, otomatis jadi sangat beresiko. Jika server mati mendadak, maka seluruh data akan lenyap.

MySQL Cluster versi 7.2.x sudah tidak memiliki limitasi ini lagi. Ditambah dengan berbagai enhancements lainnya, maka saya bisa merekomendasikan versi ini sebagai awal yang baik untuk mulai belajar / menggunakan MySQL Cluster.

Panduan ini akan memungkinkan Anda untuk memasang MySQL Cluster tanpa memerlukan user root. Ini berarti bahwa Anda jadi bisa untuk memasang bahkan banyak MySQL Cluster di satu komputer.
Ini akan sangat berguna misalnya untuk melakukan riset / ujicoba.

Seri BOSCA = Belajar Open Source Cara copAs (copy-paste) :: artikel ini saya tuliskan sedemikian rupa, sehingga Anda tinggal copas / copy-paste saja ke Terminal / Console.
Sehingga hasilnya langsung bisa dinikmati.

Saya percaya bahwa learning by doing adalah cara belajar yang terbaik. Pengetahuan & pemahaman akan otomatis didapatkan dengan langsung praktek / melakukan.
Seri artikel BOSCA bertujuan untuk membantu Anda agar dapat segera mulai melakukan praktek, dengan usaha yang seminimal mungkin.

Selamat menikmati :

### perlu install library AIO (Asynchronous I/O) di beberapa distro
sudo apt-get install libaio1

mkdir $HOME/mysql-cluster
cd  $HOME/mysql-cluster

### Download dari http://www.mysql.com/downloads/cluster/
### Pilih "Linux - Generic 2.6 (x86, 64-bit), Compressed TAR Archive"
wget -c http://mysql.ntu.edu.tw/Downloads/MySQL-Cluster-7.2/mysql-cluster-gpl-7.2.5-linux2.6-x86_64.tar.gz

tar xzvf mysql-cluster-gpl-7.2.5-linux2.6-x86_64.tar.gz

ln -s mysql-cluster-gpl-7.2.5-linux2.6-x86_64 mysqlc
mkdir my_cluster my_cluster/ndb_data my_cluster/mysqld_data my_cluster/conf

### buat beberapa direktori untuk file PID, socket, dan log
mkdir $HOME/mysql-cluster/mysqlc/var
mkdir $HOME/mysql-cluster/mysqlc/var/log
mkdir $HOME/mysql-cluster/mysqlc/var/run
chown -R $USER:$USER $HOME/mysql-cluster/mysqlc/var

########## membuat file-file konfigurasi
### buat file $HOME/mysql-cluster/my_cluster/conf/my.cnf
echo "[mysqld]" >> $HOME/mysql-cluster/my_cluster/conf/my.cnf
echo "ndbcluster" >> $HOME/mysql-cluster/my_cluster/conf/my.cnf
echo "datadir=$HOME/mysql-cluster/my_cluster/mysqld_data" >> $HOME/mysql-cluster/my_cluster/conf/my.cnf
echo "basedir=$HOME/mysql-cluster/mysqlc" >> $HOME/mysql-cluster/my_cluster/conf/my.cnf
echo "port=5000" >> $HOME/mysql-cluster/my_cluster/conf/my.cnf

### buat file $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "[ndb_mgmd]" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "hostname=localhost" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "datadir=$HOME/mysql-cluster/my_cluster/ndb_data" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "NodeId=1" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "[ndbd default]" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "noofreplicas=2" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "datadir=$HOME/mysql-cluster/my_cluster/ndb_data" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "[ndbd]" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "hostname=localhost" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "NodeId=3" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "[ndbd]" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "hostname=localhost" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "NodeId=4" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "[mysqld]" >> $HOME/mysql-cluster/my_cluster/conf/config.ini
echo "NodeId=50" >> $HOME/mysql-cluster/my_cluster/conf/config.ini


################ inisialisasi
### Inisialisasi database
cd $HOME/mysql-cluster/mysqlc
$HOME/mysql-cluster/mysqlc/scripts/mysql_install_db --no-defaults --datadir=$HOME/mysql-cluster/my_cluster/mysqld_data/

### menjalankan MySQL Cluster untuk pertama kali
cd ../my_cluster/
$HOME/mysql-cluster/mysqlc/bin/ndb_mgmd -f $HOME/mysql-cluster/my_cluster/conf/config.ini --initial --configdir=$HOME/mysql-cluster/my_cluster/conf/

$HOME/mysql-cluster/mysqlc/bin/ndbd -c localhost:1186
$HOME/mysql-cluster/mysqlc/bin/ndbd -c localhost:1186

$HOME/mysql-cluster/mysqlc/bin/mysqld --defaults-file=$HOME/mysql-cluster/my_cluster/conf/my.cnf --socket=$HOME/mysql-cluster/mysqlc/var/run/mysql.sock --pid-file=$HOME/mysql-cluster/mysqlc/var/run/mysql.pid&


### tunggu sekitar 30 detik, MySQL CLuster sedang launch
### lalu kita bisa cek statusnya :
$HOME/mysql-cluster/mysqlc/bin/ndb_mgm -e show

### terlampir cara untuk membuat table dengan engine NDB / MySQL Cluster
$HOME/mysql-cluster/mysqlc/bin/mysql -h 127.0.0.1 -P 5000 -u root
####### perintah-perintah berikut ini di copy-paste di prompt mysql> #########
create database clusterdb;use clusterdb;
create table simples (id int not null primary key) engine=ndb;
insert into simples values (1),(2),(3),(4);
select * from simples;
exit


### shutdown
$HOME/mysql-cluster/mysqlc/bin/mysqladmin -u root -h 127.0.0.1 -P 5000 shutdown
$HOME/mysql-cluster/mysqlc/bin/ndb_mgm -e shutdown


### buat script startup
echo '#!/bin/bash' >> $HOME/mysql-cluster/startup-cluster.sh
echo "$HOME/mysql-cluster/mysqlc/bin/ndb_mgmd -f $HOME/mysql-cluster/my_cluster/conf/config.ini --initial --configdir=$HOME/mysql-cluster/my_cluster/conf/" >> $HOME/mysql-cluster/startup-cluster.sh

echo "$HOME/mysql-cluster/mysqlc/bin/ndbd -c localhost:1186" >> $HOME/mysql-cluster/startup-cluster.sh
echo "$HOME/mysql-cluster/mysqlc/bin/ndbd -c localhost:1186" >> $HOME/mysql-cluster/startup-cluster.sh

echo "$HOME/mysql-cluster/mysqlc/bin/mysqld --defaults-file=$HOME/mysql-cluster/my_cluster/conf/my.cnf --socket=$HOME/mysql-cluster/mysqlc/var/run/mysql.sock --pid-file=$HOME/mysql-cluster/mysqlc/var/run/mysql.pid&" >> $HOME/mysql-cluster/startup-cluster.sh

chmod 755 $HOME/mysql-cluster/startup-cluster.sh


### buat script shutdown
echo '#!/bin/bash' >> $HOME/mysql-cluster/shutdown-cluster.sh
echo "$HOME/mysql-cluster/mysqlc/bin/mysqladmin -u root -h 127.0.0.1 -P 5000 shutdown" >> $HOME/mysql-cluster/shutdown-cluster.sh
echo "$HOME/mysql-cluster/mysqlc/bin/ndb_mgm -e shutdown" >> $HOME/mysql-cluster/shutdown-cluster.sh
chmod 755  $HOME/mysql-cluster/shutdown-cluster.sh


### untuk startup / shutdown MySQL Cluster, cukup ketik :
$HOME/mysql-cluster/startup-cluster.sh
$HOME/mysql-cluster/shutdown-cluster.sh


### Enjoy !

Seri Belajar Open Source Cara Copas (BOSCA) : Install MySQL Server (tanpa root)

Panduan ini akan memungkinkan Anda untuk memasang MySQL Server tanpa memerlukan user root. Ini berarti bahwa Anda jadi bisa untuk memasang bahkan banyak MySQL Cluster di satu komputer. Ini akan sangat berguna misalnya untuk melakukan riset / ujicoba.

Memasang banyak MySQL Server di satu komputer juga berguna untuk meningkatkan concurrent throughput – pada jumlah koneksi / user yang banyak, kadang MySQL Server nya sendiri yang menjadi bottleneck.
Memasang banyak MySQL Server di komputer tersebut, dengan masing-masing listening di Port yang berbeda, bisa menjadi salah satu alternatif solusinya.

Seri BOSCA = Belajar Open Source Cara copAs (copy-paste) :: artikel ini saya tuliskan sedemikian rupa, sehingga Anda tinggal copas / copy-paste saja ke Terminal / Console.
Sehingga hasilnya langsung bisa dinikmati.

Saya percaya bahwa learning by doing adalah cara belajar yang terbaik. Pengetahuan & pemahaman akan otomatis didapatkan dengan langsung praktek / melakukan.
Seri artikel BOSCA bertujuan untuk membantu Anda agar dapat segera mulai melakukan praktek, dengan usaha yang seminimal mungkin.

Selamat menikmati :

### perlu install library AIO (Asynchronous I/O) di beberapa distro
sudo apt-get install libaio1

mkdir $HOME/mysql-cluster
mkdir $HOME/mysql-cluster/server1
cd  $HOME/mysql-cluster/server1

### Download dari http://www.mysql.com/downloads/mysql/
### Pilih "Linux - Generic 2.6 (x86, 64-bit), Compressed TAR Archive"
wget -c --timeout=10 --tries=0 http://ftp.ntu.edu.tw/pub2/MySQL/Downloads/MySQL-5.5/mysql-5.5.22-linux2.6-x86_64.tar.gz

tar xzvf mysql-5.5.22-linux2.6-x86_64.tar.gz
ln -s mysql-5.5.22-linux2.6-x86_64 mysql

### buat beberapa direktori untuk file PID, socket, dan log
mkdir $HOME/mysql-cluster/server1/mysql/etc
mkdir $HOME/mysql-cluster/server1/mysql/var
mkdir $HOME/mysql-cluster/server1/mysql/var/log
mkdir $HOME/mysql-cluster/server1/mysql/var/run
chown -R $USER:$USER $HOME/mysql-cluster/server1/mysql/var
chown -R $USER:$USER $HOME/mysql-cluster/server1/mysql/etc

################# menyiapkan file konfigurasi
cp $HOME/mysql-cluster/server1/mysql/support-files/config.medium.ini $HOME/mysql-cluster/server1/mysql/etc/my.cnf

################ inisialisasi database
cd $HOME/mysql-cluster/server1/mysql
$HOME/mysql-cluster/server1/mysql/scripts/mysql_install_db --user=$USER --defaults-file=$HOME/mysql-cluster/server1/mysql/etc/my.cnf --basedir=$HOME/mysql-cluster/server1/mysql/  --datadir=$HOME/mysql-cluster/server1/mysql/data/

###### start database
$HOME/mysql-cluster/server1/mysql/bin/mysqld_safe --defaults-file=$HOME/mysql-cluster/server1/mysql/etc/my.cnf  --user=$USER  --basedir=$HOME/mysql-cluster/server1/mysql/  --datadir=$HOME/mysql-cluster/server1/mysql/data/  --socket=$HOME/mysql-cluster/server1/mysql/var/run/mysql.sock --pid-file=$HOME/mysql-cluster/server1/mysql/var/run/mysql.pid --port=9001 &

##### akses database
$HOME/mysql-cluster/server1/mysql/bin/mysql -u root -h 127.0.0.1 -P 9001 

##### shutdown database
$HOME/mysql-cluster/server1/mysql/bin/mysqladmin -u root -h 127.0.0.1 -P 9001 shutdown

### buat script startup
echo '#!/bin/bash' >> $HOME/mysql-cluster/server1/startup-server1.sh
echo "$HOME/mysql-cluster/server1/mysql/bin/mysqld_safe --defaults-file=$HOME/mysql-cluster/server1/mysql/etc/my.cnf  --user=$USER  --basedir=$HOME/mysql-cluster/server1/mysql/  --datadir=$HOME/mysql-cluster/server1/mysql/data/  --socket=$HOME/mysql-cluster/server1/mysql/var/run/mysql.sock --pid-file=$HOME/mysql-cluster/server1/mysql/var/run/mysql.pid --port=9001 &" >> $HOME/mysql-cluster/server1/startup-server1.sh
chmod 755 $HOME/mysql-cluster/server1/startup-server1.sh


### buat script shutdown
echo '#!/bin/bash' >> $HOME/mysql-cluster/server1/shutdown-server1.sh
echo "$HOME/mysql-cluster/server1/mysql/bin/mysqladmin -u root -h 127.0.0.1 -P 9001 shutdown"  >> $HOME/mysql-cluster/server1/shutdown-server1.sh
chmod 755  $HOME/mysql-cluster/server1/shutdown-server1.sh


### untuk startup / shutdown MySQL Cluster, cukup ketik :
$HOME/mysql-cluster/server1/startup-server1.sh
$HOME/mysql-cluster/server1/shutdown-server1.sh


### Enjoy !

Archive-Backup Your Website

This is the #2 article in the backup topics, check out the first one : MySQL Archived Backup

Nowadays, nearly everyone / every company have a website of sorts. What most of us forgot is to back them up, in case of problems.
And as Murphy’s Law stated :

If it can go wrong, it will go wrong – in the worst possible time

Backup of your data can save you from such occasion.

An archived-backup can help you further – should you need to retrieve certain version of your data, then you can. Because it saves multiple copies of your data, each from certain point of time.

A way to do this is by using tools like the excellent rdiff-backup. In short – it’s like Apple’s Time Machine, but can be easily scripted & automated.

For other cases, you may need to create your own script for it.

Below is a script we use to backup our customer’s website.
It will backup both their MySQL database and the actual website itself.

Note that the backup script will archive for 2 weeks.
If you need diffent archive period, please feel free to modify the script, following the example in this article.

Here’s the script : backup-website.sh



#!/bin/bash

### Please change the variables below to suit you
sourcedir="/home/myuser/web"
targetdir="/home/myuser/mybackup"
targetfile="myname"
datestr="`date +%A`"
# 2 months archive
#datestr="`date +%d`"

tempdir="/tmp/$targetfile-$datestr"

dbuser="root"
dbpass="mypass"
database="mydb"

#################################
bmkdir="/bin/mkdir"
btar="/bin/tar"
bbzip2="/bin/bzip2"
bcp="/bin/cp"
bmysqldump="/usr/bin/mysqldump"

################################## start backup now

### create temporary space
$bmkdir $tempdir

### backup database
$bmysqldump -u $dbuser --password=$dbpass $database > $tempdir/$targetfile-$datestr.mysql
$bbzip2 $tempdir/$targetfile-$datestr.mysql

### backup website
$btar cvzf $tempdir/$targetfile-web-$datestr.tar.gz $sourcedir

### 2 weeks archive
$bcp $targetdir/$targetfile-$datestr.tar $targetdir/$targetfile-last-$datestr.tar

### backup website + mysql database
$btar cvf $targetdir/$targetfile-$datestr.tar $tempdir/*


Enjoy πŸ™‚

MySQL Archived Backup

I regard backup as a very important matter. Because one of the certainties in life is this :

Computer WILL Fail

However, with so many computers in our care, we need a way to make it automatic. Otherwise, it will simply take too much time.

Thankfully, this is very easy to do in UNIX / Linux computers.

We have several kind of backup scripts. All of them are quite simple, but essential. Nobody should be without them.

Below you can find a backup script we use to backup MySQL database for our clients. Basically, this is how we use it :

  1. Modify the script to archive for the time range that we’d like.
    The script can archive the backup from 1 week to unlimited. Just remark out the time range that you don’t need (by putting the “#” character in the first column of the particular row).
  2. Make sure we can run mysqldump automatically / with no user intervention.
    This can be done easily by creating a file name ~/.my.cnf
  3. Setup the backup to run automatically via cron
  4. Routinely backup the backup to other servers.
    Yes, there is no such thing as “too much backup”.

Without further ado, here is the script : backup-archive-mysql.sh


#!/bin/bash

### Please change the variables below to suit you
targetdir="/home/myuser/mybackup"
targetfile="db-mydb"
targetsuffix=".mysql"

userdb="root"
database="mydb"

#################################
bcp="/bin/cp"
bmysqldump="/usr/bin/mysqldump"

################################## start backup now
### Archive : 1 week
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%A`$targetsuffix

### Archive : 2 weeks
$bcp $targetdir/$targetfile-`date +%A`$targetsuffix $targetdir/$targetfile-last-`date +%A`$targetsuffix
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%A`$targetsuffix

### Archive : 1 month
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%d`$targetsuffix

### Archive : 2 months
$bcp $targetdir/$targetfile-`date +%d`$targetsuffix $targetdir/$targetfile-last-`date +%d`$targetsuffix
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%d`$targetsuffix

### Archive : 1 year
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%m%d`$targetsuffix

### Archive : 2 years
$bcp $targetdir/$targetfile-`date +%m%d`$targetsuffix $targetdir/$targetfile-last-`date +%m%d`$targetsuffix
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%m%d`.mysql

### No Archive
### WARNING: always monitor your free disk space, or the following line may consume them all
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%Y%m%d`$targetsuffix

Here is a sample of ~/.my.cnf; if this file exist, then various MySQL tools & software will be able to run with no intervention.
Of course you’ll need to adjust its user & password :


[client]
user=root
password=mypassword

Hope you’ll find this useful.
I’ll post our other scripts here from time to time as well. Stay tuned.

Solution : Problem When Upgrading Samsung Galaxy Mini to Gingerbread 2.3.4

That was quite scary – I almost bricked (read: killed!) my phone this morning, when I tried to upgrade it to Gingerbread (Android version 2.3.x).

To cut long story short – tried to install / “flash” Gingerbread ROM into my Samsung Galaxy Mini. There are many excellent tutorials that shows how easy to do this, for example :

# Upgrade Samsung Galaxy Mini and Root to Android Gingerbread 2.3.3
#
Samsung Galaxy Mini S5570XXKPI Android 2.3.4 Gingerbread
# And many others.

However, in my case, the process got stuck at the following text :

<1> START!!!
<1> set download environment.
<1> big partition size!!
<1> big partition size!!
<1> big partition size!!
<1> big partition size!!
<1> big partition size!!
<1> big partition size!!
<1> mibib download..

I was quite rightly scared at this point, thinking “dang, that’s it – my phone is bricked”.

Thankfully, that was not the case πŸ˜€ after MUCH googling around, I was able to finally upgrade my Galaxy Mini by doing the following :

DISCLAIMER: I shared this info with the intention to help others. However, I offer NO guarantee whatsoever that it will work for you as well.
Be aware that there is always a chance that your phone will end up bricked. Flashing ROM is not yet a 100% safe operation.

Now let’s continue, shall we ?

(1) Find another computer which has NOT Kies installed in it. (Kies is the software provided along with Samsung phones).
Looks like somehow that Kies is interfering with Odin / flashing operation on our Galaxy Mini. NOT good. Bad, bad Kies !

(2) Install Samsung USB driver there. If you haven’t got it, you can download it from here : [ Samsung USB driver ] (18 MB)

(3) Now, start following one of the tutorials listed above.

Now my Galaxy Mini is running Gingerbread 2.3.4 πŸ˜€ yeah !

A bit more info – this is what you’ll get in Odin’s Message Box when everything’s going okay :

Download Start…
<0> Create File…
<1> StartThread Detected : 1
<2> StartThread Detected : 0
<3> StartThread Detected : 0
<4> StartThread Detected : 0
<5> StartThread Detected : 0
<6> StartThread Detected : 0
<7> StartThread Detected : 0
<8> StartThread Detected : 0
<1> setup connection…
<1> odin mode.. check plcatform verification.
<1> VerifyPlatform:V0, P0,R0
<1> START!!!
<1> set download environment.
<1> big partition size!!
<1> big partition size!!
<1> big partition size!!
<1> big partition size!!
<1> big partition size!!
<1> big partition size!!
<1> mibib download..
<1> 1/10 Finished.
<1> qcsbl download..
<1> 2/10 Finished.
<1> oemsbl download..
<1> 3/10 Finished.
<1> amss download..
<1> 4/10 Finished.
<1> arm11boot download..
<1> 5/10 Finished.
<1> boot.img download..
<1> 6/10 Finished.
<1> recovery.img download..
<1> 7/10 Finished.
<1> system.rfs download..
<1> 8/10 Finished.
<1> data.rfs download..
<1> 9/10 Finished.
<1> csc.rfs download..
<1> 10/10 Finished.
<1> reset pda..
<0> Started Timer
<1> Close serial port and wait until rebooting.
<1> PASS!!!
<0> Destroy instant..
<0> Killed timer

So that’s how I did it. Hopefully it’ll help someone else out there πŸ™‚
Enjoy !

Turut Merayakan HUT RI 66 : AhadPOS Dirilis

Menyambut & merayakan kemerdekaan Republik Indonesia yang ke-66, dengan gembira kami mengumumkan bahwa AhadPOS kini telah resmi dirilis.

AhadPOS v1.2.0 ]
Kode nama rilis ini adalah : β€œMinangkabau”

Tentang AhadPOS :
http://ahadpos.com/about/

Fasilitas support :
http://ahadpos.com/support/

Dokumentasi ringkas :
http://ahadpos.com/docs/

Mengapa Fokus Ke UKM ?

Sektor Retail UKM adalah salah satu sektor yang sudah terbukti cukup tahan terhadap beberapa gelombang krisis ekonomi yang terjadi. Ketika berbagai perusahaan raksasa kolaps secara spektakuler, berbagai retail UKM terus hidup. Beberapa bahkan menemukan / membuat peluang-peluang baru, dan menjadi lebih besar paska krisis.

Sektor ini juga sangat padat karya dan menghidupi sangat banyak orang. Bantuan serta dukungan untuk sektor ini akan membantu masyarakat secara luas.

Berikut adalah beberapa fakta seputar pentingnya UKM di Indonesia :

(a) UMKM menyumbang 53,32% PDB (sumber)
(b) Lebih fantastis lagi adalah ketika kita melihat angka penyerapan tenaga kerja – di berbagai daerah, secara konsisten UMKM menyerap lebih dari 95% tenaga kerja.
Di Sukabumi, UMKM bahkan menyerap 99% dari semua tenaga kerja.
(sumber)

Informasi lebih menarik datang dari BPS, yaitu :

# UKM adalah 99,9% dari pelaku usaha usaha Nasional
# Padat Karya : Mempekerjakan 96,95% dari total tenaga kerja
# Padat Karya : Mempekerjakan 90 juta orang (Usaha Besar: hanya 2 juta)
# Menyumbang Pendapatan Nasional sebesar 2000+ Trilyun

(sumber: BPS 2008)

Bantuan kepada sektor ini akan berdampak sangat luas. Karena itu Rimbalinux.com berkomitmen untuk berusaha mendukung mereka.

Masalah & Solusi

Salah satu masalah terbesar pada retail UKM adalah proses penjualan & kontrol stok (inventory control). Kontrol stok amat penting untuk mencegah kehilangan. Dan pada jangka panjang, kontrol stok yang baik bisa sangat membantu untuk optimalisasi stok.
Stok yang terkontrol dan optimal akan sangat membantu kelancaran cashflow, dan meningkatkan keuntungan.

Masalahnya, pekerjaan ini (kontrol stok) cukup memakan waktu, sehingga para pebisnis UKM sering menjadi segan untuk melakukannya. Dan implementasinya secara manual juga rentan kesalahan, dan juga sulit untuk menelusuri sumber kesalahannya.

Semua masalah ini bisa diatasi dengan mudah oleh sebuah sistem POS (Point Of Sales) yang terintegrasi. Tidak hanya berupa layar kasir / transaksi, namun juga sudah mencakup modul kontrol stok.

Pada saat ini, ada banyak masalah dengan berbagai sistem POS, baik yang open source maupun yang proprietary, seperti :

1. Fitur tidak lengkap
2. Reliabilitas
3. Data lock-in
4. Tidak bisa dikembangkan
5. Harga

Software AhadPOS akan memecahkan semua masalah ini, karena dibuat dengan berdasarkan pengalaman langsung dari beberapa UKM di lapangan, dan tersedia dengan lisensi yang bebas (GPL).

Selamat menikmati, dan, Merdeka !!

Lampiran : foto-foto pameran AhadPOS, gedung JCC,
Acara PPKI (Pekan Produk Kreatif Indonesia), 23-27 Juni 2010

AhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, Jakarta AhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, Jakarta AhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, JakartaAhadPOS - shown on PPKI Expo June 2010 @ JCC, Jakarta

Pameran AhadPOS @ JCC, a set on Flickr.

Di PPKI (Pekan Produk Kreatif Indonesia), 23 – 27 Juni 2010

Broken HardDisk ? Maybe Not :)

Have you ever got error messages in Windows / Linux, similar to these ?

ata1: soft resetting link
ata1: link is slow to respond, please be patient
Buffer I/O error on device sda, logical block 0
ata1: device not ready (errno=-16), forcing hardreset
[sda] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
end_request: I/O error, dev sdb, sector 0
ata1: SRST failed
ata1.00: exception Emask 0x0 SAct

Usually the first thing that came to my thought was “damn, the hard disk is toast” πŸ™‚

Turned out, in many cases, it’s NOT so. The hard disk is actually is still okay.
It’s just not set up right !

Thankfully, we can fix this very easily in Linux.
One / several of the following kernel parameters listed below may fix the problem we encountered above :

  1. libata.dma=0
  2. acpi=off
  3. noapic
  4. nolapic
  5. irqpoll
  6. pci=nomsi

If you don’t know which is the right one, it should be quite safe to try them one by one.

In my most recent case, point #1 solved the problem.
Turned out the motherboard (not the hard disk) is not very reliable, so we need to turn off DMA. Usually, this can be done via the BIOS. Imagine my surprise when I found that the BIOS is very, Very sparse ! It’s almost impossible to set anything.

Thanks to Linux, I was still able to disable DMA, via said kernel parameter instead (libata.dma=0)
The computer is now performing flawlessly. πŸ™‚

Waiiiiit a minute – how do I set the kernel parameter ??

Good question. Follow these steps if you’re using Ubuntu Linux :

  1. Open the Terminal (Application – Accessories – Terminal)
  2. type : sudo nano /etc/default/grub
  3. Look for the following line : GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
  4. Add the kernel parameter(s) that you may need. Example : GRUB_CMDLINE_LINUX_DEFAULT=”quiet libata.dma=0 splash”
  5. Press Ctrl – O to save the change, then press Ctrl – X to quit the nano editor.
  6. Now we need to update the boot manager. Type : sudo update-grub
  7. Done ! On the next restart, the kernel parameter will come into effect.

Still experiencing problems ?

Remember, the hard disk is just a component in the PC. Although the error messages came from the hard disk – the actual problem can reside elsewhere along the data pipeline.

For example, once I was troubleshooting an unreliable hard disk. Turned out the culprit was the IDE cable ! Once replaced, everything went alright.

So in case of hard disk related problems, here are some things that you can try first :

  1. Fasten the cables.
  2. Replace the cables.
  3. Try a different SATA / hard disk port on the motherboard.
  4. Make sure that the power supply actually provides enough power for all of the components in the PC.

Have tried all the above, but still experiencing problem with the hard disk ? Then you can be more certain that indeed now the culprit is the hard disk itself πŸ™‚ and not some other things instead.

Hope this post will have saved you a hard disk / SSD drive. Happy troubleshooting ! πŸ™‚

Cara Mudah Mengingat Password

Akhir-akhir ini makin marak kasus pembobolan account di Internet. Ada pejabat yang account Facebooknya dibobol. Ada artis yang account Yahoo nya jebol, dan kemudian dipakai untuk menipu orang lain.
Dan banyak lagi berbagai kasus lainnya.

Salah satu hal yang bisa membantu mengurangi resiko terjadinya insiden ini adalah password yang aman. “Aman” disini maksudnya adalah bahwa password tersebut sulit untuk ditebak. Contoh: pejabat yang kebobolan account Facebooknya itu passwordnya ternyata adalah tanggal lahirnya πŸ™‚

Sialnya, password yang aman itu cenderung susah diingat.
Contoh: j#as65mj – password ini bagus & aman. Tapi, siapa yang bisa mengingatnya ?

Dan, setiap account musti dilindungi oleh password yang berbeda. Jika tidak – maka ketika satu password tersebut ketahuan, tentu saja semua account kita di berbagai lokasi juga bisa dijebol.
Jadi, melindungi account-account kita dengan satu password, disebut juga “Master Key”, ternyata berbahaya ?

Jangan cemas. Sebenarnya, dengan sebuah trik sederhana, kita bisa membuat password-password yang aman, dan tetap mudah di ingat – dengan memanfaatkan sebuah software Open Source bernama sha1sum.

Caranya mudah sekali :

  1. Pilih sebuah Master Key. Contoh: guekeren2011 πŸ˜€ πŸ˜›
  2. Nah, kini tinggal tambahkan nama account ybs ke Master Key tsb. Contoh: guekeren2011:yahoo.com
  3. Encode kalimat diatas dengan sha1sum
  4. Hasilnya adalah karakter yang sangat acak.
  5. Ambil 8 karakter awalnya saja sebagai password untuk account tsb (dalam contoh ini: yahoo.com)
  6. Selesai !

Jadi, Anda cuma perlu mengingat 1 Master Key saja ! πŸ˜€

Tapi, cuma bicara saja mungkin masih belum jelas. Mari kita langsung lihat bagaimana sebetulnya ini bisa terjadi :

$ sha1sum
guekeren2011:yahoo.com
Ctrl-D Ctrl-D
dc3626448295e029232187c08296d4ffcc4c3308
$

Simpel ya ? Hanya dengan satu perintah sha1sum saja, kita dapatkan password yang bagus & aman untuk account kita di Yahoo.com – yaitu dc362644.

Mari kita coba lagi :

$ sha1sum
guekeren2011:gmail.com
Ctrl-D Ctrl-D
f0e0c52f36d90f29d2b3d22dacedc6b80a473ade
$

Nah, ternyata untuk gmail.com, sha1sum menghasilkan password f0e0c52f

Tentu saja, ini tidak terbatas hanya untuk website. Bisa juga misalnya untuk password brankas Anda πŸ™‚
Atau, PIN rekening / ATM Bank. Dst, dst.

Contoh :

$ sha1sum
guekeren2011:BCA
Ctrl-D Ctrl-D
e9bdce348d445ffd8c36b9d0268011d7a17cf2e0 –
$

Untuk ATM Bank, kita perlu 6 angka (tidak bisa huruf), jadi kita ambil 6 angka pertama – dalam contoh ini berarti adalah 934844 πŸ™‚

“Wow keren”, mungkin Anda akan bilang demikian. “Tapi ngomong2, program sha1sum ini bisa dapat dimana ya ??”

Pertanyaan yang bagus !

  1. Bagi pengguna Windows : sha1sum bisa didapatkan dari Website GNU Privacy Guard :http://tlk.lv/sha1sumForWindows
    ftp://ftp.gnupg.org/gcrypt/binary/sha1sum.exe
  2. Bagi pengguna Linux : sha1sum sudah ada built-in / disertakan πŸ™‚
  3. Bagi pengguna Mac OS X : sha1sum tidak disertakan, dan instalasinya cukup sulit. Solusinya, ganti saja sha1sum dengan openssl dgst -sha1 di Terminal
  4. Pengguna Handphone / Smartphone / Nintendo DS / Sony PSP / malas download sha1sum ? Silakan gunakan situs ini πŸ™‚

    http://tlk.lv/PasswordKeren
    http://www.ideaspace.net/misc/hash/

  5. (ketikkan <masterkey>:<account> di kolom dengan tulisan “Enter your email address here“, lalu klik tombol “SHA1”)
    (terimakasih Donny Kurnia, iang, dan Richard untuk infonya)

Jadi, mari kita mulai amankan password kita.
Pilih Master Key yang aman, mudah diingat – tapi, susah ditebak orang lain. Lalu selanjutnya biarkan sha1sum yang membantu Anda πŸ™‚

Semoga bermanfaat !

Uruguay Sukses Implementasi Program “One Laptop Per Child” (OLPC)

(posting ini adalah bagian dari tantangan #blog31hari)

Dari BBC :
http://news.bbc.co.uk/2/hi/technology/8309583.stm

Hebat ! Uruguay telah sukses mengimplementasi OLPC (One Laptop Per Child) programme. Laptopnya menggunakan Linux, tentu saja πŸ™‚

Dikutip :

“The Uruguay programme has cost the state $260 (Β£159) per child, including maintenance costs, equipment repairs, training for the teachers and internet connection.

The total figure represents less than 5% of the country’s education budget.

Around 70% of the XO model laptops handed out by the government were given to children who did not have computers at home.”This is not simply the handing out of laptops or an education programme. It is a programme which seeks to reduce the gap between the digital world and the world of knowledge,” explained Miguel Brechner, director of the Technological Laboratory of Uruguay and in charge of Plan Ceibal.”

“Its a culture shock scenario – many countries are simply too scared to put it into practice Miguell Brechner, head of Plan Ceibal”

“Now that all the schoolchildren have their computers, the authorities say that they will endeavour keep the schools connected, particularly those in rural areas, where many still do not have internet access.”

Mudah-mudahan bisa ditiru oleh Indonesia. Misalnya; dimulai dari program PROTON (Program Realisasi One Teacher One Netbook) dulu.
Lalu kemudian baru dilanjutkan dengan implementasi yang lebih luas lagi.

Semoga bisa menjadi kenyataan. Mari bersama-sama kita usahakan πŸ™‚

Membuat Ubuntu tampil seperti Windows

(posting ini adalah bagian dari tantangan #blog31hari)

Pertanyaan yang mungkin pertama kali muncul adalah : “Kenapa?”, atau “Buat apa?”

Jawabannya mudah: Untuk membantu pengguna Ubuntu yang baru pindah dari platform Windows πŸ™‚

Pertanyaan yang lebih spesifik mungkin adalah : “Kenapa sampeyan juga ingin desktop seperti Windows ?”

Laptop : Macbook
Operating System : Ubuntu 9.10
Desktop Theme : Windows XP

Sudah bingung ? πŸ™‚

Nah, yang ini jawabannya adalah :

(1) Karena saya bisa melakukannya : Ubuntu / Linux bisa dimodifikasi secara ekstrim oleh kita. Sangat fleksibel. Dan menurut saya, di platform Linux, maka tampilan seperti Windows adalah salah satu ekstrimitas yang paling ekstrim yang bisa kita temui πŸ˜€

(2) Ingin membuat bingung orang lain : saya menggunakan Laptop Macbook,
yang kemudian saya pasangi Ubuntu 9.10 (ya, Mac OS nya saya hapus dari laptop),
dan lalu saya pasangi theme Windows XP

Yang melihat laptop saya pasti kemudian bakalan pusing – Ini Windows XP ?? atau Mac OS X ???
Eh, ternyata Ubuntu / Linux tho ?? πŸ˜€

Ingin iseng seperti saya juga ? Caranya mudah sekali :

  1. Klik URL berikut ini : http://ubuntu.online02.com/node/14
  2. Download paket theme yang ada disitu : http://ubuntu.online02.com/files/XP_Gnome.tar.gz
  3. Extract, dan lalu jalankan script InstallXpGnome.sh

Selesai ! Gampang sekali ya ?

Nah kini Anda juga bisa membuat bingung orang lain seperti saya πŸ˜€

Undelete for Linux

(posting ini adalah bagian dari tantangan #blog31hari)

Semua orang pasti pernah mengalami ini – salah klik, dan lalu ternyata kita menghapus file yang kita butuhkan. Nah lho πŸ™‚

Di Windows ada beberapa tool untuk melakukan operasi undelete, membatalkan penghapusan tersebut. Tapi, bagaimana di Linux?

Ternyata juga bisa, dan caranya sangat mudah. Cukup gunakan tool Foremost !

Maka Anda akan bisa menyelamatkan kembali file yang tidak sengaja terhapus tersebut.

Selamat mencoba !

NB: coba tebak siapa yang membuat software Foremost ini ?
Ternyata United States Air Force Office of Special Investigation (USAFOoSI), he he. Cool ! πŸ™‚

Masa Depan Adalah Open Source

Linus Torvalds, bapak Linux, pernah meramal bahwa “The future is Open Source Everything”.

Ramalan ini, ternyata, sudah mulai menjadi kenyataan ! Semuanya terjadi secara alamiah, begitu saja.

Kini tidak hanya software komputer saja yang Open Source. Kini, bahkan perangkat keras pun sudah banyak yang Open – dibukakan detail teknis spesifikasinya, sehingga bisa dijiplak oleh siapa saja. Contohnya yang paling spektakuler mungkin adalah OScar – open source Car. Ya, sudah ada mobil yang detailnya dibukakan kepada publik, sehingga bisa ditiru / diperbagus oleh siapa saja.

Dan keterbukaan ini terus menyebar ke berbagai topik lainnya; industri makanan, jurnalisme, kesehatan, sains, – dan bahkan juga politik !
Siapa sangka πŸ˜€

Keterbukaan itu bagus karena jadi memungkinkan semua orang untuk turut berpartisipasi.
Yang belum mampu berkontribusi, tetap bisa menikmati. Yang lainnya jadi bisa menyumbangkan pemikirannya – dan memperbaiki yang sudah ada.
Ini semua pada akhirnya jadi mempercepat kemajuan peradaban secara signifikan. Dan, mendorong pemerataan kemakmuran untuk semua orang. Bukan hanya untuk segelintir kelompok elit saja.

The Future is Open πŸ˜€

Terlampir adalah poster yang memaparkan hal ini dengan lebih jelas lagi. Selamat menikmati !

Read the rest of this entry »

Indonesia diancam oleh IIPA, karena menggunakan Open Source

Mencengangkan. Betul-betul mencengangkan.
IIPA mengadu kepada pemerintah Amerika, bahwa Indonesia harus dihukum karena berusaha pindah ke software Open Source.

Detail selengkapnya [ bisa dibaca disini ]

Secara ringkas, IIPA, organisasi yang (mengaku) melindungi hak cipta, mengecam Surat Edaran MenPAN tgl 30 Maret 2009 karena menghimbau institusi pemerintah untuk menggunakan software Open Source.
Padahal – surat edaran tersebut justru bertujuan untuk melindungi hak cipta ! Dengan menggunakan software Open Source, maka institusi pemerintah jadi menggunakan software Legal.

Ya, software Open Source, seperti Firefox / Linux / OpenOffice / Chrome/dll, itu semuanya Legal & Halal.
Dengan menggunakan software F/OSS (Free / Open Source Software), maka berarti kita telah mendukung Hak Kekayaan Intelektual / HAKI.

Fitnah dari IIPA ini bisa disimpulkan dari kutipan berikut ini :

Government Procurement Preference Denies U.S. Software Companies a Level Playing Field

Padahal, sama sekali tidak demikian. SEMUA perusahaan software – baik dari Amerika maupun bukan, tetap BISA mensuplai software untuk pemerintah Indonesia. Yang penting, software tersebut berlisensi Open Source. Itu saja.

Tidak ada usaha untuk memblokir / merugikan perusahaan software dari Amerika !
(walaupun, kalaupun usaha tersebut ada, itupun adalah hak Pemerintah Indonesia sebagai Negara yang Merdeka & Berdaulat)

Siapa yang menyisipkan fitnah ini ke laporan IIPA tahun 2010 ini ?
Saya juga tidak tahu persisnya, namun beberapa kutipan terlampir mungkin bisa memberikan sedikit petunjuk :

Microsoft Memorandum of Understanding (MOU)

Dari situs IIPA

IIPA’s seven member associations are: … the Business Software Alliance (BSA),

Laporan IIPA tahun 2010 selengkapnya [ bisa dibaca disini ]
Disitu kita bisa lihat banyak lagi berbagai kekonyolan IIPA ini. Seperti saran & dukungan untuk razia Warnet di Malaysia, serangan kepada pemerintah Kanada – salah satu pendukung HAKI & sekutu Amerika dalam topik HAKI, dst. Padahal sudah banyak yang komplain karena metodologi yang digunakan serta kesimpulan/rekomendasinya aneh dan bisa sangat subjektif.

Sekali lagi, ini adalah serangan terhadap pemerintah Indonesia dari IIPA. Salah satu buktinya adalah karena IIPA tidak menyerang Inggris – yang juga [ mendukung penggunaan F/OSS ] di institusi pemerintahnya.

Mungkin Anda akan bertanya, mengapa laporan IIPA ini penting bagi Indonesia ?
Jawab: karena bisa berdampak langsung terhadap ekonomi Indonesia.

Salah satu contohnya dilampirkan di laporan tersebut – ada ancaman terselubung untuk mencabut skema subsidi bebas-pajak GSP; yang telah membantu memperlancar masuknya ekspor Indonesia bernilai trilyunan rupiah ke pasar Indonesia.

Juga, “countries on the list could be subject to penalties, trade barriers and embargoes”
(sumber: Bangkok Post.
Dan, “Special 301 status can have detrimental effects, as trading quotas could be slashed, or tariffs might be imposed on select items.”
(sumber: Mr Andres)

Jadi, ini bisa berdampak kepada seluruh rakyat Indonesia juga.
Dan karena itu, perlu menjadi perhatian kita serta ditindak lanjuti.

Beberapa hal yang bisa saya sarankan kepada Pemerintah Indonesia untuk mensikapi hal ini :

  • Survey : Berbagai pihak curiga bahwa metodologi yang digunakan oleh IIPA untuk mengukur tingkat pembajakan HAKI tidak bisa dipertanggungjawabkan. Untuk itu, baik sekali jika Pemerintah Indonesia bisa melakukan survey di bidang ini dengan metodologi yang jelas & ilmiah, sehingga bisa memberikan bukti pembanding. Sehingga IIPA tidak bisa bebas melenggang begitu saja dengan berbagai klaim & fitnahnya.
  • Klarifikasi kepada USTR : Laporan dari IIPA ini diserahkan kepada USTR, US Trade Representative. Nah, jangan sampai laporan ini diterima begitu saja tanpa ada klarifikasi sama sekali dari Pemerintah Indonesia.
    Klarifikasi ini bisa disampaikan kepada Ron Kirk, pejabat USTR saat ini.
  • Tanggung jawab : Telusuri siapa yang menyisipkan fitnah-fitnah di laporan IIPA tersebut, dan lalu panggil mereka untuk klarifikasi & pertanggung jawabannya.
    Saya tahu berbagai unsur pemerintah Indonesia telah berusaha sangat keras untuk menegakkan HAKI (salut untuk Anda semua) dan menghindari masuknya Indonesia di PWL (Priority Watch List) tersebut; dan fitnah di laporan IIPA tersebut adalah seperti pelecehan bagi semua kerja keras Anda.
  • Gunakan software Open Source di institusi Pemerintah : dengan demikian maka akan dapat semakin cepat untuk menghilangkan pembajakan software di Indonesia.

Akhir kata, terimakasih banyak saya ucapkan kepada Mr Bobbie Johnson dari koran The Guardian, Mr Andres, dan Mr Michael Geist yang telah menyampaikan informasi seputar hal ini.

Merdeka !

Talk @ WordcampID 2010 : High Performance WordPress : done quick, cheap, and easy

Untuk para pembaca setia dari Indonesia : Silahkan klik tombol Google Translate di atas artikel ini.
Terimakasih πŸ™‚

Last year I was contacted by Valent Mustamin, whom I started to be acquainted with by Twitter. He asked me if I’d be interested to speak in WordcampID 2010. My response was “HELL YES!” – well, ok, not exactly like that πŸ™‚ but, you get the idea.

Before we continue, I must say it was very nice of him to get in touch with me quite that far in advance. Usually, sometimes, I was called and asked, “hey, how about speaking in this seminar which, by the way, is gonna be held tomorrow?”. Ouch. Sometimes I have problems booking a date even for the next week.
With WordcampID 2010, I was able to prepare the material well, and also booked the date of the event (30 January 2010) before I got other appointments. Zero conflict. Peace on earth.

Back to the topic – I proposed to speak about “High Performance WordPress”, which, of course, discusses ways to speed up WordPress. My talk will adhere to 3 main criterias : easy, cheap, faster.
Easy : it’s easy to do, kinda drop-in solution which you can do in 15 minutes flat.
Cheap : it’s not gonna cost you the arm & the leg. Basically, a dedicated server (dual core, 2 GB RAM) will suffice. It’s not some kind of highly complex, multiple-servers setup.
Faster : it will speed up your WordPress installations by multiple times AND will increase its capacity as well – capability to serve multiple concurrent visitors at the same time.

This solution is aimed to the websites in “growing-pains” period : too big for shared webhosting, but still too small in revenue to afford multiple-servers infrastructure.
In my experience, these websites usually are ranked between 10000 to 100000 in Alexa.

With the solution presented, I hope to be able to help these websites to grow their traffic significantly, and finally move up to the elite leagues with no problem.

You may ask, why another discussion on this topic? Isn’t this already discussed in many blog postings everywhere?

Indeed, however, soon I spotted a problem. When I was helping my friend, Mr Romi, to speed up his WordPress-based website, the highly popular IlmuKomputer.com, I noticed that the tutorials on this topic are :

(1) Suggests the hardest way with the least gain – first, and/or
(2) Only works for lesser websites (eg: Alexa rank > 200.000), and/or
(3) Potentially will your website to become buggy / to lose data, and/or
(4) It may cost you your first unborn child, and your arm, and your legs, and/or
(5) Did I mention that the methods are sometimes pretty hard to do ?, and/or
(6) Oh, did I already mention that it sometimes only offer 25% performance gain ?

The method I discussed can give 100000% performance gain. With 15 minutes of work.
And with very minimal messing (only normal config changes) with current installation of Apache/PHP/MySQL.

In a server, I tested its LAMP (Linux – Apache – MySQL – PHP) stack performance, and I got 2 requests / second.
After I finished optimizing it, I got 2000 requests / second. No kidding.

I know that in the audience there are several people from webhosting companies, who can get financial gain from this. Not just poor webmasters having problems with their ever-popular websites. But I don’t care. I love to share knowledge, and I believe only good things will come out from sharing them.
So there πŸ˜€

Anyway, enough rambling – on to the goodies !

[ High Performance WordPress – OpenOffice format ]
[ High Performance WordPress – PDF format ]
[ High Performance WordPress – Flash format ]

Note: The slides here have been updated with the excellent suggestion from Simon Lim regarding DNS.

Also, at the moment I’m working on another solution which is as easy, but offers even MUCH faster performance gain. Stay tuned.
Enjoy ! πŸ™‚

Sistim SMS Pemilu Pilpres 2009 : 100% Powered by Open Source

Tim SERIS - SMS Election Result Information System

Alhamdulillah, tadi malam telah selesai satu pekerjaan besar, yaitu Sistim SMS Pemilu Pilpres 2009, yang diberi nama SERIS.
Sistim ini memungkinkan tabulasi Pemilu yang :

  1. Cepat : dalam waktu singkat, data dari puluhan ribu TPS sudah masuk. Kami sendiri cukup surprise πŸ™‚ memang dengan SMS pasti akan lebih cepat, namun performa sistem SERIS kemarin ini melebihi bahkan ekspektasi kami sendiri.
  2. Luas : kerjasama dengan Telkomsel memungkinkan SERIS untuk menjangkau 95% dari wilayah Indonesia. Salah satu sesi Technical Meeting
  3. Transparan : Alur proses di sistim SERIS adalah full 100% otomatis, end to end. Mulai dari pengiriman SMS, masuk ke jaringan provider (Telkomsel), proses di sistim SERIS, sampai penayangan tabulasi – sistim berjalan dengan lancar tanpa intervensi.
  4. Akurat : proses perhitungan otomatis di engine SERIS sangat akurat, karena proses parsing yang minim resiko kekeliruan deteksi; dan didukung oleh berbagai algoritma verifikasi & validasi internal.
  5. Secure : sistim SERIS di desain untuk semaksimal mungkin mendekati tingkat keamanan 100%. Infrastruktur SERIS terisolir dari Internet & jaringan publik, tayangan data di push dari jaringan internal secara rutin (sehingga jika di deface maka akan cepat kembali sebagaimana semula kembali), aliran SMS terisolir hanya pada jaringan internal provider (Telkomsel) & SERIS, dan berbagai metode keamanan lainnya. Mencapai tingkat keamanan 100% adalah hal yang mustahil, terutama dengan keterbatasan waktu pada proyek ini. Namun kami berusaha semaksimal kemampuan kami untuk mengusahakan pencapaian yang sedekat mungkin pada target tersebut. Mudah-mudahan kami telah berhasil melakukannya.
  6. Accountable : aliran data dicatat & direkam secara redundant di berbagai titik. Ditambah lagi dengan proses snapshot yang dijalankan setiap beberapa menit, yang memungkinkan kita untuk mengetahui gambaran situasi internal sistem pada suatu titik waktu & lokasi tertentu. Usaha untuk melakukan tampering pada berbagai titik pada sistem akan bisa diketahui dengan mudah misalnya dengan melakukan crosscheck pada berbagai audit logs tersebut. Diagram Sistem
  7. Murah : sistim ini, walaupun berskala nasional, namun total biayanya sangat murah. Penggunaan teknologi Open Source membantu pencapaian ini secara signifikan – engine Database SERIS misalnya; walaupun hanya menggunakan 1 buah server fisik, namun performanya sangat bagus (23.000 transaksi/detik) tidak kalah dengan rekannya di jaringan Telkomsel (18.000 transaksi/detik) yang terdiri dari beberapa server. Teknologi Open Source kini sudah sangat mature, dan memungkinkan kami untuk memanfaatkan potensi sistim secara amat maksimal. Total server yang digunakan di sistim ini hanya 7 buah, serta beberapa switch, hub, dan firewall.
  8. Easy to Use : Siapa sih yang tidak kenal dengan SMS ? πŸ™‚ Ini adalah salah satu alasan pemilihan teknologi ini – siapa saja bisa menggunakannya. SMS memang jelas kalah sexy jika dibandingkan dengan jargon-jargon seperti OMR, ERP, EAI, dst – tapi pada proyek dengan profil pengguna yang sedemikian ekstrim variasinya, maka sistim ini harus melakukan penekanan yang besar pada aspek kemudahan penggunaan.
  9. Easy to Deploy : Indonesia adalah negara kepulauan terbesar di dunia. Ini adalah fakta.
    Sebuah sistim yang akan digelar pada kondisi geografis seperti ini harus melakukan fokus kepada kemudahan deployment. Sistim SERIS di desain untuk bersifat centralized, sehingga beban pada sisi client menjadi amat sangat minim. Pada gilirannya ini memudahkan deployment, tanpa mengorbankan aspek-aspek lainnya.

  10. Powerful : walaupun hanya ada sedikit waktu untuk melakukan tuning, engine Database SERIS mampu menangani 23.000 transaksi per detik. Sedangkan frontend SERIS (tayangan tabulasinya) mampu melayani 15.000 request per detik.

Tim SERIS berfoto bersama di Ready Room

Tentu saja sistim ini masih belum sempurna. Development sistim berlangsung intens dalam waktu hanya 2 minggu. Secanggih apapun sumber daya yang ada, dengan time constraint seperti ini maka kita hanya bisa berusaha untuk mendekati kesempurnaan.

Beberapa pelajaran yang kami dapatkan & hal-hal yang masih bisa disempurnakan :

  1. Dokumentasi & Komunikasi : kesibukan dengan hal teknis membuat aspek ini agak terabaikan. Akibatnya, stakeholder sistim, KPU, seringkali tidak mendapat informasi yang memadai mengenai sistim SERIS dan perkembangannya. Ditambah lagi dengan gangguan dari berbagai pihak yang mungkin mempunyai kepentingan / conflict of interest, membuat proyek ini beberapa kali nyaris dibatalkan. Alhamdulillah, kami bersyukur bahwa stakeholder sistem ini memberikan dukungan yang sangat besar untuk proyek ini, sehingga berbagai masalah yang muncul seputar hal ini bisa diatasi bersama-sama.
  2. Performa : mungkin menurut Anda performa sistim SERIS ini sudah bagus, namun secara pribadi, kami masih belum puas πŸ™‚
    Diperkirakan bahwa, dengan ketersediaan waktu dan sumber daya, sistim ini masih bisa mencapai peningkatan performa sampai, minimal, 3x lipat.

Terkapar !

Pada saat ini para personil tim SERIS sedang terkapar di berbagai penjuru Jakarta & Bogor πŸ˜€ , setelah bekerja keras selama berhari-hari untuk membangun sistem ini. Mereka adalah (diurut berdasarkan alfabet):

  • Abdullah Andi Koro : network admin, veteran di komunitas Open Source dan Internet. Bantuannya sangat besar dalam menjamin bahwa berbagai jaringan yang ada (provider/Telkomsel, internal, internet) bisa berfungsi dengan baik, terkoneksi di titik-titik yang diperlukan, berjalan dengan lancar & optimal.
  • Digit Oktavianto : system administrator, kami kenal dari komunitas Open Source (Linux Aktivis, MySQL, Ubuntu, dst). Banyak membantu juga dengan berbagai hal seputar database. Kecepatan kerjanya amat banyak membantu menyelesaikan berbagai masalah pada saat yang kritis.
  • Harry Sufehmi : system architect, saya bertugas mendesain arsitektur sistem, dan mengawasi agar sistem bisa bekerja secara optimal. Saat ini juga mendapat amanah sebagai Wakil Ketua II AOSI (Asosiasi Open Source Indonesia), dan anggota beberapa komunitas (Blogger, Ubuntu, Linux Aktivis, dst)
  • Johan Rukmana : Flash developer, interface tabulasi pemilu hasil karyanya dipuji oleh KPU, dan pada saat ini sedang dalam proses transfer untuk dihosting di server KPU sendiri.
  • Riyogarta Pratikto : lead developer, penggagas awal dari sistim SERIS. Anggota komunitas developer (PHP), Open Source (Ubuntu Indonesia), dan blogger. Juga berfungsi rangkap sebagai interface kami ke IFES, Telkomsel, dan KPU πŸ™‚ Foto bersama Tukang Internet :)
  • Rizki : system administrator, anggota komunitas Open Source (MySQL, Linux). Nicknamenya di komunitas adalah crazynuxer. Kalau sedang terlihat lowong, biasanya langsung ditarik ke tempat saya, dan dipaksa untuk melakukan optimisasi performa sistem πŸ˜€
  • Wibisono Sastrodiwiryo : senior developer, dikenal dari komunitas Blogger dan Developer (PHP). Fungsinya amat vital dalam pembangunan sistim ini. Mampu bekerja dengan sangat cepat dan secara maraton ketika diperlukan pada waktu-waktu kritis di proyek ini. Juga banyak memberikan masukan & input yang berharga pada pengembangan sistem. Sekaligus merangkap Seksi Dokumentasi Proyek πŸ™‚ foto-foto yang Anda nikmati di artikel ini adalah hasil karya beliau.
  • Yanmarshus : QA (quality assurance), tugasnya mungkin adalah yang paling penting dalam tim ini. Advokat distro Slackware πŸ™‚ beliau bertugas menjamin bahwa sistim ini bisa memiliki kualitas tinggi, walaupun ada keterbatasan waktu & sumber daya yang signifikan.

Sebelum menutup mata (baca: terkapar di tempat tidur), saya ingin menghaturkan ucapan terimakasih kepada berbagai pihak yang telah memungkinkan berlangsungnya tugas ini dengan lancar :

Screenshot SERIS

  • IFES : LSM dari Amerika ini memberikan bantuan hibah dana, konsultasi, dan dukungan moril kepada tim SERIS. Selama berbulan-bulan saya berhubungan dengan mereka, tidak sekalipun ada usaha mereka untuk mengintervensi proyek ini. Mereka bahkan justru membantu kami mengatasi usaha intervensi dari pihak lainnya. Karena itu maka proyek SERIS ini bisa dijalankan oleh tim kami dengan independen. Secara ringkas, tanpa IFES, maka sistim SERIS ini tidak akan terwujud. Secara khusus terimakasih saya sampaikan kepada Adam, Pak Anhar, Mike, Hank, Mauri, dan rekan-rekan lainnya di IFES. Let it be known that your help is much appreciated. Thanks guys.
  • KPU : terimakasih dan penghargaan kami sampaikan kepada KPU, untuk kepercayaan yang telah diberikan mereka kepada kami, wakil dari berbagai komunitas, untuk membangun sistim Pemilu Nasional ini. Berkat kepercayaan ini maka kami, komunitas, jadi bisa membuktikan bahwa kami pun bisa berkarya dan berkontribusi untuk negara ini. Secara khusus terimakasih kami haturkan kepada Pak Aziz, untuk semua bantuan dan dukungannya kepada tim kami. Kemampuan diplomasi Anda adalah inspirasi & contoh yang sangat berharga bagi saya pribadi.
  • Telkomsel : What can I say – these are a bunch of spectacular guys. Terimakasih kepada Pak Sarwoto dan Pak Irfan, untuk dukungan bagi proyek ini dari sisi senior management. Dedikasi mereka terhadap kesuksesan proyek nasional ini adalah inspirasi bagi kita semua. Terimakasih kami haturkan pula kepada kawan-kawan, comrade, kami di tim Telkomsel — Tetra, Faisal, Nugroho, dan banyak lagi. Anda sekalian adalah kawan seperjuangan kami dalam tugas negara ini. Kami tidak mampu menyampaikan rasa terimakasih kami secara memadai untuk semua kerjasama dan bantuan yang telah Anda berikan. Our millions of thanks are yours.

Sebetulnya masih banyak lagi pihak yang membantu dan turut urun rembuk dalam pekerjaan ini. Beberapa kontribusi mereka bahkan jauh lebih signifikan daripada kontribusi saya pribadi.

Namun, mereka meminta, malah memaksa, saya untuk tidak memaparkankan nama-nama & kontribusi mereka. Mereka adalah pahlawan sejati pada tugas, dan amanah nasional ini. Saya amat bahagia mengenal mereka, dan salah satu kebanggaan terbesar saya adalah pengakuan mereka terhadap saya sebagai “kawan” mereka.
Thanks a zillion guys. You know who you are.

Demikian ringkasan catatan dari proyek SMS Pemilu Pilpres 2009 ini. Saya mohonkan maaf jika ada kekurangan atau kesalahan dalam penulisan artikel ini. Silakan sampaikan pesan Anda pada form komentar, maka saya akan koreksi secepatnya. Terimakasih.

Hidup Open Source Indonesia ! πŸ™‚
.
.
.

MySQL – Sharding

Beberapa hari yang lalu saya hadir di konferensi online yang diadakan oleh komunitas MySQL Indonesia. Praktis, karena online, jadi bisa dihadiri dari mana saja. Tapi sialnya, saya keliru waktu – saya kira dimulai pukul 22:00, ternyata sudah berjalan sejak pukul 20:00 πŸ™‚

Untunglah setiap konferensi dicatat, dan kemudian diposting di milis mysql-indonesia@googlegroups.com
Terlampir adalah catatan konferensi online pada tanggal 25 Juni 2009, dengan topik “Horizontal partitioning dengan menggunakan MySQL-Proxy dan Spock“, yang diadakan di channel #id-mysql di irc.freenode.net

Selamat menikmati.

<iis> ok..selamat malam teman-teman
<iis> malam ini confernce # 18
<iis> materinya tentang horizontal partitioning
<iis> yang akan ngizi crazynuxer
<iis> silahkan dimulai..
<crazynuxer> ok πŸ™‚
<crazynuxer> beberapa minggu lalu sudah dijelas kan oleh bro dendie
<crazynuxer> mengenai partition di mysql database
<crazynuxer> cuman itu disebut sebagai vertikal partitioning
<crazynuxer> jadi partition hanya di satu mesin
<crazynuxer> nah horizontal partition ini
<crazynuxer> adalah partition di beda mesin
<crazynuxer> atau istilah kerennya sharding
<iis> jadi istilah yang lebih dikenal sharding?
<crazynuxer> atau klo saya istilahkan lebih mudahnya itu
<crazynuxer> iya
<crazynuxer> intinya sih load balance database berdasarkan record
<crazynuxer> jadi misalnya kita ada 10 record
<crazynuxer> 5 record di server A dan 5 record lagi di server B
<crazynuxer> kira-kira sampai sejauh
<crazynuxer> bisa dibayangin ga
<crazynuxer> sharding itu gmn ?
<mediEvil44> bisa
<crazynuxer> klo dari wikipedia
<crazynuxer> Horizontal partitioning is a design principle whereby rows of a database table are held separately, rather than splitting by columns (as for normalization). Each partition forms part of a shard, which may in turn be located on a separate database server or physical location.
<crazynuxer> jadi kita melakukan scale out
<crazynuxer> untuk meningkatkan performance secara scale out karena dukungan scalabilitas
<iis> scale out itu apa ya? πŸ˜€
<crazynuxer> ada scale out dan scale in
<crazynuxer> gini
<crazynuxer> misalkan server kita udah bottleneck nih
<crazynuxer> dan bottleneck itu karena hardware resource yg ga mumpuni atau mencukupi lagi
<crazynuxer> ada 2 solusi untuk masalah ini
* d3ptzz (n=d3ptzz@125.163.244.26) has joined #mysql-id
<crazynuxer> yang pertama kita beli server baru lagi
<crazynuxer> dengan spesifikasi hardware yg lebih bagus dan lebih handal
<crazynuxer> kemudian kita pindah datanya
<crazynuxer> dan jalankan lagi servernya
<crazynuxer> solusi ini disebut scale in
<iis> trus?
<crazynuxer> kelemahannya kita harus mengeluarkan banyak waktu dan tenaga
<crazynuxer> selain itu kita juga harus rugi
<crazynuxer> karena ada downtime
<crazynuxer> lalu ada solusi lagi
<crazynuxer> selain itu
<crazynuxer> scale out istilahnya kerennya
<crazynuxer> jadi kita memakai semacam balancer
* d3ptzz (n=d3ptzz@125.163.244.26) Quit (Remote closed the connection )
<crazynuxer> dan dibelakang balancer itu ada beberapa server sebagai backend nya
<crazynuxer> jadi ketika server kita sudah overload kita tinggal nambah backend lagi dibelakangnya
<crazynuxer> jadi mempunyai skalabilitas yang bagus
<crazynuxer> kita bisa menambah tanpa downtime
<crazynuxer> dan mengurangi backend tanpa downtime
<crazynuxer> karena dari sisi user diakan akan mengakses ipnya balancer
<crazynuxer> lalu oleh balancer akan diberikan atau dibagi ke backend sesuai dengan algoritma
<crazynuxer> sejauh ini masih paham ?
<the_curious> algoritma nya?
<crazynuxer> algoritmanya macem2
<crazynuxer> tergantung jenisnya dan kebutuhannya
<crazynuxer> ada round-roubin, least-connection, weight least connection
<crazynuxer> dll
<crazynuxer> itu juga tergantung dari balancernya support apa ga
<crazynuxer> ada juga yg berdasarkan schema
<crazynuxer> misalnya spock proxy
<crazynuxer> atau mysql-proxy
<crazynuxer> yg berdasarkan algoritma didalam script lua nya
<crazynuxer> nanti yg akan kita bahas adalah mengenai spock proxy
<iis> “script lua nya”, mksdnya apa ya?
<crazynuxer> dan mysql-proxy sebagai software horizontal partition di mysql
<crazynuxer> lua itu jenis bahasa pemrograman
<crazynuxer> yg biasanya di buat untuk game πŸ˜€
<crazynuxer> sampai sejauh ini bagaimana ?
<the_curious> πŸ˜€
<the_curious> asiiikkk
<the_curious> πŸ˜€
<tundra1> lumayan
<crazynuxer> ok
<mediEvil44> keren
<crazynuxer> di mysql sendiri ada beberapa software yg digunakan untuk kebutuhan ini
<crazynuxer> bahkan sudah ada engine yg sudah diciptakan
<crazynuxer> ada mysql-proxy,spockproxy , sqlrelay dll
<crazynuxer> mysql-proxy+hscale
<crazynuxer> dan untuk engine sudah ada engine baru
<crazynuxer> namanya spider engine
<crazynuxer> cuman gue belum nyoba
<crazynuxer> yg udah gue coba mysql-proxy dan spock proxy
<crazynuxer> πŸ˜€
<iis> mysql-proxy dan spock proxy itu software ?
<crazynuxer> pertama kita mulai dengan mysql-proxy ya πŸ˜€
<crazynuxer> iya
<crazynuxer> mysql-proxy sekarang masih dalam tahap alpha
<crazynuxer> dan belum layak untuk production
<crazynuxer> hanya untuk main-main dan belajar saja
<crazynuxer> πŸ˜€
<crazynuxer> itu yang dijelaskan di manualnya mysql-proxy
<crazynuxer> untuk manualnya silahkan download di mysql.com
<crazynuxer> πŸ™‚
<crazynuxer> cuman sebenernya mysql-proxy ini sangat flexible karena mendukung scripting language
<crazynuxer> menggunakan lua
<the_curious> brarti belajar Lua juga dong
<the_curious> kekekekeke
<crazynuxer> oh ya untuk sedikit info saya menggunakan linux ketika melakukan ujicoba kedua software ini
<crazynuxer> hehehe
<crazynuxer> iya
<crazynuxer> tidak pun tidak2 apa
<crazynuxer> karena sudah banyak scritpt yg siap pakai
<crazynuxer> tapi…
<the_curious> Enakan bisa
<crazynuxer> keahlian untuk membaca script tetep harus dimiliki
<the_curious> buat kustomisasi
<the_curious> πŸ˜€
<crazynuxer> karena untuk proses troubleshoot πŸ™‚
<crazynuxer> klo bisa ya berarti lebih mantap πŸ˜€
<crazynuxer> ketika kita akan melakukan installasi mysql-proxy itu dari source
<crazynuxer> jadi harus compile πŸ™‚
<crazynuxer> dan disource nya itu ada banyak contoh script2 lua yg bisa di coba
<crazynuxer> πŸ™‚
<crazynuxer> mysql-proxy tidak hanya bisa melakukan load balance
<crazynuxer> tapi bisa memanipulasi query
<crazynuxer> πŸ™‚
<the_curious> mksdnya?
<crazynuxer> jadi juga bisa dipakai untuk menambah fitur keamanan
<the_curious> di manipulasi nya gimana nih
<crazynuxer> karena dia bisa membaca dan menganalisa query
<crazynuxer> yg bisa dilakukan oleh mysql-proxy
<crazynuxer> create new commands
<crazynuxer>  filter queries (deny specific queries)
<crazynuxer>  collect statistics on usage
<crazynuxer>  implement usage quotas
<crazynuxer>  execute shell commands
<crazynuxer> load balancing servers
<crazynuxer> jadi beberapa hal diatas bisa dijalankan oleh mysql-proxy
<crazynuxer> cuman satu kelemahan mysql-proxy
<crazynuxer> πŸ˜€
<crazynuxer> belum stable πŸ™‚
<crazynuxer> untuk install tinggal download
<crazynuxer> lalu ekstrak menggunakan perintah tar
<crazynuxer> tar zxvf mysql-proxy.tar.gz -C /usr/local/src/
<crazynuxer> cd /usr/local/src/mysql-proxy/
<crazynuxer> ./configure –prefix=/opt/mysql-proxy
<crazynuxer> make -j4 && make install
<crazynuxer> finish
<tundra1> sama di semua linux mas
<crazynuxer> yups πŸ™‚
<crazynuxer> harusnya sama semua
<crazynuxer> yang make -j4 itu bisa diganti make saja
<crazynuxer> πŸ™‚
<crazynuxer> -j4 itu jika kita menggunakan prosesor yg quad core
<crazynuxer> klo cuman single core ya make saja
<crazynuxer> πŸ™‚
<crazynuxer> biar lebih cepet compile nya
<crazynuxer> ada pertanyaan ?
<crazynuxer> sejauh ini masih paham ?
<the_curious> yang lain
<the_curious> πŸ˜€
<the_curious> Bobo yah
<the_curious> Ahahaha
<mediEvil44> lumayan
<iis> lagi liatin scriptnya πŸ˜€
<crazynuxer> ada cara yg lebih mudah jika pake ubuntu πŸ˜€
<crazynuxer> tinggal apt-get install mysql-proxy
<mediEvil44> ada di repo
<tundra1> wuih enak ya pake ubuntu..
<the_curious> πŸ˜€
<the_curious> slacker yah mas tundra
<the_curious> kekekekeke
<the_curious> source aja ams
<the_curious> πŸ˜€
<the_curious> Mas
<crazynuxer> —
<crazynuxer> — read_query() gets the client query before it reaches the server
<crazynuxer> —
<crazynuxer> — @param packet the mysql-packet sent by client
<crazynuxer> —
<crazynuxer> — the packet contains a command-packet:
<crazynuxer> — * the first byte the type (e.g. proxy.COM_QUERY)
<crazynuxer> — * the argument of the command
<crazynuxer> —
<crazynuxer> — http://forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol#Command_Packet
<crazynuxer> —
<crazynuxer> — for a COM_QUERY it is the query itself in plain-text
<crazynuxer> —
<crazynuxer> function read_query( packet )
<crazynuxer> if string.byte(packet) == proxy.COM_QUERY then
<crazynuxer> print(“we got a normal query: ” .. string.sub(packet, 2))
<crazynuxer> end
<crazynuxer> end
<crazynuxer> itu contoh script yg simple nya
<crazynuxer> jadi nanti ketika anda menjalakan mysql proxy dan melakukan query
<crazynuxer> akan tampil we got a normal query: “query_anda”
<crazynuxer> di console πŸ™‚
<crazynuxer> di mysql-proxy ini
<crazynuxer> ketika kita menjalankan
<crazynuxer> akan ada 2 port yg dilisten
<crazynuxer> yg pertama untuk admin port
<crazynuxer> yg kedua itu port untuk balancer yg akan diakses user atau aplikasi
<crazynuxer> saya menggunakan port 4041 untuk admin nya
<crazynuxer> 4040 untuk diakses user atau aplikasi
<crazynuxer> berikut saya kasih contohnya
<crazynuxer> bentar ssh dulu ke mesinnya
<crazynuxer> :LD
<crazynuxer> πŸ˜€
<crazynuxer> untuk menjalankannya
<crazynuxer> /usr/sbin/mysql-proxy –proxy-lua-script=/opt/proxy/lib/mysql-proxy/example.lua –proxy-address=xxx.xxx.xxx.xxx:4040 –proxy-backend-addresses=xxx.xxx.xxx.xxx:3306 –proxy-backend-addresses=xxx.xxx.xxx.xxx:3306
<crazynuxer> mysql-proxy –> itu binary nya
<crazynuxer> –proxy-lua-script itu agar mysql-proxy menggunakan script example.lua
<crazynuxer> –proxy-address=xxx.xxx.xxx.xxx:4040 ini adalah sebagai ip dan port yg akan diakses oleh client atau aplikasi
<crazynuxer> atau ip balancer nya
<crazynuxer> sedangkan backend address nya itu adalah server2 database yg dibelakang balancer
<crazynuxer> setelah menjalankan perintah diatas kita bisa ngecheck apakah port 4040 dan 4041
<crazynuxer> sudah listen
<crazynuxer> root@crazynuxer:~# netstat -nltp
<crazynuxer> Active Internet connections (only servers)
<crazynuxer> Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
<crazynuxer> tcp 0 0 xxx.xxx.xxx.10:4040 0.0.0.0:* LISTEN 29432/mysql-proxy
<crazynuxer> tcp 0 0 0.0.0.0:4041 0.0.0.0:* LISTEN 29432/mysql-proxy
<crazynuxer> tcp 0 0 xxx.xxx.xxx.9:3306 0.0.0.0:* LISTEN 25706/mysqld
<crazynuxer> tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 19049/sshd
<crazynuxer> tcp6 0 0 :::22 :::* LISTEN 19049/sshd
<crazynuxer> kita lihat sudah listen
<crazynuxer> klo gitu kita akan coba melakukan query ya
<crazynuxer> mysql -uroot -h xxx.xxx.xxx.10 -P 4040 -e ‘select * from mysql.user’ -p
<crazynuxer> dan masukkin passwordnya
<crazynuxer> maka diconsole akan tampil
<crazynuxer> Hello world! Seen the query: select @@version_comment limit 1
<crazynuxer> Hello world! Seen the query: select * from mysql.user
<crazynuxer> sesuai dengan isi script yg ada diexample.lua
<crazynuxer> berikut isi example.lua
<crazynuxer> function read_query(packet)
<crazynuxer> if string.byte(packet) == proxy.COM_QUERY then
<crazynuxer> print(“Hello world! Seen the query: ” .. string.sub(packet, 2))
<crazynuxer> end
<crazynuxer> end
<crazynuxer> print(“test”
<crazynuxer> )
<crazynuxer> jadi di mysql-proxy ini bisa memanipulasi query dan me load balance
<crazynuxer> sesuai dengan isi script lua nya
<crazynuxer> jadi sangat2 flexible
<crazynuxer> dan untuk load balance ini di mysql-proxy sudah ada plugin
<crazynuxer> namanya hscale
<crazynuxer> bisa coba akses situsnya
<crazynuxer> hscale.org klo ga salah πŸ™‚
<crazynuxer> itu juga dalemnya lua
<crazynuxer> jadi nantinya proses load balance nya akan dihandle oleh hscale
<crazynuxer> dengan script lua didalamnya
<crazynuxer> untuk menjalankannya silahkan download di hscale.org
<crazynuxer> dan untuk installation tinggal download dan ekstrak kemudian set env variable dan local variable nya
<crazynuxer> sesuai dengan petunjuk dari situs hscale.org
<crazynuxer> itu sedikit info mengenai mysql-proxy πŸ™‚
<crazynuxer> untuk ubuntu konfigurasinya ada di /etc/default/mysql-proxy dan /etc/init.d/mysql-proxy
<crazynuxer> πŸ™‚
<crazynuxer> ok sekarang kita akan bahas spock proxy
<crazynuxer> spockproxy ini sudah bisa digunakan di production
<crazynuxer> ini dikeluarkan oleh spock.com
<crazynuxer> salah satu search engine πŸ™‚
<crazynuxer> coba deh liat www.spock.com
<crazynuxer> dan ini merupakan forking dari mysql-proxy
<crazynuxer> untuk situs resminya
<crazynuxer> spockproxy
<crazynuxer> http://spockproxy.sourceforge.net/
<crazynuxer> spockproxy yg terbaru baru versi 0.8.7
<crazynuxer> spockproxy ini hampir sama dengan mysql-proxy
<crazynuxer> cuman spockproxy tidak pake lua
<crazynuxer> dan horizontal partition menggunakan system range base
<crazynuxer> jadi misalnya ada 10 query
<crazynuxer> nanti dia akan bagi berdasarkan range yg sudah disetting
<crazynuxer> didalam database schema
<crazynuxer> jadi spock ini dalam pengaturannya menggunakan database schema
<crazynuxer> didalam database schema itu terdapat 3 buah table
<crazynuxer> shard_database_directory
<crazynuxer> shard_table_directory
<crazynuxer> shard_range_directory
<crazynuxer> table database directory itu untuk mengatur koneksi
<crazynuxer> jadi pendefinisian backend beserta database yg mau disharding
<crazynuxer> klo table shard_table_directory itu berdasarkan table yg mau disharding
<crazynuxer> kita mendefinisikan column
<crazynuxer> sedangkan range yg range yg akan kita atur nanti
<crazynuxer> jadi misalnya kita ada 10 query
<crazynuxer> range query 0-5 di lemparkan kemesin backend database A
<crazynuxer> 6-10 itu dilempar ke mesin database B
<crazynuxer> dan seterusnya
<crazynuxer> sampai sejauh ini bagaimana ?
<the_curious> masalahnya
<the_curious> πŸ˜€
<the_curious> kalo ga tau wuery nya berapa banyak
<the_curious> gimana?
<the_curious> iya kan?
<the_curious> πŸ˜€
<the_curious> *query
<crazynuxer> hehehe
<crazynuxer> yups betul banget saudara digit πŸ˜›
<crazynuxer> bagaimana dengan yg lain ?
<crazynuxer> untuk sejauh ini ?
<sufehmi> halo, saya agak sedikit rancu soal range query
<the_curious> iya pak
<sufehmi> jadi itu benar2 berdasarkan urutan query yang datang ya?
<sufehmi> bukan bagaimana isi querynya?
<sufehmi> oooo ok
<sufehmi> eh sori kirain mengkonfirmasi, layar saya terlalu terang
<sufehmi> bentar…. ***atur brightness layar**
<crazynuxer> berdasarkan isi nya
<crazynuxer> jadi misalnya kita setting id sebagai column yg ingin disharding
<crazynuxer> maka spock ini akan melihat idnya
<crazynuxer> lalu berdasarkan range nya
<crazynuxer> dia akan lempar ke backend
<crazynuxer> jika didalam range tidak ada
<crazynuxer> maka akan ditolah
<crazynuxer> ditolak
<crazynuxer> itu yang saya alami kemarin πŸ™‚
<sufehmi> oke, menarik… jadi kita bisa setup semacam rule ya
<sufehmi> untuk menentukan query yang mana untuk ke backend yang mana
<crazynuxer> iya
<sufehmi> kalau berdasarkan urutan datangnya query saja, gimana?
<sufehmi> bisa atau tidak ya?
<sufehmi> memang terlalu simple sih, tapi kadang ada kasus yang sudah cukup dengan seperti ini
<sufehmi> jadi misalnya; query yang pertama datang akan di opern ke backend1
<sufehmi> opern=oper
<sufehmi> query kedua dioper ke backend2
<sufehmi> query ketiga kembali ke backend1
<sufehmi> query keempat ke backend2
<sufehmi> dst
<crazynuxer> iya
<sufehmi> jadi cuma sekedar load balancer sederhana
<crazynuxer> kelemahan kita harus set itu semua πŸ™‚
<sufehmi> hehehe
<crazynuxer> iya sederhana sekali cara kerjanya
<crazynuxer> waktu kita select pun
<crazynuxer> sebenernya si spock ini melakukan query select di semua backend
<sufehmi> ooo
<sufehmi> ini topik yg sangat menarik, karena ada bbrp customer saya yang sudah perlu pakai multiple backend
<sufehmi> pada saat ini, ada bbrp customer saya yang traffiknya setara dengan republika.co.id
<sufehmi> jawapos.co
<sufehmi> padahal servernya cuma dual-core, 2 GB RAM πŸ™‚
<sufehmi> tertolongnya karena saya pakai squid, sehingga mayoritas hits mengenai squid. Bukan ke Apache/PHP
<sufehmi> tapi, traffic nya bertambah terus
<sufehmi> jadi musti siap2 utk multiple backend juga
<crazynuxer> iya πŸ™‚
<crazynuxer> sebaiknya mulai membuat solusi scale out πŸ™‚
<sufehmi> nah, sharding selama ini memerluka coding ulang dari web-apps ybs
<sufehmi> dengan spock, jadi ada harapan bahwa ini tidak perlu
<crazynuxer> iya πŸ™‚
<sufehmi> jadi shardingnya di handle di level “middleware” / spock
<sufehmi> bukan di aplikasi
<sufehmi> wah, sedap betul ini πŸ™‚
* hilman (n=adit@125.161.205.58) has joined #mysql-id
* hilman is now known as adit
<adit> ya telat ya
<crazynuxer> sepertinya begitu dit πŸ™‚
<adit> πŸ™
* sufehmi sambil testing game StarTrek Voyager : Elite Force di Ubuntu 9.04 πŸ™‚
<crazynuxer> hahaha
<the_curious> donlot dimana
<the_curious> di share dunk
<the_curious> Hahahaha
<adit> tadi keasyikan nonton opera van java
* the_curious mupeng
<adit> πŸ˜€
<crazynuxer> bagaimana sejauh ini yg masih belum jelas ?
<adit> tadi ngebahas apa ki?
<adit> tumben banget info nya telat di milis
<adit> lagi pada sibuk ya? ;))
<crazynuxer> hehehe
<crazynuxer> yups
<crazynuxer> jadi konsepnya sperti itu untuk spockproxy
<crazynuxer> untuk install nya silahkan download
<crazynuxer> lalu ekstrak,
<crazynuxer> install dengan perintah
<crazynuxer> ./autogen.sh
<crazynuxer> ./configure
<crazynuxer> make
<crazynuxer> dan make install
<crazynuxer> untuk ubuntu jaunty
<crazynuxer> harus sedikit menyesuaikan gcc nya πŸ˜€
<crazynuxer> untuk yg pake centos tidak perlu
<crazynuxer> untuk lebih detailnya nanti akan saya demokan di mysql monthly meeting
<crazynuxer> πŸ™‚
<crazynuxer> demikian dari saya
<crazynuxer> jika ada yg mau ditanyakan , silahkan
<adit> membahas apa toh ? πŸ˜€
<adit> sangat2 ketinggalan neh
<crazynuxer> adit: loe lihat log nya aja πŸ˜›
<adit> ok2 :p
<iis> jadi gmn teman-teman?
<iis> ada yang mau tanya ke nuxer?
<crazynuxer> bagaimana ?
<iis> sepertinya tidak ada yang bertanya nih..?
<iis> kalo gak ada mau ditutup nih confernce nya..
<crazynuxer> ok πŸ™‚
<mediEvil44> ok
<iis> baiklah…
<iis> conference mysql indonesia ke 18 berakhir disini
* udie_mysql (n=chatzill@114.123.173.175) Quit (“ChatZilla 0.9.85 [Firefox 3.0/2008052906]” )
<iis> kalo nanti tiba2 teringat ada yang mau ditanyain ttg materi ini, pm aja ke nuxer
<iis> atau kirim ke milis juga gpp..
<iis> lognya akan segera dikirim ke milis
<mediEvil44> sip
<crazynuxer> bener
<iis> terima kasih atas kesediaan temen2 ikut confernce malam ini
<iis> assalamu’alaikum semuanya..
<crazynuxer> waalaikumsalam
<iis> sampai jumpa di confernce berikutnya
* adit (n=adit@125.161.205.58) has left #mysql-id
<iis> jangan lupa mysql meeting 2009.06 tanggal 4 juli di kantor SUN di Jl. Sudirman

Materi Workshop @ Timor Leste – gratis + copyleft

Beberapa hari yang lalu saya diundang oleh Ristek untuk berkunjung ke Timor Leste selama 5 hari. Disana saya bersama Pak Onno Purbo memberikan workshop / seminar selama 3 hari. Untuk acara tersebut, saya membuat 4 buah dokumen training / tutorial.

Semua dokumen tersebut saya buat dengan lisensi GPL v2. Artinya, Anda bebas menggunakannya untuk kebutuhan Anda sendiri. Termasuk memodifikasinya untuk keperluan Anda.

Terlampir adalah dokumen-dokumen ybs :

[1] Cara Cepat Pemrograman Web – bagian 1 : berbasis Open Source (1,2 MB)
[ format PDF (280 KB)]
[2] Cara Cepat Pemrograman Web – bagian 2 : berbasis Open Source (1,2 MB)>
[ format PDF (282 KB)]
[3] Pengenalan Virtualisasi (1,6 MB) [ format PDF (888 KB)]
[4] Tutorial Open Office (4,5 MB) [ format PDF (2,9 MB)]

Dokumen ke 4 dibuat oleh Hasan (Ardelindo.com) dengan lisensi GPL. Sebetulnya dokumen tersebut membahas Open Office v2. Karena lisensinya bebas, maka saya jadi bisa meng update dokumen tersebut untuk versi 3, melakukan beberapa editing, beberapa revisi – dan lalu menyediakannya kembali untuk Anda sekalian.

Dengan membebaskan dokumen / artikel, yaitu melisensikannya secara bebas (GPL atau setara), maka dokumen tersebut seakan-akan menjadi hidup. Dia jadi bisa diakses oleh siapa saja, bermanfaat oleh siapa saja, dan bahkan jadi bisa terus relevan sesuai dengan perkembangan zaman.
Terimakasih kepada Hasan yang sudah menginspirasi saya untuk membebaskan dokumen-dokumen saya sendiri juga.

Kembali ke acaranya; mengenang kunjungan tersebut, terlampir adalah lagu “Juni di kota Dili” oleh Rita Effendi. Selamat menikmati πŸ™‚

            








SEObox: Web Hosting Murah Unlimited Komik Indonesia Homeschooling Indonesia