Kami mendapat database yang sudah dua kali menggantung dan mencoba mencari penyebabnya.
show processlist
Waiting for global read lock | INSERT INTO {myisam_table} ...
Di sini ruang disk penuh sehingga kami pikir masalahnya sudah selesai setelah memberikannya lagi tetapi hari berikutnya pada tengah hari itu digantung lagi:
show processlist
Waiting for table level lock | UPDATE {myisam_table} ...
Apa yang menyebabkannya?
Mesin Standar Mysql: InnoDB.
Database memiliki campuran tabel dengan mesin MyISAM dan InnoDB.
Log diposting di sini:
http://arturito.net/2013/08/28/mysql-waiting-for-table-level-lock-errors/
mysqldump
. Apakah Anda menjalankan cadangan pada saat itu?SHOW FULL PROCESSLIST
daripadaSHOW PROCESSLIST
agar kita dapat melihat seluruh kueri untuk setiap utas ... tapi seperti yang ada sekarang, jika adaMyISAM
tabel yang terlibat, maka sepertinyaSELECT
kueri yang berjalan lama di 42686 memblokirUPDATE
kueri di 43506 , yang pada gilirannya, memblokir setiapSELECT
permintaan yang mengikutinya.Jawaban:
PENGAMATAN AWAL
JOIN
,GROUP BY
atauORDER BY
TEORI KERJA
Jika Anda kehabisan ruang disk dengan daftar proses yang Anda berikan kepada saya, maka kita dapat menyalahkan mesin penyimpanan MyISAM. Mengapa?
Dalam kasus khusus Anda, itu bukan salah satu dari tabel Anda. Jika a
JOIN
,,GROUP BY
atauORDER BY
sedang dieksekusi dan tabel temp sedang ditulis ke disk (pada tabel temp disk menggunakan mesin penyimpanan MyISAM) MySQL cukup membeku ketika kehabisan ruang. Bagaimana saya tahu itu?Menurut Panduan Studi Sertifikasi MySQL 5.0
Halaman 408.409 Bagian 29.2 Bulletpoint 11 mengatakan:
Saya telah membahas situasi ini sebelumnya
Apr 05, 2013
: "Situs Offline" Server MySQL gagal memulai dan berhentiDec 17, 2012
: Bagaimana mengatasi MySQL "The table is full" error 1114 dengan Amazon RDS?Apr 25, 2012
: File Log Sangat BesarMar 15, 2012
: Mengapa tabel MySQL lumpuh? Bagaimana saya mencegahnya?Sesuatu mengatakan kepada saya bahwa Anda memiliki salah satu dari dua situasi ini
/tmp
di partisi root, itu kehabisan ruangSARAN
Saran # 1: Map tmpdir ke disk lain
Saran # 2: Buat Disk RAM
Jalankan kode ini untuk menginstal disk RAM yang akan tersedia di Linux reboot.
Lalu, petakan tmpdir ke
/var/tmpfs
COBALAH !!!
sumber