2012-11-15 2 views
0

phpMyAdmin의 "데이터베이스 복사"기능을 사용하여 ~ 5M 행이있는 데이터베이스 하나를 동일한 서버의 다른 데이터베이스로 복사하기 시작했습니다. 약 2 분 동안 (2 시간 정도) 서버가 충돌하기 시작했고 mysqld 프로세스를 종료해야했습니다.커다란 InnoDB 롤백을 죽이면 테이블이 손상됩니까?

MySQL이 프로세스를 종료하기 전에 이미 시작한 테이블을 롤백하려고 시도하고 있습니다. 50 분 넘게 실행되어 모든 것을 늦추고 있습니다.

show engine innodb status을 사용하면 프로세스 번호를 찾을 수있었습니다. 이 과정을 중단해야합니까? 테이블을 손상 시키거나 어떤 것을 다치게할까요, 아니면 롤백을 중지하는 것이 안전할까요?

다음은 항목입니다. 현재의 속도로 보면, 983k 로그 항목을 남기려면 약 3 시간이 걸릴 것 같습니다. 당신이 당신의 롤백을 죽이면

---TRANSACTION 0 1853619464, ACTIVE 3214 sec, process no 5552, OS thread id 3028249488 ROLLING BACK , undo log entries 983813

답변

2

, 다시 다음 번에 롤백을 할 단지 것입니다. 테이블을 일관된 상태로 되돌리려면 롤백을 완료해야합니다.

+1

사실 롤백을 완료하는 데 약 5 시간이 걸릴 것으로 보입니다. 백업에서 단지 전체 DB를 복원하는 데 시간이 덜 걸릴 수도 있습니다 (단지 몇 시간 전에 완료되었습니다). 롤백을 중단하고 데이터베이스를 바로 삭제할 수 있습니까? –

+1

나는 그것이 효과가 있다고 생각하지 않는다. 이 서버에 모든 데이터베이스의 백업이 있습니까? 그렇다면 mysqld를 죽이고 데이터 디렉토리를 삭제/다시 초기화 한 다음 복원하는 것이 더 빠를 것이다. –

+0

어제의 백업이이 복사본과의 충돌로 인해 실제로 완료되지 않은 것처럼 보입니다. 그래서 우리는 단지 그것을 기다리게 할 것입니다. 감사! –

관련 문제