MySQL 테이블을 어떻게 강제로 손상시킬 수 있습니까?


17

mysqlcheck (손상된 테이블을 확인)를 호출 하는 간단한 Nagios 플러그인을 작성했으며 손상된 것이 있으면 경고를 표시합니다.

그러나 지금 내 테이블 중 어느 것도 손상되지 않았습니다. 따라서 플러그인이 제대로 작동하는지 100 % 확신하지 못합니다. 중요하지 않은 dev 서버가 있습니다. Nagios 경보를 테스트 할 수 있도록 테이블 중 하나 (또는 ​​일부)를 손상 시키려면 어떻게해야합니까?

레코드의 경우 서버는 Ubuntu Dapper이고 mysql은 버전 5.0입니다.


흥미로운 .......
Sander Versluys

3
그들이 MyISAM 테이블이라고 가정하면 창을 열 수 있다고 상상할 것입니다. ACID 프리 테이블이 충돌하고, 넘어져서 불을 붙일 수있을 정도로 약간의 바람이 불면 충분합니다.)
David

답변:


1

일반적으로 데이터베이스를 / var / lib / mysql에서 복사 한 다음 데이터베이스가 손상되어 다시 복사하여 백업 할 수는 없습니다. 대신 mysqldump를 사용해야합니다.

따라서 / var / lib / mysql에있는 데이터베이스의 폴더 중 하나에 들어가면 (예 : / var / lib / mysql / myDB /)해야 할 일부 파일이 엉망이됩니다.

따라서 파일 중 하나를 복사하고 16 진 편집기로 약간 편집 한 후 다시 복사하는 것이 좋습니다.


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

난이게 좋아!
Kyle Brandt

1
하드 디스크가 가득 찰 때까지 / dev / random에서 계속 데이터를 가져 오지 않습니까? : P
Rory

2
이봐 요, 부패했다고 했어요? ;-)
Matt Simmons

Rory, Ya,하지만 어느 시점에서 Ctrl-C를 누르십시오
Kyle Brandt

로리, 또는 머리에 / dev / urandom을 사용하여 파일에 넣은 다음 캐터링
Kyle Brandt

3

zzuf 와 같은 퍼징 도구를 사용하여 기존 데이터베이스 파일을 퍼징 할 수 있습니다.

zzuf < good.myd > fuzzed.myd


2

결함을 시뮬레이션하는보다 현실적인 방법은 집중 업데이트를 수행하는 동안 MySQL의 발 아래에서 깔개를 꺼내는 것입니다. mysqld프로세스에 SIGKILL을 발행하는 것으로 충분합니다. MySQL을 다시 시작하면 문제의 테이블이 충돌 한 것으로 표시 될 수 있습니다.

또는 다른 사람들의 제안을 적용하는 .MYI것이 아니라 데이터 파일이 아닌 indec 파일에 적용하는 것이 좋습니다 .


2

예:

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

아마도 다음과 같은 명령 실행이 있습니다.

echo "aaa" > file.myd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.