[mysql] 테이블을 잠그지 않고 MySQLDump 실행

라이브 프로덕션 데이터베이스를 로컬 개발 데이터베이스에 복사하고 싶습니다. 프로덕션 데이터베이스를 잠그지 않고이를 수행 할 수있는 방법이 있습니까?

나는 현재 다음을 사용하고 있습니다 :

mysqldump -u root --password=xxx -h xxx my_db1 | mysql -u root --password=xxx -h localhost my_db1

그러나 각 테이블이 실행될 때마다 잠 깁니다.



답변

합니까 --lock-tables=false옵션 작업을?

매뉴얼 페이지 에 따르면 InnoDB 테이블을 덤프하는 경우 다음 --single-transaction옵션을 사용할 수 있습니다 .

--lock-tables, -l

Lock all tables before dumping them. The tables are locked with READ
LOCAL to allow concurrent inserts in the case of MyISAM tables. For
transactional tables such as InnoDB and BDB, --single-transaction is
a much better option, because it does not need to lock the tables at
all.

들어 이노 DB :

mysqldump --single-transaction=TRUE -u username -p DB


답변

나이가 너무 늦었지만 주제를 검색하는 모든 사람에게 좋습니다. innoDB가 아니고 덤프하는 동안 잠금이 걱정되지 않으면 다음 옵션을 사용하십시오.

--lock-tables=false


답변

답변은 사용중인 스토리지 엔진에 따라 다릅니다. 이상적인 시나리오는 InnoDB를 사용하는 경우입니다. 이 경우 --single-transaction덤프를 시작할 때 데이터베이스의 일관된 스냅 샷을 제공 하는 플래그를 사용할 수 있습니다 .


답변

--skip-add-locks 나를 위해 도움이


답변

큰 테이블을 덤프하려면 –single-transaction 옵션을 –quick과 결합해야합니다.

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_single-transaction


답변

InnoDB 테이블의 경우 플래그를 사용하십시오. --single-transaction

응용 프로그램을 차단하지 않고 BEGIN이 발행 될 때 데이터베이스의 일관성있는 상태를 덤프합니다.

MySQL DOCS

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_single-transaction


답변

솔직히, 나는 테이블을 잠그지 않으면 덤프에서 일관되지 않은 데이터를 얻는 것처럼 복제를 설정합니다.

덤프 시간이 더 오래 걸리면 이미 덤프 된 테이블이 덤프 될 일부 테이블과 함께 변경되었을 수 있습니다.

따라서 테이블을 잠 그거나 복제를 사용하십시오.