2008-08-11 2 views
10

다른 작업 (다른 데이터베이스 보유)이 있지만 두 작업 중 하나를 사용할 수 있기를 원할 때 다른 작업이 실패 할 경우 어떻게해야합니까? 두 데이터 모두 "실시간에 가까운"데이터입니까?대체 시나리오를위한 MySQL 복제

물론 x 분마다 전체 데이터베이스 덤프를 만들 수는 없습니다.

제가 Binary Log에 대해 읽었습니다. 그 방법은 제가 가야 할 필요가 있습니까? 폴백 서버를 많이 늦추지 않을까요? 바이너리 로그에 일부 테이블을 포함하지 않는 방법이 있는가? 데이터가 변경되지 않아도 상관 없다.

+0

나는 정확히 똑같은 문제를 겪어 왔지만 아직 무엇을해야하는지 잘 모르고있다. [여기에 제안 된 몇 가지 다른 제안과 내 내 질문이야] (http://stackoverflow.com/questions/3798/full-complete-mysql-db-replication-ideas-what-do-people-do)./mp – mauriciopastrana

답변

2

확실히 이진 로그가 좋습니다. 그러나 으로 MySQL과 같은 서버간에 앞뒤로 뒤집을 수는 없습니다.

하나의 서버는 마스터이고 다른 하나는 슬레이브입니다. 당신은 마스터에게 쓰기/읽기하지만, 슬레이브 서버에서만 읽을 수 있습니다. 슬레이브에 글을 쓰면 싱크가 맞지 않아 다시 동기화 할 수있는 쉬운 방법이 없습니다 (기본적으로 마스터를 새로운 노예로 바꾸어야합니다. 그러나 이것은 지루한 수동 프로세스입니다).

실제 핫 스왑 가능 백업 데이터베이스가 필요한 경우 이외의 시스템으로 이동해야 할 수 있습니다. 원하는 경우 최악의 시나리오에서 즉시 사용할 수있는 읽기 전용 라이브 백업 (마스터가 영구적으로 파괴 될 수 있음) 이진 로그가 적합합니다.

3

master-master 복제 시나리오를 약간 변형 할 수 있습니다. 복제 할 데이터베이스를 지정하고 각 서버의 복제를 제한 할 수 있습니다.

server1의 경우 server2의 경우 을 추가하고 server2의 경우 --replicate-do-db=server_1_db을 my.cnf (또는 Windows의 my.ini)에 추가합니다. 이것은 server_1_db에 대한 명령문 만 server2에 복제되고 verse는 복제됨을 의미합니다.

또한 실수로 DROP DATABASE 문 또는 그와 유사한 문구의 안전을 제공하지 않으므로 정기적으로 전체 백업을 수행하고 복제에만 의존하지 않도록하십시오.