2009-07-31 4 views
0

rsync를 사용하여 MySQL 데이터를 백업하려고합니다. 이 테이블은 MyISAM 스토리지 엔진을 사용합니다.rsync 및 MyISAM 테이블

내 첫 번째 rsync 이후에 계속되는 rsync가 빠를 것이라고 기대했습니다. 테이블 데이터가 전혀 변경되지 않으면 작업 속도가 느려집니다.

나는 실제 데이터가 포함 된 9백89메가바이트의 MYD 파일과 함께 실험을했다 :

시험 (1) - 수정되지 않은 데이터

  • rsync -a orig.MYD copy.MYD
    • 예상대로 시간이 걸립니다를 재 복사
  • rsync -a orig.MYD copy.MYD
    • 순간 - 고속화가 수백만에

시험 2 - 재 복사 약간 수정 데이터

  • rsync -a orig.MYD copy.MYD
    • 예상대로 다소 소요
  • UPDATE table SET counter = counter + 1 WHERE id = 12345
  • rsync -a orig.MYD copy.MYD
    • 은 원본만큼 걸립니다!

무엇이 있습니까? rsync가 왜 작은 변경 사항을 복사하는 데 영원히 걸리는 이유는 무엇입니까?

편집 : 사실 테스트 2의 두 번째 rsync는 첫 번째만큼 오래 걸립니다. rsync는 분명히 전체 파일을 다시 복사하고 있습니다.

편집 : 로컬에서 로컬로 복사 할 때 --whole-file이 암시됩니다. --no-whole-file을 사용하더라도 성능은 여전히 ​​끔찍합니다.

+0

데이터베이스 복제를 살펴 보셨습니까? 나는 그것에 익숙하지 않지만이 경우에는해야 할 일처럼 들린다. –

답변

1

rsync는 변경 사항을 결정하기 위해 블록 해시를 계산해야합니다. no-modification의 경우 파일 mod 시간/크기를보고있는 바로 가기 일 수 있습니다.

0

rsync는 파일이 변경된 경우이를보고 변경된 부분을 볼 수있는 algorithim을 사용합니다. 대용량 데이터베이스에서는 변경 사항이 파일의 큰 부분에 퍼져있는 것이 일반적입니다. 이것은 rsync의 최악의 시나리오입니다.

0

Rsync는 파일 기반입니다. 블록 기반 시스템에서이 작업을 수행하는 방법을 찾은 경우 변경된 블록/바이트 만 백업 할 수 있습니다.

LVM 스냅 샷이이를 수행하는 한 방법 일 수 있습니다.

0

로컬 복사본을 만들 때 rsync는 기본값으로 --whole-file으로 기본 설정됩니다. 검사하는 것보다 빠릅니다.

  • 가장 빠른 지역 사본을 원하는 경우

    , 당신은 이미 그것을 얻었다.
  • rsync 속도 향상을 보려면 네트워크를 통해 복사하십시오. 인상적이지만 로컬 전체 복사본보다 빠르지는 않습니다.

로컬 복사본 용 rsync는 일부 파일 만 변경되는 큰 디렉토리가있는 경우 cp을 대체합니다. 이 파일 전체를 복사합니다. 수정되지 않은 파일은 빨리 건너 뜁니다 (타임 스탬프와 파일 크기 만 확인하면됩니다). 단일 큰 파일의 경우 cp보다 우수합니다.