File konfigurasi "my. cnf" dari MySQL dapat ditemukan di sini. "/Applications/MAMP/tmp/mysql/my. cnf". Tolong dicatat. Mengedit file ini TIDAK berfungsi karena akan ditimpa setiap kali MySQL dimulai ulang oleh MAMP PRO dengan "my. cnf" yang dibuat dari template MySQL. Anda harus mengedit template ini [menu File > Open Template > MySQL [my. cnf] > 5. 7. 30] untuk memodifikasi konfigurasi MySQL. Secara manual menambahkan "my. cnf" file ke lokasi lain tidak disarankan. Setiap aspek konfigurasi dapat ditangani dengan template MySQL
File konfigurasi utama MySQL adalah my. cnf dan terletak di lokasi yang berbeda tergantung pada sistem operasi, distribusi, dan versi. Posting ini menunjukkan cara mencari tahu di mana MySQL akan mencari file konfigurasi
Gunakan mysql + grep untuk mencari tahu di mana MySQL akan terlihat
Menjalankan perintah ini dari baris perintah / terminal akan menunjukkan di mana MySQL akan mencari my. cnf pada sistem Linux/BSD/OS X
mysql --help | grep "Default options" -A 1
Ini akan menampilkan sesuatu seperti ini
Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf_
Anda sekarang dapat memeriksa file menggunakan output di atas di /etc/my. cnf, lalu /etc/mysql/my. cnf dan sebagainya
Jika tidak ada satu pun di salah satu lokasi tersebut, Anda dapat membuatnya dan tahu bahwa MySQL akan menggunakannya
Seringkali sebuah distro akan memiliki default yang dikompilasi ke dalam Server dan Klien MySQL, dan bahkan tidak akan memiliki my. cnf, jadi jika Anda ingin memiliki pengaturan yang melekat saat MySQL dimulai ulang, Anda harus membuat file dan meletakkannya di sana
Sejarah halaman
Halaman ini awalnya diposting pada 8 November 2010 dan memiliki setidaknya satu pembaruan antara saat itu dan 11 Agustus 2011. Ini awalnya menunjukkan lokasi my. cnf pada distribusi Linux populer
Itu ditulis ulang pada 10 September 2014 untuk menunjukkan cara mengetahui di mana MySQL mencari my. cnf sebagai gantinya, karena file tersebut sering tidak ada di distro yang lebih baru kecuali Anda, administrator, membuatnya terlebih dahulu
Sistem basis data sering membutuhkan penyetelan untuk kinerja terbaik. Lukas Vileikis menjelaskan cara mengoptimalkan my. cnf untuk kinerja MySQL
Sejak awal rekayasa perangkat lunak, pengembang beralih ke database untuk menyimpan data mereka – seiring berjalannya waktu, beberapa pengembang dapat memilih jalur mereka dengan lebih jelas. beberapa mulai menggunakan PostgreSQL, beberapa memilih MySQL atau variannya [MariaDB atau Percona Server], beberapa menggunakan solusi berbasis NoSQL seperti MongoDB
Pengembang yang memilih untuk menggunakan MySQL, bagaimanapun, dengan cepat menyadari bahwa sistem manajemen basis data tidak begitu kuat secara default dan mulai mencari cara untuk meningkatkan kinerja, keamanan, dan ketersediaan tinggi di luar kemampuan standarnya; . cnf
Apa milikku. cnf dan apa fungsinya?
Untuk menjawab pertanyaan bagaimana cara mengoptimalkan my. cnf untuk kinerja, saya akan mulai dengan dasar-dasarnya. saya. File cnf adalah file konfigurasi utama yang tersedia dalam MySQL dan semua rasanya. File tersebut berisi berbagai parameter yang dapat dikonfigurasi sesuai kebutuhan. Parameter ini kemudian akan dimuat ke MySQL saat sistem manajemen basis data dijalankan. Ada beberapa lokasi di mana my. file cnf dapat ditemukan [lokasi berbeda tergantung pada jenis Linux yang digunakan]. MySQL biasanya memuat pengaturan dari file setelah menemukannya di salah satu lokasi berikut
- /etc/my. cnf
- /etc/mysql/my. cnf
- /var/lib/mysql/my. cnf
- ~/saya. cnf
Path ke direktori yang berisi my. cnf juga dapat didefinisikan dengan mengubah nilai variabel MYSQL_HOME
. Jika menjalankan MySQL di Windows, direktori tempat file my. ini [perhatikan perubahan ekstensi – my. cnf disebut saya. ini di Windows] file akan ditempatkan akan sesuai dengan direktori tempat direktori data MySQL berada. Di Linux, mungkin /var/lib/mysql/my. cnf atau di salah satu lokasi yang ditentukan di atas. Di Windows, lokasi akan bergantung pada versi MySQL yang Anda jalankan – untuk MySQL 5. 7 pada Windows 10, misalnya, lokasinya bisa /bin/mysql/mysql*. *. ** di mana *. *. ** adalah versi server MySQL atau bahkan di direktori ProgramData yang disembunyikan secara default. Dalam hal ini, cari folder MySQL di dalamnya
Setelah membuka my. cnf, Anda akan melihat sesuatu yang mirip dengan yang berikut ini
Gambar 1 – beberapa pengaturan yang tersedia dalam my. cnf
Seperti yang Anda lihat, file menyimpan banyak sekali parameter – beberapa di antaranya lebih penting untuk kinerja, yang lain lebih sedikit. Versi Windows saya. cnf [saya. ini] juga dikenal luas karena fakta bahwa file tersebut menyertakan banyak komentar [lihat gambar di atas]. Versi Windows menjelaskan hampir semuanya, sementara Linux tidak begitu murah hati; . Terlepas dari itu, satu pernyataan benar. untuk mengoptimalkan kinerja MySQL, optimalkan pengaturan di dalam my. cnf
Beberapa dari Anda mungkin masih ingat dengan artikel sebelumnya tentang nuansa indeks di MySQL. Artikel itu menyebutkan bahwa salah satu mesin penyimpanan utama yang tersedia dalam MySQL, InnoDB. Ada beberapa parameter di my. cnf yang sangat penting untuk kinerja InnoDB dan yang perlu dioptimalkan untuk mendapatkan yang terbaik dari MySQL, dan pernyataan itu berlaku untuk semua mesin penyimpanan yang tersedia dalam sistem manajemen basis data. Insinyur yang bekerja dengan MySQL biasanya memilih mesin penyimpanan yang ingin mereka gunakan sesuai dengan kebutuhan mereka, memodifikasi cnf. ini untuk mendapatkan yang terbaik dari mesin, dan restart MySQL. Setelah MySQL dimulai ulang, teknisi dapat menikmati kinerja, ketersediaan, dan, dalam beberapa kasus, manfaat keamanan yang lebih baik
Bagaimana mengoptimalkan saya. cnf untuk kinerja?
Saat melihat segala sesuatu dari perspektif yang lebih luas, optimalkan my. cnf untuk kinerja tidak terlalu sulit. Semuanya bermuara pada dua hal
- Putuskan jenis mesin penyimpanan apa yang akan digunakan dalam MySQL
- Optimalkan parameter yang relevan dengan mesin penyimpanan tersebut dan mulai ulang MySQL
Itu saja, sungguh – tidak ada yang rumit
Mulailah dengan memilih mesin penyimpanan dengan tabel ini untuk menyederhanakan pilihan Anda
Mesin Penyimpanan
Kapan Menggunakan?
InnoDB / Percona XtraDB
InnoDB harus dipilih ketika database mendukung produk perangkat lunak kasus penggunaan umum atau jika Anda tidak yakin apa yang harus digunakan untuk mendapatkan yang terbaik dari MySQL
MyISAM
Mesin penyimpanan usang, sebaiknya hanya digunakan jika Anda membutuhkan jumlah baris yang tepat di tabel tertentu. Jika digunakan sebagai mesin penyimpanan utama, MyISAM dapat menjadi penyebab crash dan kehilangan data
PENYIMPANAN
Mesin penyimpanan semacam itu menyimpan semua data dalam memori
CSV
Mesin penyimpanan semacam itu menyimpan data sebagai file CSV
MERGE [sebelumnya MRG_MyISAM]
Kumpulan dua atau lebih tabel berbasis MyISAM identik yang seharusnya digunakan sebagai satu tabel
ARSIP
Mesin penyimpanan seharusnya membiarkan kami mengarsipkan data
FEDERASI
Mesin penyimpanan memungkinkan kita mengakses data dari database tanpa menggunakan replikasi atau pengelompokan
LUBANG HITAM
Mesin penyimpanan harus digunakan untuk tujuan pengujian – semua data yang terkandung di dalamnya akan hilang dalam sekejap
CONTOH
Harus digunakan sebagai contoh bagaimana membangun mesin penyimpanan baru
Terlepas dari banyaknya mesin penyimpanan yang tersedia untuk digunakan, sebagian besar pengembang dan insinyur MySQL menggunakan InnoDB karena secara luas dianggap yang terbaik untuk sebagian besar kasus penggunaan. Sebelumnya, MyISAM juga merupakan opsi yang cukup andal, tetapi karena mesin penyimpanan menjadi usang karena masalah stabilitas dan hal-hal lain, sekarang secara efektif hanya cocok untuk satu tujuan – mengetahui jumlah baris yang tepat dalam sebuah tabel [InnoDB tidak menyediakan itu . ]
Mengoptimalkan InnoDB untuk kinerja
Mesin penyimpanan InnoDB memiliki opsi ini, antara lain, tersedia dalam my. cnf
Gambar 2 – Parameter InnoDB dalam my. cnf
Inilah yang dilakukan parameter, satu per satu
Parameter
Fungsi
innodb_data_file_path
Parameter ini menggambarkan lokasi file data [ibdata1] yang relevan dengan InnoDB – ibdata1 menampung semua data yang diperlukan agar InnoDB berfungsi dengan benar
innodb_buffer_pool_size
_
Parameter ini menguraikan ukuran kumpulan buffer yang akan digunakan dalam InnoDB. Kumpulan buffer digunakan untuk meng-cache data dan indeks tabel di dalam InnoDB
innodb_log_file_size
Mengatur ukuran file log InnoDB. Semakin besar nilai ini, semakin sedikit waktu pemulihan yang diperlukan jika terjadi kerusakan
innodb_log_buffer_size
_
Digunakan untuk menulis ke file log
innodb_flush_log_at_trx_commit
Cara membersihkan log saat melakukan transaksi. MySQL menawarkan tiga nilai - default [1] membuat InnoDB ACID sesuai, sementara 0 atau 2 menukar ACID untuk kecepatan tulis yang lebih cepat
innodb_lock_wait_timeout
_
Lamanya waktu dalam detik sebuah transaksi menunggu sebuah baris kunci
innodb_flush_method
_
Menentukan metode yang digunakan untuk menghapus data. Metode flush sangat penting karena dapat mempengaruhi throughput I/O. Saya tidak akan membahas semua pilihan Anda di sini, tetapi perlu diingat bahwa MySQL menawarkan beberapa metode flush untuk Anda pilih termasuk, tetapi tidak terbatas pada
normal
_ yang merupakan metode pembilasan default pada Windows. Pilihan lain untuk Windows adalahunbuffered
innodb_data_file_path
0 yang merupakan metode pembilasan default di Linux – MySQL akan menggunakan fungsi fsync[] untuk menyiram datainnodb_data_file_path
1 yang menginstruksikan sistem operasi untuk melewati cache halaman dan melakukan operasi I/O terhadap disk di Linuxinnodb_data_file_path
2 bertukar kecepatan untuk konsistensi – opsi ini umumnya lebih cepat daripadainnodb_data_file_path
1, tetapi data mungkin tidak konsisten setelah crash di Linux
Dan inilah cara mengoptimalkan masing-masing untuk mendapatkan hasil maksimal dari MySQL saat menggunakan InnoDB
- Setel
innodb_data_file_path
_ untuk diperpanjang secara otomatis dengan menentukaninnodb_data_file_path
5. Beberapa pengembang mungkin juga mendapat manfaat dari fakta bahwa jalur file data juga dapat memiliki ukuran maksimum dengan menentukaninnodb_data_file_path
6 setelah "innodb_data_file_path
5" sehingga parameternya terlihat seperti ini [ukuran maksimum InnoDB, dalam hal ini, adalah 10GB. ]1
innodb_data_file_path = ibdata1. 12jt . perpanjangan otomatis. maks. 10G
Jika ukuran maksimum tercapai, MySQL akan mengembalikan kesalahan
KESALAHAN 1114 [HY000]. Meja sudah penuh
- Setel ukuran kumpulan buffer InnoDB menjadi 50 – 75% dari memori operasi yang tersedia di sistem Anda. Semakin besar parameter ini, semakin cepat operasi terkait InnoDB [sisipan, dll. ] akan selesai
- Setel ukuran file log InnoDB menjadi sekitar seperempat [25%] dari ukuran kumpulan buffer InnoDB – semakin besar ukuran file log, semakin sedikit waktu pemulihan yang Anda perlukan saat memulihkan MySQL dari kerusakan
- Dianjurkan untuk membiarkan ukuran buffer log InnoDB pada nilai default 8MB [8M. ]
- Biarkan
innodb_flush_log_at_trx_commit
_ di 1 jika Anda ingin kepatuhan ACID [ACID akan memastikan bahwa data tetap utuh meskipun ada pemadaman listrik atau kegagalan lain yang dapat memengaruhi integritas data], tetapi alihkan ke 0 atau 2 jika Anda ingin menukar ACID dengan lebih . Yang pertama akan cocok untuk sebagian besar operasi terkait data, meskipun beberapa infrastruktur, terutama yang berhubungan dengan kumpulan data besar, mungkin mendapat manfaat dari pertukaran tersebut. - Mengubah nilai
innodb_lock_wait_timeout
akan mengubah cara InnoDB merespons kunci baris setelah jumlah detik yang ditentukan – nilai default untuk parameter ini adalah 50, artinya InnoDB akan mengeluarkan kesalahan jika kunci tidak dilepaskan setelah 50 detik, meskipun parameter ini dapat - Sebagian besar insinyur akan menyarankan untuk mengubah innodb_flush_method ke
innodb_data_file_path
1 agar MySQL dapat melakukan semua operasi I/O terhadap disk dan mem-bypass cache halaman - dengan cara itu operasi I/O harus jauh lebih cepat dari biasanya
Ini adalah sebagian besar parameter yang perlu Anda optimalkan saat menggunakan InnoDB. Sekarang, restart MySQL, dan pengaturan akan berlaku. Namun, jika Anda memilih untuk menggunakan MyISAM sebagai gantinya [mungkin Anda sedang mencoba beberapa fiturnya atau menggunakannya di server lama yang tidak terlalu penting], ada parameter lain yang harus Anda tinjau
Mengoptimalkan MyISAM untuk kinerja
Jika Anda menggunakan Windows, gulir ke bawah dari parameter InnoDB, dan Anda akan melihat empat parameter yang relevan dengan MyISAM. Namun, jika Anda pengguna Linux dan ingin menggunakan MyISAM untuk alasan apa pun, perlu diingat bahwa Anda mungkin perlu menambahkan parameter ini secara manual
Parameter
Apa Fungsinya?
innodb_buffer_pool_size
_1
Setara dengan ukuran kumpulan buffer InnoDB – disarankan untuk menetapkan nilai ini menjadi sekitar 40% dari memori yang tersedia di server
innodb_buffer_pool_size
_2
Menentukan ukuran buffer yang dialokasikan saat operasi pengurutan dilakukan. Menaikkan parameter ini dari nilai default mungkin membantu meningkatkan kinerja operasi ORDER BY dan GROUP BY – selain itu, parameter ini penting saat membuat indeks atau memperbaiki tabel
innodb_buffer_pool_size
_3
Menentukan ukuran buffer yang dialokasikan untuk setiap utas yang melakukan pemindaian tabel penuh [saat database menemukan nilai dengan membaca tabel secara berurutan. ]
innodb_buffer_pool_size
_4
Parameter ini digunakan untuk beberapa operasi penyortiran untuk membaca baris setelah penyortiran selesai. Parameter dapat digunakan oleh semua tabel, tidak hanya MyISAM – untuk informasi lebih lanjut
Parameter lain dalam my. cnf
Setelah Anda mengoptimalkan [atau keduanya] kinerja InnoDB dan MyISAM, Anda juga dapat melihat sedikit ke parameter lain yang tersedia untuk dikonfigurasi dalam. cnf
Parameter
Pentingnya
innodb_buffer_pool_size
_5
Meninggalkan parameter ini di dalam my. cnf tanpa nilai apa pun [atau menyertakan parameter ini di dalam file] menonaktifkan mesin penyimpanan FEDERATED dalam MySQL
innodb_buffer_pool_size
_6
Parameter ini menentukan direktori dari mana file dapat dimuat ke MySQL saat menggunakan perintah LOAD DATA INFILE – jika direktori yang salah ditentukan, MySQL akan merespons dengan kesalahan
innodb_buffer_pool_size
_7
Parameter ini dapat digunakan untuk mengatur mode SQL yang akan digunakan saat MySQL berjalan. Misalnya, parameter "ANSI" mengubah perilaku MySQL untuk berperilaku seperti SQL standar, termasuk "ALLOW_INVALID_DATES" akan menonaktifkan pemeriksaan tanggal sementara tidak menentukan nilai akan mengatur mode SQL menjadi ketat. Lihat dokumentasi untuk penjelasan lebih lanjut
innodb_buffer_pool_size
8 atauinnodb_buffer_pool_size
9
Opsi "lewati-ssl" memungkinkan MySQL untuk menggunakan koneksi yang tidak terenkripsi. Opsi "ssl", di sisi lain, akan menentukan fakta bahwa MySQL akan mencoba terhubung melalui SSL dan gagal jika koneksi aman tidak dapat dibuat
innodb_log_file_size
0
Menentukan lokasi direktori data MySQL. Dapat didefinisikan ulang – mendefinisikan ulang parameter ini dapat berguna untuk alasan keamanan, meskipun tidak jauh dari itu
innodb_log_file_size
1
Menentukan lokasi file log kesalahan dalam MySQL. Lokasi file log kesalahan dapat diubah menggunakan parameter ini, meskipun hal itu dapat dianggap sebagai “keamanan melalui ketidakjelasan. ”
innodb_log_file_size
2
Mendefinisikan mesin penyimpanan default yang digunakan oleh MySQL
innodb_log_file_size
_3
Beberapa parameter yang lebih menarik berhubungan dengan pesan kesalahan. Yang pertama menentukan lokasi direktori yang berisi file bahasa yang akan digunakan dalam MySQL ketika terjadi kesalahan, sedangkan yang terakhir menentukan bahasa dari pesan kesalahan. Mendefinisikan ulang parameter ini mungkin sangat berguna untuk instalasi MySQL digunakan oleh mereka yang tidak bisa berbahasa Inggris atau karena alasan lain
Tabel yang diberikan seharusnya memberi Anda gambaran kasar tentang seberapa kuat saya. cnf sebenarnya. Tidak hanya dapat digunakan untuk meningkatkan kinerja berbagai mesin penyimpanan, termasuk InnoDB dan MyISAM, tetapi parameter yang terkandung di dalam file juga sangat berguna untuk menyelesaikan berbagai jenis operasi. Namun, satu hal yang tidak boleh dilupakan – setiap kali Anda mengubah nilai parameter apa pun yang terdapat di dalam my. cnf, Anda harus me-restart server untuk memastikan bahwa perubahan Anda telah diterapkan
Mengoptimalkan saya. cnf untuk kinerja MySQL
Saya harap artikel ini memberi Anda gambaran tentang betapa kuatnya binatang buas saya. cnf bisa digunakan dengan benar. Parameter dalam my. cnf sering digunakan untuk meningkatkan kinerja berbagai mesin penyimpanan serta kueri, mereka dapat digunakan untuk mengatur replikasi dan membuat MySQL mampu melakukan berbagai macam hal lainnya. Saya harap artikel ini telah membantu Anda mempelajari bagaimana Anda harus menggunakan parameter dalam my. cnf untuk menyesuaikan MySQL dan membuatnya tampil lebih baik dari sebelumnya. Pastikan untuk mempertimbangkan saran dalam artikel ini dan menguji air sebelum melakukan tindakan apa pun pada server produksi, dan sampai jumpa di yang berikutnya
3
3
2