programing

마스터와 슬레이브(MySQL)에서 테이블 인덱스를 다르게 할 수 있습니까?

skycolor 2023. 9. 24. 12:42
반응형

마스터와 슬레이브(MySQL)에서 테이블 인덱스를 다르게 할 수 있습니까?

마스터에서 읽기 전용 슬레이브에 다른 인덱싱을 설정할 수 있습니까?기본적으로 두 시스템의 요구사항이 다른 것을 감안하면 이것이 말이 되는 것 같지만, 문제가 생기지 않도록 확실히 하고 싶습니다.

저는 그렇게 생각합니다.복제 작업이 끝나면 슬레이브에서 인덱스를 삭제하고 원하는 인덱스를 만들 수 있습니다.MySQL은 (적어도 기본적으로) 데이터가 아닌 문을 복제하기 때문에 테이블에서 삽입, 업데이트 또는 선택하는 데 필요한 SQL을 변경할 필요가 없는 한 이를 눈치채면 안 됩니다.

이것은 분명히 단점이 있습니다.마스터에 없는 고유 키를 만들면 슬레이브에 삽입할 수 없는 데이터를 마스터에 삽입할 수 있습니다.인덱스를 사용하는 업데이트를 수행하는 경우 마스터에서는 빠르게 실행되지만 슬레이브에서는 테이블 스캔이 발생할 수 있습니다(사용자에게는 사용 가능한 인덱스가 없으므로).

마스터에서 DDL 변경이 발생한 경우(예: 인덱스 변경) 슬레이브로 전달되고 새 인덱스도 생성됩니다.

물론.전 줄곧 해요.제가 직면한 문제:

  • 인덱스 참조:FORCE/USE/IGNORE INDEX인에SELECTSwill error out
  • 인덱스 참조ALTER마스터의 문은 복제를 중단할 수 있습니다.
  • 유사시 노예를 주인으로 승격시키는 또 다른 단계를 추가
  • 스테이트먼트 기반 복제(표준)를 사용하고 있는 경우에는UNIQUE인덱스, 여하한INSERT... ON DUPLICATE KEY,INSERT IGNORE아니면REPLACE문은 극단적인 데이터 이동/분산을 야기할 것입니다.
  • 성능 차이(양호 및 불량 모두)

물론입니다. InnoDB 테이블을 슬레이브의 MyISAM 테이블에 복제하여 전체 텍스트 인덱스를 추가하는 것이 일반적인 관례라고 생각합니다.

언급URL : https://stackoverflow.com/questions/4412656/can-you-index-tables-differently-on-master-and-slave-mysql

반응형