2010-08-20 6 views
3

master-master 복제가 성공적으로 작동했습니다. 올바르게 작동하고 모든 변경 사항이 슬레이브에도 반영됩니다.mysql을 사용하여 특정 레코드의 복제를 방지하는 방법

그러나 나는 노예가 모든 변화를 반영하는 것을 원하지 않습니다. 오직 내가 원하는 노예만을 노예에 반영해야합니다. 이것을 어떻게 할 수 있습니까?

+0

선택적으로 복제 할 레코드의 예와 그 이유는 무엇입니까? 그 해결책은 왜 당신이 원하는 것을하기보다는 이것을하려고하는 것일 수 있습니다. –

답변

1

슬레이브가 특정 데이터베이스 및 개별 테이블 (화이트리스트 또는 블랙리스트)에 대한 업데이트를 처리하지 못하게 할 수 있습니다 (자세한 내용은 slave configuration options 참조).

기준이 더 복잡한 경우 재검토해야 할 수도 있습니다.

1

내가 생각할 수있는 유일한 방법은 복제하지 않으려는 레코드를 필터링하는 VIEW를 마스터에 생성 한 다음 해당 VIEW를 복제하는 것입니다. 슬레이브에서는, 「VIEW」테이블은 VIEW 대신에 MYISAM/InnoDB가됩니다. 다른 테이블 유형 (예 : InnoDB-> MyISAM)으로 복제 할 수 있다는 것을 알고 있지만보기로는 해본 적이 없습니다.

1

달성하려는 것을 모른 채 말하기는 어렵습니다.

GRANT가 복제되지 않도록 mysql. * 테이블을 복제하지 않는 것이 좋습니다 (예 : Paul Dixon의 답변에서 제공하는 것과 같이) 복제를 통해 개별 테이블 또는 전체 데이터베이스의 변경을 방지 할 수 있습니다.

특정 유형의 명령문이 복제되지 않도록하려면 (예 : DELETE 쿼리) 복제하기 전에 MySQL 프록시를 사용하여 해당 쿼리를 다시 쓸 수 있습니다.

슬레이브에서 데이터베이스를 분할하려는 경우 (예 : 하나의 서버에서 A-M을 시작하고 다른 서버에서 N-Z로 시작하는 레코드) MySQL 프록시가 다시 도움을 줄 수 있습니다.

2

당신은 문 (들)을 복제하지 않으 전에

SET sql_log_bin=0; 

을 할 수 있습니다. 그들은 노예에게 보내지지 않을 것입니다. 당신이 그것을 원하지 않을 때

또는, 그 값을 설정하기 위해 응용 프로그램 측에서 각 연결을 구성 할 수 있습니다, 다음

SET sql_log_bin=1; 

을한다. 동일한 내용은 MySQL replication: temporarily prevent specific SQL statements replicating to the slaves?에서 찾을 수 있습니다.

관련 문제