Apakah MyIsam lebih aman daripada InnoDB?

0

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.

Tobia
sumber
3
InnoDB tidak "diperbaiki" dengan alat tersebut karena tidak memerlukan proses perbaikan ini jika terjadi kegagalan. Sebaliknya itu memutar ulang log.
Der Hochstapler
1
... yang berarti InnoDB dan MyISAM secara kasar dapat dibandingkan, dalam hal keandalan, dengan sistem file yang dijurnal dan tidak dijurnal.
Aaron Miller
Rekam kunci, komit atom, dan kembalikan melalui sistem pencatatan transaksi vs. poof, meja Anda baru saja rusak dan sekarang Anda memiliki alat bagus ini untuk mencoba mendapatkan kembali data Anda. Proaktif vs reaktif.
Fiasco Labs

Jawaban:

1

InnoDB memiliki arsitektur yang sangat rumit di latar belakang

Arsitektur InnoDB

InnoDB Architecture

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:

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.

RolandoMySQLDBA
sumber
0

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.

Alex Antonov
sumber
1
MyISAM juga dapat menyimpan tabel dalam file terpisah.
ChrisInEdmonton
@ChrisInEdmonton, ya Anda benar, itu perilaku standar myisam.
Alex Antonov
Jadi, apakah Anda menyarankan innodb dengan file log terpisah?
Tobia
Saya sarankan innodb dengan konfigurasi "table per file" (periksa link ).
Alex Antonov
0

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.

danblack
sumber