Bir MySQL tablosunun bozulmasını nasıl zorlayabilirim?


17

Ben mysqlcheck (ki bozuk tablolar için denetler) çağırır ve herhangi bir bozuksa bir uyarı verecektir basit bir Nagios eklentisi yazdım .

Ancak şimdi tablolarımın hiçbiri bozuk değil. Bu yüzden eklentimin iyi çalıştığından% 100 emin değilim. Misson kritik olmayan bir dev sunucum var. Nagios uyarımı test edebilmem için oradaki tablolardan birini (veya herhangi birini) bozulmaya zorlayabilir miyim?

Kayıt için sunucu Ubuntu Dapper ve mysql sürüm 5.0


ilginç .......
Sander Versluys

3
MyISAM masaları olduklarını varsayarsak, sadece bir pencere açabileceğinizi düşünürdüm. Bu ASİT ücretsiz masaların çökmesine, devrilmesine ve ateş yakmasına neden olmak için hafif bir kırılma yeterli olmalıdır;)
David

Yanıtlar:


1

Genellikle veritabanlarını / var / lib / mysql'den kopyalayıp sonra bozuldukları için kopyalayarak yedekleyemezsiniz, bunun yerine mysqldump kullanmanız gerekir.

Yani / var / lib / mysql, yani / var / lib / mysql / myDB / içinde veritabanı için klasörlerden birine giderseniz ve bunu yapması gereken bazı dosyalarla karıştırırsanız :-)

Bu nedenle, dosyalardan birini kopyalamanızı, onaltılık düzenleyiciyle biraz düzenlemenizi ve geri kopyalamanızı öneririm.



3

Önceden varolan bir veritabanı dosyasını fuzz etmek için zzuf gibi bir fuzzing aracı kullanabilirsiniz.

zzuf < good.myd > fuzzed.myd


2

Arızayı simüle etmenin daha gerçekçi bir yolunun, yoğun bir güncelleme gerçekleştirirken halıyı MySQL'in ayaklarının altından çıkarmak olacaktır. SIGKILL'in mysqldsürece verilmesi yeterli olmalıdır. Muhtemelen MySQL'i yeniden başlattığınızda, söz konusu tablo (lar) çöktü olarak işaretlenecektir.

Alternatif olarak .MYI, veri dosyası yerine indec dosyasına başkalarının önerilerini uygulamayı öneririm .


2

misal:

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

belki aşağıdaki gibi bir şey yapan bir komut yürütme:

echo "aaa" > file.myd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.