Saya mengikuti solusi ini di sini /programming/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261 dan mencoba meningkatkan saya innodb_buffer_pool_size
ke 4G dan kemudian 1G (juga 1024M) di Selain ukuran file log, tetapi mysql tidak akan mulai dengan nilai-nilai itu. Jika saya memasukkannya kembali ke 512M mysql dimulai dengan baik.
Bagaimana saya bisa memecahkan masalah ini? Server saya adalah 16GB, dan menurut Webmin sysinfo:
Real memory 15.62 GB total, 3.13 GB used
Sementara itu saya menemukan log kesalahan juga:
120529 10:29:32 mysqld_safe mysqld dari file pid /var/run/mysqld/mysqld.pid berakhir
120529 10:29:33 mysqld_safe Memulai daemon mysqld dengan basis data dari / var / lib / mysql
120529 10:29:33 [Note] Plugin 'FEDERATED' dinonaktifkan.
120529 10:29:33 InnoDB: Tumpukan memori InnoDB dinonaktifkan
120529 10:29:33 InnoDB: Mutex dan rw_locks menggunakan builtin atom GCC
120529 10:29:33 InnoDB: Tabel terkompresi menggunakan zlib 1.2.3
120529 10:29:33 InnoDB: Menggunakan Linux asli AIO
120529 10:29:33 InnoDB: Menginisialisasi kumpulan buffer, ukuran = 1.0G
120529 10:29:33 InnoDB: Inisialisasi kolam buffer yang lengkap
InnoDB: Kesalahan: file log ./ib_logfile0 dengan ukuran yang berbeda 0 134217728 byte
InnoDB: dari yang ditentukan dalam file .cnf 0 268435456 bytes!
Jawaban:
Dua jawaban yang diberikan dari @RickJames dan @drogart pada dasarnya adalah solusi. (+1 untuk masing-masing).
Langsung dari log kesalahan yang Anda tampilkan, dua baris terakhir mengatakan:
Pada titik itu, terbukti bahwa Anda menetapkan innodb_log_file_size ke 256M (268435456)
my.cnf
sementara Log Transaksi InnoDB (ib_logfile0
,ib_logfile1
) masing-masing masing-masing 128M (134217728). Melihat kembali tautan ke jawaban StackOverflow saya di pertanyaan Anda, Anda harus melakukan yang berikut:Langkah 01) Tambahkan ini ke
my.cnf
:Langkah 02) Jalankan perintah ini di OS
Agar memiliki keyakinan pada apa yang terjadi, jalankan
tail -f
terhadap log kesalahan. Anda akan melihat pesan memberi tahu Anda ketika setiap file log innodb sedang dibuat.sumber
service mysqld stop
.Berdasarkan kesalahan dalam log, saya menduga Anda melakukan ini:
Jika Anda mengubah ukuran file log, Anda harus menghapus file log yang lama. Innodb tidak akan mulai berhasil jika file yang ada tidak cocok dengan ukuran yang ditentukan dalam file konfigurasi. Jika Anda memindahkannya ke tempat lain, innodb akan membuat file log transaksi baru dengan ukuran yang benar ketika dimulai.
Saya akan merekomendasikan memindahkan file lama ke direktori lain daripada hanya menghapusnya, sampai server aktif dan berjalan dengan file log baru dan semuanya terlihat OK.
sumber
Buffer_pool harus diatur ke sekitar 70% dari RAM yang tersedia jika Anda menjalankan InnoDB saja.
Ukuran log tidak terlalu penting. Yang optimal adalah mengaturnya sehingga (Uptime * innodb_log_file_size / Innodb_os_log_written) kira - kira 3600 (1 jam).
Untuk mengubah ukuran log, seseorang harus
sumber
Mungkin juga ada beberapa masalah dalam nilai Anda yang disediakan untuk ukuran kolam penyangga . seperti itu terjadi dalam kasus saya ...
Ketika menambah atau mengurangi
innodb_buffer_pool_size
, operasi dilakukan dalam potongan. Ukuran bongkahan ditentukan olehinnodb_buffer_pool_chunk_size
opsi konfigurasi, yang memiliki standar 128M. Untuk informasi lebih lanjut, lihat Mengkonfigurasi Ukuran Potongan Pool Buffer InnoDB .Ukuran kolam penyangga harus selalu sama dengan atau kelipatan
innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
. Jika Anda mengonfigurasiinnodb_buffer_pool_size
nilai yang tidak sama dengan atau kelipataninnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
, ukuran kumpulan buffer secara otomatis disesuaikan dengan nilai yang sama dengan atau kelipataninnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
yang tidak kurang dari ukuran kumpulan buffer yang ditentukan.Dalam contoh,
innodb_buffer_pool_size
diatur ke 8G, daninnodb_buffer_pool_instances
diatur ke 16.innodb_buffer_pool_chunk_size
adalah 128M, yang merupakan nilai default.8G adalah
innodb_buffer_pool_size
nilai yang valid karena 8G adalah kelipataninnodb_buffer_pool_instances=16 * innodb_buffer_pool_chunk_size=128M
, yaitu 2G.sumber