Bagaimana saya bisa memaksa tabel MySQL menjadi rusak?


17

Saya telah menulis plugin Nagios sederhana yang memanggil mysqlcheck (yang memeriksa tabel yang rusak) dan akan memberikan peringatan jika ada yang rusak.

Namun tidak ada meja saya yang rusak sekarang. Jadi saya tidak 100% yakin bahwa plugin saya berfungsi dengan baik. Saya memiliki server dev yang tidak kritis misson. Bagaimana saya bisa memaksa satu (atau yang lain) dari tabel di sana menjadi rusak sehingga saya bisa menguji nagios saya?

Sebagai catatan server adalah Ubuntu Dapper dan mysql adalah versi 5.0


menarik .......
Sander Versluys

3
Dengan asumsi itu adalah tabel MyISAM, saya bayangkan Anda bisa membuka jendela. Sedikit terobosan harus cukup untuk menyebabkan tabel bebas ASAM itu jatuh, terbalik dan terbakar;)
David

Jawaban:


1

Secara umum Anda tidak dapat membuat cadangan database dengan menyalinnya dari / var / lib / mysql dan kemudian menyalinnya kembali karena mereka rusak, Anda harus menggunakan mysqldump sebagai gantinya.

Jadi jika Anda masuk ke salah satu folder untuk basis data di / var / lib / mysql, yaitu / var / lib / mysql / myDB / dan mengacaukan beberapa file yang harus melakukannya :-)

Jadi saya akan merekomendasikan menyalin salah satu file, mengedit sedikit dengan hex editor, dan menyalinnya kembali.


8
cat DB1.myd /dev/random > DB2.myd

Saya suka yang ini!
Kyle Brandt

1
Bukankah itu akan terus menarik data dari / dev / acak sampai harddisk saya terisi? : P
Rory

2
Hei, katamu korup, kan? ;-)
Matt Simmons

Rory, Ya, tetapi tekan saja Ctrl-C di beberapa titik
Kyle Brandt

Rory, Atau gunakan head / dev / urandom, ke file dan kemudian cat mereka
Kyle Brandt



2

Saya menyarankan bahwa cara yang lebih realistis untuk mensimulasikan kesalahan adalah dengan menarik karpet dari bawah kaki MySQL ketika sedang melakukan pembaruan intensif. Penerbitan SIGKILL ke mysqldproses harus memadai. Kemungkinannya adalah ketika Anda me-restart MySQL, tabel yang bermasalah akan ditandai sebagai macet.

Atau saya sarankan menerapkan saran orang lain tetapi untuk .MYIfile indec daripada file data.


2

contoh:

mysql> repair table Transactions;
^CQuery aborted by Ctrl+C
+-----------------------------------+--------+----------+-----------------------+
| Table                             | Op     | Msg_type | Msg_text              |
+-----------------------------------+--------+----------+-----------------------+
| test.Transactions | repair | error    | 137 when fixing table |
| test.Transactions | repair | status   | Operation failed      |
+-----------------------------------+--------+----------+-----------------------+
2 rows in set (17.84 sec)

mysql> select * from Transactions limit 1;
ERROR 144 (HY000): Table './test/Transactions' is marked as crashed and last (automatic?) repair failed

1

mungkin eksekusi perintah yang melakukan sesuatu seperti berikut:

echo "aaa" > file.myd
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.