2012-04-09 5 views
2

나는 InnoDB MySQL 데이터베이스를 가지고있다. SQL 덤프를 내보낼 때 어떻게 잠금이 발생합니까? 내보내기 중에 전체 데이터베이스가 잠 깁니 까? 아니면 그냥 테이블? 또는 개별 행만? 수출은 정확히 InnoDB과 어떻게 작동합니까?MySQL InnoDB 테이블 내보내기에서 잠금

답변

0

잠긴 것을 제어 할 수 있습니다.

mysqldump --lock-all-tables 

문서를 :

하는 것은 안전한 일하려면이 같은 모든 테이블을 잠글 수있는 모든 데이터베이스에서 모든 테이블을 잠급니다. 이는 전체 덤프 기간 동안 전역 읽기 잠금을 획득하여 수행됩니다. 이 옵션은 --single-transaction 및 --lock-tables를 자동으로 해제합니다.

또는 당신은 당신이 테이블을 변경하지 않을 것이 확실 경우 :

mysqldump --single-transaction 

문서를하십시오 - 단일 트랜잭션 덤프가 진행되는 동안, 유효한 덤프 파일을 보장하기 위해 (올바른 테이블 내용 및 바이너리 로그 좌표)를 사용하면 다른 연결은 ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE 문을 사용해야합니다. 일관된 읽기는 이러한 문장과 분리되어 있지 않으므로 덤프 할 테이블에서 이들을 사용하면 mysqldump가 수행 한 SELECT가 테이블 내용을 검색하여 잘못된 내용을 얻거나 실패 할 수 있습니다.