Advertisement

SharingMatrix.com - Free, simple and fast file hosting!

Senin, 14 Juni 2010

Mengerti tuning MySQL dalam 3 menit

Saat ini banyak sekali CMS atau content management yang memakai data base MySQL, http://www.mysql.com/. Data base Mysql adalah salah satu database yang paling banyak pemakainya. Didahului oleh opensource murni, yang kemudian setelah dibeli oleh SUN meluncurkan versi Enterpise yang tidak 100% lagi merupakan software opensource.

Dalam kesempatan ini, akan kami tayangkan bagaimana memaksimalkan(tuningisasi) MySQL yang berhubungan dengan memory, logging, recovering, database maintenance, dll sehingga MySQL akan berjalan dengan maksimal dan baik di server kita.

Dan akan kami perkenalkan juga script kecil untuk melakukan check terhadap setting yang berhubungan dengan memory yang kita set di MySQL kita.

Logging dan mengetahui kondisi setting MySQL
Hal yang paling penting dalam kita melakukan tuning adalah pertama, mencatat semua query yang berjalan dalam suatu log. Hal ini penting untuk mengetahui seperti apa proses query yang sedang berjalan di MySQL. Apakah benar, MySQL kita memerlukan tuning yang khusus sehingga kondisi atau setting yang sekarang perlu lagi dioptimalkan. Dari pencatatan log ini, kita dapat juga mengetahui query seperti apakah yang sering dilakukan, sehingga ketika kita mengatur setting yang berkenaan dengan memory pun kita akan lebih tepat melakukannya.

Dalam query MySQL ada sorting, select, insert, update table dsb. Masing-masing query ini dapat kita atur berapa besar memory yang diperlukan, sehingga prioritas pemberian memory pun dapat kita lakukan.

Secara teknis untuk melakukan pencatatan log di MySQL sangatlah mudah. Tambahkan option --log ketika anda menjalankan MySQL di server anda. Misalnya adalah perintah seperti ini:
# safe_mysqld --log=$logfile

Kalau anda memakai Fedora atau Redhat atau turunannya, cari file script untuk menjalankan MySQL di /etc/rc.d/init.d/mysqld.

Temukan di situ baris yang menampilkan option untuk menjalankan MySQL.
Nilai $logfile ini adalah nama log dan tempat yang anda kehendaki. Misalnya adalah --log=/var/log/mysql.log.

Atau kalau anda hanya ingin menjalankan dengan perintah yang lebih simpel, maka dapat anda lakukan seperti berikut.
# safe_mysqld --log

Dengan option ini query log akan disimpan di direktori /var/lib/mysql.

Memeriksa query MySQL
Sekarang coba kita jalankan perintah berikut ini:
# mysqlshow

Maka akan tercatat di log yang telah kita tentukan tadi seperti berikut ini,
020819 8:32:49 15 Connect root@localhost on
15 Query show databases
15 Quit


Sekarang terlihat siapa yang sambung ke MySQL kita, dan query apa yang user lakukan. Dari log ini, tentunya kita dapat mengetahui kalau seandainya ada serangan atau intruder yang masuk sedini mungkin.

Karena itu log MySQL pun bisa kita monitor dengan script tertentu apabila ada query yang masuk yang tidak pernah kita lakukan.

Memeriksa proses MySQL yang berjalan
Setelah Log sudah tercatat dengan baik, belumlah cukup untuk mengetahui secara 100% bagaimana jalannya MySQL di server kita. Karena itu ada hal yang harus kita lakukan untuk mengetahui bahwa MySQL berjalan dengan baik.

Pertama yang harus kita lakukan adalah memeriksa apakah proses MySQL berjalan dengan wajar. Lakukan perintah berikut ini.
# ps -auxxw | grep mysql

Dari perintah di atas, akan tampak proses yang sedang berjalan. MySQL pun menyediakan perintah untuk memeriksa apakah MySQL sedang berjalan atau tidak. Lakukan perintah seperti berikut ini,
# mysqladmin ping
mysqld is alive

Nah dari sini, kita dapat memonitor MySQL kita, apakah down atau up bukan ? Kalau anda menguasai script seperti perl atau shell atau php tentunya hanya dengan 10 baris anda sudah dapat melakukan monitoring MySQL dengan mudah. Dengan script itu ada dapat kirimkan kondisi MySQL apabila terjadi masalah ke email anda.

Apakah perlu diberikan contoh script nya ?

Ada perintah lain yang dapat anda lakukan, apabila anda ingin mengetahui kondisi MySQL lebih detail.

Yaitu dengan perintah sebagai berikut.
# mysqladmin status

Hasilnya adalah seperti berikut,
[root@ns3 mye]# mysqladmin status
Uptime: 4034920 Threads: 1 Questions: 15649633 Slow queries: 38 Opens: 227439 Flush tables: 1 Open tables: 64 Queries per second avg: 3.879

Secara simpel akan kami jelaskan arti dari masing-masing kata di atas,
Uptime : panjang detik setelah MySQL dijalankan.
Threads : jumlah Thread yang dipakai
Questions : jumlah query yang dilakukan dari sejak MySQL dijalankan
Slow queries : jumlah query dalam suatu panjang waktu
Opens : jumlah table yang dibuka sejak MySQL dijalankan
Flush tables : jumlah flush、refresh、reload yang dijalankan
Open tables : jumlah table yang dibuka
Queries per second avg: rata-rata respon query per detik

Kalau anda menginginkan kondisi yang lebih lengkap berkenaan dengan MySQL anda, jalankan perintah berikut ini,
# mysqladmin extended-status

Karena perintah di atas kalau dijalankan, hasilnya sangat panjang sekali, maka tidak dimunculkan di tulisan ini.

Apakah ada hal yang belum dimengerti ?


Tidak ada komentar:

Posting Komentar