2012-10-22 4 views
0

나는 유닉스 서버에서 많은 데이터베이스를 관리하고 mysqldump을 사용하여 이들 데이터베이스의 매일 백업을 수행한다. 이 데이터베이스 중 일부 (20 + GB)가 매우 큽니다. 압축 된 bz2 파일을 얻으려면 보통 bzip2을 사용하여 백업 .sql 파일을 압축합니다.유닉스에서의 bz2 파일 비교

백업 프로세스의 일부로 새 백업 파일의 크기가 이전 백업 파일의 크기보다 크거나 같은지 확인합니다.이 데이터베이스에 매일 데이터를 추가하지만 매우 드뭅니다 이러한 데이터베이스에서 데이터를 제거하십시오.

백업 파일 크기를 확인하는 것은 백업의 품질을 확인하는 것입니다. 새 백업이 이전 백업보다 작 으면 데이터베이스가 주로 크기가 커지기 때문에 다음 중 하나를 의미합니다. 데이터베이스에서 제거 된 경우 (어떤 경우에는 무엇을 체크 아웃해야합니까?) 또는 b) 백업에 문제가 발생했습니다 (그 경우에는 이유를 확인해야합니다 ...).

stat %s의 비교 (예 : test 사용)를 사용하여 bz2 파일의 크기를 비교하면 데이터베이스 크기가 증가하더라도 bz2 파일이 축소되었을 수 있습니다. 아마도 압축 효율이 더 높아 졌기 때문일 수 있습니다 .

그래서 어떻게 백업 파일의 크기를 비교할 수 있습니까?

  • 하나의 옵션은 .bz2에서 .sql로 이전 백업 파일의 압축을 풀고 이러한 .sql 파일의 크기를 비교하는 것입니다. 그러나 이들이 매우 큰 파일 (20 + GB)이기 때문에 압축/압축 해제에는 다소 시간이 걸릴 수 있습니다 ...
  • 또 다른 옵션은 이전 백업 파일을 .sql로 유지하고 다시. SQL 파일. 이것은 내가 선호하는 옵션이지만 하드 드라이브를 꽤 빨리 먹을 수 있기 때문에 많은 .sql 파일이 누락되지 않도록주의해야합니다.

또는 SO 커뮤니티의 누군가가 더 좋거나 더 밝은 아이디어를 가지고있을 수 있습니다 ...?

+0

내가이 위치로 마이그레이션하기 전에 왜 확인해야하는지 설명 할 수 있다면 유용 할 것입니다 현재와 ​​이전 백업 파일 사이의 크기 차이, 그리고 왜 이것이 로컬 파일과 같은 어딘가에 기록 될 수없는 이유는 무엇입니까? 감사. – Kev

+0

@Kev - 크기 비교에 동기를 부여하기 위해 Q를 편집했습니다. 백업 파일 크기를 파일 (아마도 압축 전)에 기록한 다음 새 백업 파일의 stat와 비교하기 위해 파일에서 읽는 것 - 내 질문에 대한 가능한 대답입니다. – amaidment

+0

입력 파일의 크기가 bzip2 파일에 저장되지 않으므로 (gzip과 달리) 가장 좋은 옵션은 별도로 저장하는 것입니다. – sendmoreinfo

답변

0

입력 파일을 여러 부분 (예 : 100MB 청크)으로 분할하여 따로 따로 비교할 수 있습니다. 크기가 실제로는 다른 입력에서도 동일하게 유지 될 수 있으므로 일반적으로 차이를 찾는 데 사용해서는 안됩니다. 대신 cmp와 같은 것을 사용하여 파일이 다른지 확인하십시오.

개별 파트의 bz2 파일을 함께 수집하여 완벽하게 유효한 다중 스트림 bz2 파일을 얻을 수 있습니다.이 파일은 문제없이 전체적으로 다시 압축 할 수 있습니다. bzip의 병렬 구현 인 pbzip을 살펴보고 smz/multi core 시스템에서 프로세스를 가속화하기 위해 병렬 bzip을 다중 스트림 bz2 파일로 정확하게 사용합니다.

파일을 부분으로 나누는 것이 좋습니다 : mysql 설정에 따라 일부 부품이 변경되지 않을 수도 있으며 데이터가 실제로 마지막에 추가 될 수도 있습니다. 이 경우 전체 덤프 중 작은 부분 만 비교하면됩니다. 그러면 프로세스 속도가 빨라집니다.

그럼에도 불구하고, 전체 데이터는 데이터를 분할하는 또 다른 방법이 가능

을 MySQL의 메모리에 데이터를 의지 하듯이, 추가 또는 제거 아무것도없이 변경 될 수 있습니다 (이 발생할 수 있습니다 예를 들어 명령을 OPTIMIZE) 수, 인식 InnoDB를 사용한다면 - mysql (my.cnf)를 사용하여 테이블 당 하나의 파일을 사용할 수 있으므로 a) 해당 파일을 개별적으로 bzip하고 실제로 변경되었을 수있는 테이블 만 비교하거나 (일부 테이블에 정적 데이터가있는 경우) b) 마지막으로 수정 된 파일을 저장합니다 테이블 파일의 날짜를 비교하고 미리 비교하십시오 (다시 정적 데이터가있는 테이블을 가지고있는 경우에만 유용합니다)