2010-06-07 2 views
2

이것은 프리랜서에서 MySQL에 대한 결과와 함께하는 방법론 질문입니다. 기존 전용 서버에서 새 서버로 마이그레이션하는 방법이 있습니까? 중간에 데이터 손실없이 - 중단 시간없이? 과거에는 새로운 서버가 올라간 (즉, 모든 파일이 전송되고, 시스템이 준비되고 준비되었습니다), 이전 서버를 다운시킬 때까지 MySQL 데이터를 잃어 버렸습니다 하나가 이어짐). 또한 DNS 등이 새로 고침되는 짧은 기간도 있습니다.데이터를 손실하지 않고 중단 시간없이 서버를 마이그레이션하는 가장 좋은 방법 (?)

MySQL/root가 특정 시간 프레임 사이에 업데이트되거나 삽입 된 모든 데이터를 쉽게 전송할 수있는 방법이 있습니까?

+0

12-24 시간 내에 mySQL-wise가 얼마나 많은 활동을 기대합니까? –

답변

1

나는 미안한 페이지를 만들고 이전 서버에 올려 놓고 모든 데이터를 새로운 서버로 옮긴 다음 DNS를 전환합니다. 가동 중지 시간이 있지만.

+0

"글로벌 미안한 페이지"를 올려 놓을 수있는 방법이 있습니까? 서버의 여러 도메인에있는 여러 PHP/다른 스크립트에서 시작된 많은 MySQL 프로세스 ... – ina

+0

전체를 리디렉션하는 간단한 mod_rewrite 규칙을 만듭니다. 모든 도메인에 대한 미안한 페이지에 대한 요청 –

0

원본 서버에서 bin 로깅을 사용하도록 설정합니다. 시작한 후 DB 덤프를 만들어 새 서버로 전송하고 가져옵니다. 그런 다음 스위치를 변경할 준비가되면 DNS를 변경하고 (작업하는 동안 변경 사항이 적용되도록) 두 서버에서 사이트를 종료하십시오. binlogs를 새 서버로 복사하고 덤프의 날짜/시간에 시작하여 다시 실행하십시오.

+0

이것으로 Prob는 나의 MySQL DB가 지금까지 ~ 2GB 였기 때문에 DB를 전송하는 사이에 최소 30 분의 가동 중지 시간이있을 것입니다. db/table의 모든 항목에서 수정 된 항목 만 선택/덤프 할 수 있습니까? – ina

1

내가하고 싶은 일은 사이트를 닫고 다음 명령을 사용하여 다른 서버로 DB를 이동하기 시작한 것입니다 : 2 다음으로 모든 파일 (php ..etc)을 다른 서버로 이동하십시오 (상점 데이터가 있거나 이미지 업로드와 같은 매시간 파일). DNS가 새 서버로 모두 변경되는 동안 이전 서버를 새 DB 서버로 지정하십시오.

1

가장 긴 중단 시간은 DNS 스위치에서 발생합니다. 모든 클라이언트 캐시가 만료 될 때까지 몇 시간에서 며칠이 걸릴 수 있습니다.

그것을 방지하려면 : 새 서버에

  1. 설정 응용 프로그램을 더 허용 무엇인지에 따라 이전에 nginx를 함께 이전, 아니면 그냥 프록시 HTTP 요청에 DB에 액세스 할 수 있습니다.
  2. 그러면 DNS 서버로 전환되는 일부 클라이언트는 새로운 서버로 이동하고 일부는 새 서버로 이동합니다. 여기서 모든 요청이 새 서버로 이동하는지 24 시간 이상 기다릴 수 있습니다.
  3. DNS 스위치 - 리허설 mysql 전환.
    • '유감스러운/유지 관리 페이지'를 만드십시오. 그런 재 작성 작업을 수행하는 방법에 대한 지침이 많이 있습니다. 당신은 어쨌든 그것을 필요로 할 것입니다.
    • 시간이 용인 할 수 있다면 얼마나 빨리 덤프 - 전송 - 복구 db를 측정 할 수 있는지 측정하십시오 - 이것은 가장 간단합니다. 그러나 약간의 여백을 주어야합니다.
    • 이전이 너무 느리면 - binlog 방법은 previos 답변에서 제안 된
    • 새로운 서버를 mysql slave 만드는 방법으로 최소한의 다운 타임을 얻을 수 있습니다. 서버에서 binlog를 다운로드하는 것만으로 전체 로그를 전송할 수 있습니다. , 아마도 최소한의 부하 노예 동안 마스터는 단지 몇 초 뒤에있을 것이며 앱이 내려지면 매우 빨리 따라 잡을 것입니다. how to force slave to catch up을보십시오.
  4. 유지 관리 모드를 활성화하고 마스터 db를 잠그고 슬레이브가 새로운 마스터가 될 때까지 기다리며 app config를 새 db로 바꾸고 유지 관리를 비활성화하고 응용 프로그램을 전환하는 등의 스크립트를 작성하십시오. .이 방법을 사용하면 스스로 명령을 입력하고 오류를 피하기 위해 스테이징 환경을 테스트 할 수 있습니다. (슬레이브가 많은 경우를 대비하여 더 큰 mysql 시간 초과를 설정하는 것을 잊지 마십시오.)
  5. 여기에서 이전 스크립트 단계

또한 로컬 파일 시스템에 파일 업로드를 사용하는 경우 rsync에서 변경 사항을 검색하는 데 많은 시간이 걸릴 수 있기 때문에 이러한 파일은 db와 동기화하는 데 많은 어려움이 있습니다.

관련 문제