Optimisasi Database MySQL Linux MariaDB

Pada artikel saya sebelumnya, banyak sekali tulisan tentang database, khususnya MySQL. Bahkan di internet tersebar secara acak bagaimana cara optimisasi database MySQL di server kita. Namun sayang, sangat jarang artikel yang memberitahu secara gamblang seharusnya actionnya harus bagaimana. Berikut detailnya saya tambahkan di blog ini.

Pertama, kita akan membahas MySQL database MariaDB ya. Namun versi MySQL Community juga kompatible. Namun untuk penggunaan database saya lebih menyarankan MariaDB, karena developmentnya sangat transaparan dan progressnya sangat cepat sekali. Bugs juga sering di fix pada versi MariaDB, so lebih cenderung aman.

Path

Perlu diketahui, path default untuk MySQL config di linux berada di /etc/my.cnf Pada beberapa skenario khusus, mungkin saja path foldernya bisa berubah. Misal, bawaan dari aplikasi x atau aplikasi y.

Backup Original File

Untuk melakukan optimisasi, ada beberapa syntax yang harus kita ubah terlebih dahulu. Oleh karena itu, pastikan kita backup original file config terlebih dahulu. Pastikan untuk membiasakan menggunakan cara backup original file. Seandainya sesuatu terjadi, kita tinggal rename kembali file aslinya.

cp -p /etc/my.cnf /etc/my.cnf-original

Set Syntax

Pada baris ini, ada beberapa syntax yang harus di tambahkan. Karena jika kita running MySQL by default, dalam skala banyak mungkin bakal menghabiskan resource server juga.

[mysqld]
performance-schema=0
join_buffer_size=300K
table_open_cache=2100
max_allowed_packet=256M
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 32M
query_cache_size=50M
tmp_table_size=100M

max_connections=500
max_user_connections=45

wait_timeout=20
interactive_timeout=20

log-error=/var/lib/mysql/rambutan.idcloudhosting.com.err
innodb_file_per_table=1
default-storage-engine=MyISAM
open_files_limit=52000
  • max_allowed_packet : max packet mysql yg di bolehkan, umumya 256M atau 256 MB
  • innodb_buffer_pool_size : max buffer size untuk tipe innodb, idealnya 1GB atau 2GB, lebih dari itu makan resource besar
  • innodb_log_file_size : max log file size, rekomendasi size kecil
  • query_cache_size : rekomendasi tidak lebih dari 50M, karena makin besar resourcenya bisa besar juga
  • tmp_table_size : temporary table size yang dibolehkan, biasanya antara 100M – 300M
  • max_connections : maksimum koneksi yang boleh tersambung ke server MySQL
  • max_user_connections : maksimum koneksi yang dibolehkan per user db
  • wait_timeout : kill session jika sudah xx detik timeout
  • interactive_timeout : kill session jika sudah xx detik saat interaktif db berlangsung
  • log-error : path file dimana error log db disimpan
  • innodb_file_per_table : db tipe innodb yang dibolehkan per table adalah xx
  • default-storage-engine : default storage engine yg dibentuk saat db dibuat
  • open_files_limit : maksimum open file per db server

Kesimpulan

Pada dasarnya adalah ada beberapa syntax yang memang harus di set secara manual pada file /etc/my.cnf dan disesuaikan dengan kebutuhan dan resource server yang kita punya. Jadi sekali lagi, settingan default itu belum tentu pas dengan kebutuhan kita atau resource yang kita punya.

Semoga membantu.

Leave a Reply

Your email address will not be published. Required fields are marked *