2010-02-08 2 views
1

안녕하세요. 여러 데이터베이스를 매일 백업해야합니다. 현재, 나는 cronjob을 사용하여 그것을 백업 할 배치 파일을 설정하고 있습니다. 자, 내가 약 10 데이터베이스, 내가 당신에게 현재의 DB 크기를 보여주게 그 중 3이 꽤 빨리 성장하고, 백업에 필요한 내 상황이됩니다여러 번 [MySQL] 데이터베이스를 한 번에 백업 하시겠습니까?

  • DB1 = 35메가바이트을
  • DB2 = 10메가바이트
  • DB3 = 9메가바이트
  • 나머지 : DBX = 5메가바이트

내 배치 파일의 코드는 다음과 같습니다

mysqldump -u root -pxxxx DB1 > d:/backup/DB1_datetime.sql 
mysqldump -u root -pxxxx DB2 > d:/backup/DB2_datetime.sql 
... and so for the rest 

2 일 동안이 프로그램을 실행했지만 나에게 상당히 괜찮은 것 같습니다. 그러나 배치 파일을 실행할 때 내 웹 사이트 성능에 영향을 주는지 궁금합니다.

이 방법이 좋지 않은 경우, 여러 개의 데이터베이스를 백업하고 크기를 매일 늘리는 동안 어떻게 백업합니까?

답변

1

테이블 유형에 따라 다릅니다. 테이블이 innoDB 인 경우 덤프가 일관성을 갖도록 --single-transaction 플래그를 사용해야합니다. 테이블이 MyISAM이라면 작은 문제가 있습니다. mysqldump를있는 그대로 실행하면 덤프를 수행하는 동안 덤프가 테이블을 잠글 것이다 (쓰기 없음). 데이터베이스가 커질수록 분명히 큰 병목 현상이됩니다. --lock-tables=false 옵션을 사용하여이를 무시할 수 있지만 백업에 일관성없는 데이터가 포함되지 않도록 할 수 있습니다.

이상적인 솔루션은 덤프를 취하기 위해 프로덕션 환경 외부에있는 백업 복제 슬레이브 서버를 갖는 것입니다.

+0

나는 "--lock-tables = false"옵션을 잠시 설정해야하는 것처럼 보입니다. 나는 아직 노예 서버가 없다. 예를 들어 어제 크기가 35MB이지만 오늘 크기가 28MB 인 경우가 있습니다. 나는 테이블을 잠그지 않았기 때문에 sql 파일을 열었다. 파일이 손상되었다. 제대로 백업되지 않았다는 뜻인가? – mysqllearner

+0

그게 바로 이유입니다. 잠시 동안 테이블 잠금을 허용하고 일관된 백업을 위해 몇 초 동안 쓰기 잠금을 유지해야합니다. –

0

아직 방법을 찾고 계신다면 관심 있으신 분은 this입니다.

덤프가있는 각 데이터베이스에 대한 파일을 만들고 첫 번째 구성 만 만드는 데 많은 시간을 절약 할 수 있습니다.

희망, 도움이 되겠습니다.