Server mysql produksi kami baru saja mogok dan tidak akan muncul kembali. Ini memberikan kesalahan segfault. Saya mencoba reboot, dan tidak tahu harus mencoba apa lagi. Inilah stacktrace:
140502 14:13:05 [Catatan] Plugin 'FEDERATED' dinonaktifkan. InnoDB: Pemindaian log berkembang melewati pos pemeriksaan lsn 108 1057948207 140502 14:13:06 InnoDB: Database tidak dimatikan secara normal! InnoDB: Mulai pemulihan kerusakan. InnoDB: Membaca informasi tablespace dari file .ibd ... InnoDB: Memulihkan kemungkinan halaman data setengah tertulis dari doublewrite InnoDB: buffer ... InnoDB: Melakukan pemulihan: dipindai hingga mencatat nomor urut 108 1058059648 InnoDB: 1 transaksi yang harus dibatalkan atau dibersihkan InnoDB: total 15 operasi baris dibatalkan InnoDB: Penghitung id trx adalah 0 562485504 140502 14:13:06 InnoDB: Memulai kumpulan catatan log yang berlaku ke database ... InnoDB: Kemajuan dalam persen: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 84 85 86 87 88 89 90 91 92 93 94 94 95 96 97 98 99 InnoDB: Terapkan batch selesai InnoDB: Mulai di latar belakang kemunduran transaksi tidak berkomitmen 140502 14:13:06 InnoDB: Rolling back trx dengan id 0 562485192, 15 baris untuk diurungkan 140502 14:13:06 InnoDB: Dimulai; nomor urut log 108 1058059648 140502 14:13:06 InnoDB: Kegagalan pernyataan di utas 1873206128 dalam file ../../../storage/innobase/fsp/fsp0fsp.c line 1593 InnoDB: Pernyataan gagal: terpecah belah> 0 InnoDB: Kami sengaja membuat jebakan memori. InnoDB: Kirim laporan bug terperinci ke http://bugs.mysql.com. InnoDB: Jika Anda mendapatkan kegagalan pernyataan berulang atau crash, bahkan InnoDB: segera setelah startup mysqld, mungkin ada InnoDB: korupsi di tablespace InnoDB. Silakan merujuk InnoDB: http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html InnoDB: tentang memaksa pemulihan. 140502 14:13:06 - mysqld mendapat sinyal 6; Ini bisa jadi karena Anda menekan bug. Mungkin juga biner ini atau salah satu perpustakaan yang ditautkan dengannya rusak, tidak dibangun dengan benar, atau salah konfigurasi. Kesalahan ini juga bisa disebabkan oleh kerusakan perangkat keras. Kami akan berusaha sebaik mungkin untuk mengorek beberapa info yang diharapkan akan membantu mendiagnosis masalahnya, tapi karena kita sudah crash, pasti ada sesuatu yang salah dan ini mungkin gagal. key_buffer_size = 16777216 read_buffer_size = 131072 max_used_connections = 0 max_threads = 151 threads_connected = 0 Mungkin mysqld dapat digunakan hingga key_buffer_size + (read_buffer_size + sort_buffer_size) * max_threads = 345919 K byte memori Semoga tidak apa-apa; jika tidak, kurangi beberapa variabel dalam persamaan. thd: 0x0 Mencoba backtrace. Anda dapat menggunakan informasi berikut untuk mengetahuinya di mana mysqld meninggal. Jika Anda tidak melihat pesan setelah ini, ada sesuatu yang terjadi sangat salah ... stack_bottom = (nil) thread_stack 0x30000 140502 14:13:06 [Catatan] Penjadwal Acara: Memuat 0 acara 140502 14:13:06 [Note] / usr / sbin / mysqld: siap untuk koneksi. Versi: '5.1.41-3ubuntu12.10' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu) / usr / sbin / mysqld (my_print_stacktrace + 0x2d) [0xb7579cbd] / usr / sbin / mysqld (handle_segfault + 0x494) [0xb7245854] [0xb6fc0400] /lib/tls/i686/cmov/libc.so.6(abort+0x182) [0xb6cc5a82] / usr / sbin / mysqld (+ 0x4867e9) [0xb74647e9] / usr / sbin / mysqld (btr_page_free_low + 0x122) [0xb74f1622] / usr / sbin / mysqld (btr_compress + 0x684) [0xb74f4ca4] / usr / sbin / mysqld (btr_cur_compress_if_useful + 0xe7) [0xb74284e7] / usr / sbin / mysqld (btr_cur_pessimistic_delete + 0x332) [0xb7429e72] / usr / sbin / mysqld (btr_node_ptr_delete + 0x82) [0xb74f4012] / usr / sbin / mysqld (btr_discard_page + 0x175) [0xb74f41e5] / usr / sbin / mysqld (btr_cur_pessimistic_delete + 0x3e8) [0xb7429f28] / usr / sbin / mysqld (+ 0x526197) [0xb7504197] / usr / sbin / mysqld (row_undo_ins + 0x1b1) [0xb7504771] / usr / sbin / mysqld (row_undo_step + 0x25f) [0xb74c210f] / usr / sbin / mysqld (que_run_threads + 0x58a) [0xb74a31da] / usr / sbin / mysqld (trx_rollback_or_clean_all_without_sess + 0x3e3) [0xb74ded43] /lib/tls/i686/cmov/libpthread.so.0(+0x596e) [0xb6f9f96e] /lib/tls/i686/cmov/libc.so.6(clone+0x5e) [0xb6d65a4e] Halaman manual di http://dev.mysql.com/doc/mysql/en/crashing.html berisi informasi yang seharusnya membantu Anda mengetahui apa yang menyebabkan crash.
Ada rekomendasi?
/etc/mysql/my.cnf
itu.Jawaban:
Aduh.
Periksa halaman web yang disarankan: http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html .
Pada dasarnya, cobalah untuk memulai server MySQL dalam mode pemulihan dan buat cadangan tabel macet Anda .
Edit
/etc/my.cnf
dan tambahkan:... untuk melihat apakah Anda dapat masuk ke database Anda dan mendapatkan data Anda / temukan tabel yang rusak.
Biasanya, ketika ini terjadi itu adalah membangun kembali (setidaknya satu atau dua tabel rusak).
Dari http://chepri.com/mysql-innodb-corruption-and-recovery/ :
mysqld
(service mysql stop
)./var/lib/mysql/ib*
Tambahkan baris berikut ke
/etc/my.cnf
:(mereka menyarankan 4, tetapi yang terbaik untuk memulai dengan 1 dan kenaikan jika tidak akan mulai)
Mulai ulang
mysqld
(service mysql start
).mysqldump -A > dump.sql
mysqld
(service mysql stop
)./var/lib/mysql/ib*
innodb_force_recovery
dalam/etc/my.cnf
mysqld
. Lihatlah log kesalahan mysql. Secara default seharusnya/var/lib/mysql/server/hostname.com.err
untuk melihat cara membuatib*
file baru .mysql < dump.sql
sumber
Saya menghadapi kesalahan yang sama saat menggunakan mysql: 5.7 buruh pelabuhan gambar. Kesalahan utama adalah mencoba membuat root user yang ada secara default. Informasi lebih lanjut: https://github.com/docker-library/mysql/issues/129
Seperti yang diberikan dalam tautan di atas, solusinya adalah TIDAK mengatur MYSQL_USER dan MYSQL_PASSWORD dalam variabel lingkungan saat memulai gambar buruh pelabuhan.
sumber
Ini terjadi pada saya di Laravel Homestead (Vagrant setelah panik kernel yang menjalankan Mac OS Sierra 10.12.4 (16E195):
Berikut adalah beberapa sumber yang dapat Anda coba, meskipun tidak ada opsi perbaikan yang berfungsi untuk saya :
https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html
https://forums.mysql.com/read.php?22,603093,604631#msg-604631
https://support.plesk.com/hc/en-us/articles/213939865-How-to-fix-InnoDB-corruption-cases-for-the-MySQL-database
Saya mencoba menambahkan pemulihan paksa ke konfigurasi mysql (mulai dari 1 dan semakin tinggi karena seharusnya angka yang lebih tinggi dapat menyebabkan korupsi permanen):
sudo nano /etc/mysql/my.cnf
Di jendela lain, jalankan:
tail -f /var/log/mysql/error.log
Kemudian coba mulai ulang mysqld dengan berbagai opsi yang diaktifkan:
sudo /etc/init.d/mysql restart
Jika waktu habis, Anda dapat memaksa memulai kembali proses mysql dengan:
Jika berhasil, log akan menampilkan sesuatu seperti:
Version: '5.7.9' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
Jika gagal, log akan menampilkan sesuatu seperti:
InnoDB: Assertion failure in thread 140049488692992 in file log0recv.cc line 1420
Ketika semakin buruk menjadi lebih buruk, saya mencoba menghapus database yang kemungkinan rusak:
sudo ls -alt /var/lib/mysql
Ternyata database yang saya kerjakan adalah yang paling baru-baru ini dimodifikasi di bagian atas daftar. Untungnya saya punya dump SQL untuk itu sejak hari itu sehingga dapat menghapusnya:
sudo rm -rf /var/lib/mysql/<database_name>
Saya meninggalkan semua file lainnya, dan mysql tetap dapat memulai.
UPDATE: pastikan untuk menonaktifkan
innodb_force_recovery = 1
sekali mysql bekerja lagi, jika tidak, Anda akan mendapatkan kesalahan ketika Anda mencoba untuk memodifikasi database dan tabel.Kemudian saya membuat ulang database dengan Sequel Pro, mengimpor kembali data saya dan dapat melanjutkan tanpa harus membuang semua database dari proyek saya yang lain.
Ke depan, saya harus berasumsi bahwa basis data mysql apa pun dapat rusak dan berusaha menyimpan cadangan harian dan membuat naskah rekreasi basis data didokumentasikan atau dikodekan ke dalam alat integrasi berkelanjutan saya.
sumber