Aku s MyIsam mesin lebih aman daripada InnoDB tentang hilangnya data karena kesalahan FileSystem?
Tampaknya InnoDB tidak dapat diperbaiki dengan alat MySQL.
Saya harus memilih mesin saya dan saya memilih InnoDB karena kunci asing, tetapi saya akan mempertimbangkan migrasi mesin jika ini tampaknya lebih aman.
Jawaban:
InnoDB memiliki arsitektur yang sangat rumit di latar belakang
Arsitektur InnoDB
Jika terjadi kerusakan, InnoDB memiliki buffer tulis ganda dan file log untuk mendukung mekanisme pemulihan kerusakan. MISISAM tidak memiliki perlindungan seperti itu. Saya telah menulis posting di DBA StackExchange tentang ini:
Oct 08, 2012
: Implementasi pemulihan data MYSQL MyISAMMar 19, 2012
: Tabel MySQL yang sangat kecil terus mogokMar 15, 2012
: Mengapa tabel MySQL lumpuh? Bagaimana saya mencegahnya?Feb 16, 2012
: Tabel MyISAM terus mogok. Apa saja pilihan saya?MyISAM dapat crash terlalu mudah karena data tidak pernah di-cache dalam memori. Semua membaca dan menulis memerlukan brute force I / O dari tabel MyISAM
.MYD
mengajukan. Ini berarti menangani file yang terbuka yang ada di tangan OS.Jika Anda ingin InnoDB diperbaiki, Anda perlu mengkonfigurasi my.cnf untuk membuat InnoDB kurang bergantung pada OS dan lebih bergantung pada Arsitektur Internal. Lihat posting terbaru saya Rata-rata beban tinggi karena penggunaan CPU mysql tinggi . Dengan begitu, InnoDB Crash Recovery bisa lebih menyembuhkan diri sendiri.
sumber
Saya akan menggunakan InnoDB karena kunci per catatan vs kunci MyIsam per tabel lubang. InnoDB juga tidak memerlukan alat perbaikan seperti yang sudah dikatakan sebelumnya. Selanjutnya mesin InnoDB dapat menyimpan tabel dalam file yang terpisah sehingga terlihat lebih aman dari titik crash sistem file.
sumber
Kesalahan sistem file, atau bahkan kesalahan level blok, bukanlah jenis item yang diuji atau dipertanggungjawabkan secara luas oleh implementasi MyISAM atau Innodb. Sementara beberapa deteksi dapat terjadi ketika mereka ditulis ada asumsi besar bahwa apa yang pernah ditulis tanpa kesalahan dikembalikan, itu benar. Checksums ada dan diperiksa pada saat dibaca, tetapi jalur pemulihan kesalahan pada halaman / baris yang gagal checksum saya pikir tidak dipikirkan sepenuhnya.
Saya menduga strategi mitigasi risiko yang tepat untuk ini (dan beberapa bentuk lain dari kegagalan server) adalah menjalankan replikasi slave pada sistem file yang berbeda, dan sebagai DR, menyimpan log biner dan dump snapshot SQL logis. Dengan cara ini Anda tidak perlu bergantung pada alat yang mungkin bisa mengatasi beberapa bentuk kegagalan dengan dataloss.
sumber