September 18, 2015 thumb Mengatasi Pembengkakan data Innodb pada MySQL

pernah dengan MySQL, pasti untuk para blogger dan pengguna wordpress atau web programmer pernah dengar yang namanya innodb. pernah dengar yang namanya innodb dan myIsam ? pengguna database MySQL pasti juga pernah dengar. nah kali ini saya ingin sedikit membahas tentang Innodb.

Innodb adalah sebuah storage Engine yang ada dalam MySQL, saya pernah baca sekali sebuah artikel kalau storage engine ini dibuat oleh para pengembang Oracle, dimana dengan storage engine ini kita dapat melakukan transaction, rollback, dan commit yang tidak dimiliki oleh MyIsam.

nah para pengguna Innodb pasti sudah tahu kalau salah satu default innodb yang cukup menyebalkan adalah penggunaan 1 file untuk keseluruhan database (coba buka di /var/lib/mysql/), tentu hal ini sangat menjengkelkan mengingat pengembangan data semakin besar. pengalaman saya, 1 file ibdata milik innodb membengkak sampai 22 GB. bayangkan jika file ini rusak, artinya semua database yang ada dalam innodb menjadi rusak, nangis kali bukan.  tetapi sebenarnya itu cuma setting default innodb, terdapat sebuah settingan lain yang memang diperuntukan supaya membuat innodb membuat 1 file untuk tiap table. sayangnya cara ini harus dilakukan di awal pembuatan system, jadi kalau sudah terlanjur jadi 1 file, mau tidak mau harus membackup dahulu semua database. berikut ini langkah sederhananya.

  • Backup semua database kecuali 3 table, information_schema, performance_schema, dan mysql.
  • saya sarankan membackup menggunakan MySQL DumpNavicat atau MySQL WorkBench.
  • matikan service mysql, dengan mengetikan
    • # service mysql stop

  • kemudian hapus semua file yang bernama ibdata1, ib_logfile0 dan  ib_logfile1. saran saya mungkin jangan dihapus dulu, pindahkan dulu ke tempat lain.
  • kemudian edit file /etc/mysql/my.cnf, tepat dibawah section [mysqld] tambahkan hal berikut.
    • [mysql]
      innodb_file_per_table
      innodb_flush_method=O_DIRECT
      innodb_log_file_size=1G
      innodb_buffer_pool_size=4G

  • pastikan innodb_buffer_pool_size adalah 4 kali lipat dari innodb_log_file_size.
  • kalau sudah simpan file tersebut.
  • nyalakan kembali mysql anda dengan mengetikan
    • # service mysql start

  • dengan menyalakan kembali mysql maka file ibdata1, ib_logfile0 dan ib_logfile1. tapi jangan khawatir karena sekarang ibdata1 hanya akan menyimpan metadata saja. sedangkan ib_logfile0 akan berukuran 1 GB maksimal, sehingga jika lebih dari itu akan meng-create file baru lagi (ib_logfile1, ib_logfile2, dst).
  • restore database yang tadi telah kita export. ketika me-restore data, ibdata1 akan semakin membesar tapi jangan khawatir karena dia hanya akan menyimpan metadata saja. sedangkan data aslinya dari tiap-tiap database akan dibuatkan sebuah folder dan setiap folder tersebut akan berisikan banyak file , yang masing-masing file merepresentasikan table tertentu.
  • selesai. jika tidak ada error maka sekarang ibdata tidak akan lagi sebesar yang biasanya, dan grow up-nya juga tidak se horror biasanya.

oke demikian yang bisa saya share, tentang pengalaman saya menggunakan innodb, memang innodb terkesan berat dan berbahaya, tapi bukan berarti dia tidak reliable, justru sebaliknya innodb sangat reliable sekali, cuma memang perlu sedikit set up.

Comments

total comments