2010-01-29 4 views
3

200GB/400Mrows mysql/innodb 데이터베이스가 있습니다. 알게된 것보다 훨씬 합리적입니다.거대한 mysql 데이터베이스를위한 안정적인 백업?

놀라운 문제 중 하나는 백업을 복원하는 것입니다. mysqldump는 거대한 sql 파일을 생성하고 새로운 데이터베이스로 다시 가져 오기 위해 약 일주일이 걸린다. (더 크고 작은 트랜잭션과 같이 빠르게 만들기, 가져 오기 중 키를 끄는 시도, 네트워크 압축 등. myisam import가 보인다. 2 배 빠르지 만 거래가 없을 것입니다.)

악화 -이 문제에 도움이되기를 바랍니다. 한 주 동안 200GB를 넘는 네트워크 연결은 깨질 가능성이 거의 없으며 SQL 가져 오기 프로세스를 비 연속적으로 수행 할 수 없습니다. - 사생활.

가장 좋은 방법은 무엇입니까? 내가 깨진 연결을 확인할 경우 지금은 수동으로 마지막 수입 테이블의 가장 기본 키를 확인하여 종료 할 때 알아 내기 위해 노력하고 기본적으로이 수행하는 펄 스크립트가 : 이건 정말 아니다

perl -nle 'BEGIN{open F, "prelude.txt"; @a=<F>; print @a; close F;}; print if $x; $x++ if /INSERT.*last-table-name.*highest-primary-key/' 

을 가야 할 길, 그래서 가장 좋은 방법은 무엇일까요?

답변

1

귀하의 MySQL 상자에 모든 데이터가 2 배가 될만큼 충분한 하드 드라이브 공간이 있습니까? 로컬 스토리지가 가장 좋지만 옵션이 아닌 경우 iSCSI를 사용하는 일종의 NAS 장치를 사용해 볼 수도 있습니다. 네트워크를 통해 계속 진행되고 있지만이 경우 OS가 상당히 슬림하고 재부팅 할 필요가 거의없는 NAS에만 의존하기 때문에 더 많은 처리량과 안정성을 얻을 수 있습니다.

+0

모두가 Amazon 클라우드에 있습니다.지금까지 충돌은 없었지만 아무런 이유없이 중간에 장애가 발생하면 백업 + 임의 임시 임시 스크립트를 복원하는 데 적어도 일주일이 소요될 것이라는 사실에 대해 기분이별로 좋지 않습니다. – taw

0

데이터베이스에 모든 것이 필요합니까?

당신은 아카이브 데이터베이스에있는 정보의 일부를 밀어 분명히이 응용 프로그램에 많이 의존하고 설정

명 아카이브에 기록을 볼 수 있도록 할 응용 프로그램에 무언가를 추가 할 수 있지만 그 수 해결책이 될 수 있을까요? 귀하의 DB는 아마도 더 커질 것입니다 ....

+0

장기적으로 그것을 고칠 필요가 있지만, 지금 당장 나는 그것을 올바르게 유지하려고 노력하고 있습니다. – taw

1

큰 데이터베이스를 백업하는 데 mysqldump를 사용할 수 없습니다 - 200G는 가능하지만 더 커지면 더 나 빠졌습니다.

가장 좋은 방법은 데이터베이스 디렉토리의 볼륨 스냅 샷을 찍은 다음 그 방법으로 압축하는 것입니다. 우리가 일반적으로 수행 한 작업입니다. 또는 다른 곳에서 rsync하십시오.

파일 시스템이나 블록 장치가 스냅 샷을 지원하지 않으면 기본적으로 문제가 있습니다. 백업을하기 위해 데이터베이스를 종료 할 수는 있지만, 그렇게하고 싶지는 않습니다.

복원하려면 그냥 다시 시작한 다음 다시 시작하고 innodb 복구가 끝날 때까지 기다려주십시오.

maatkit의 MK-병렬 덤프 및 복원 도구는 속도 현명한, mysqldump를보다 약간 더 나은 -하지만 나는 그들의 정확성


편집의 확신 100 % 아니에요 : 다시 읽기 문제는 파일 시스템 스냅 샷 + rsync가 아마도 최선의 방법이라고 생각합니다. 실제 시스템에 영향을주지 않고 (마지막 백업 이후 변경된 사항 만 전송하면 됨) 너무 많은 작업을 수행 할 수 있으며 연결이 실패하면 rsync를 재개 할 수 있으며 중단 된 부분부터 계속 진행됩니다.

+0

중요한 점은 mysql의 데이터 디렉토리에 ibdata 파일 (ibdata1 등)을 백업했는지 확인하는 것입니다. 이것은 innodb에 의해 사용되며 백업 없이는 잘못 될 것입니다. –

관련 문제