• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 1. Replication 구성
    2. Replication 구현
    3. Replication 솔루션
    4. Replication Notes and Tips
    1. Replication 기능과 이슈
    2. MySQL 버전 간의 복제 호환성
    3. Replication 설정 업그레이드
    4. Replication 문제 해결
    5. Replication 버그 또는 문제를보고하는 방법
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

17.4.4 복제 문제 해결

지시에 따라도 복제 설치가 작동하지 않으면 먼저 할 것은 오류 로그에서 메시지를 확인하는 것입니다. 많은 사용자는 문제가 발생한 후에이를 충분히 실행하지 않고 시간을 잃게됩니다.

오류 로그에서 무엇이 문제 였는지를 모르는 경우 다음 방법을 시도해보십시오.

  • 마스터 바이너리 로깅이 활성화되어 있는지, SHOW MASTER STATUS 명령문을 발행하여 확인합니다. 로깅이 활성화되면 Position 은 제로가 없습니다. 바이너리 로깅이 유효하지 않은 경우, --log-bin 옵션으로 마스터를 실행하고 있는지 확인하십시오.

  • 마스터와 슬레이브 모두 --server-id 옵션에서 시작되었는지 및 ID 값이 각 서버에서 고유한지 확인합니다.

  • 슬레이브가 작동하는지 확인합니다. SHOW SLAVE STATUS 를 사용하여 Slave_IO_Running 및 Slave_SQL_Running 값이 모두 Yes 인지 여부를 확인하십시오. 그렇지 않은 경우, 슬레이브 서버를 시작할 때 사용하는 옵션을 확인하십시오. 예를 들어, --skip-slave-start 는 START SLAVE 문을 실행할 때까지 슬레이브 쓰레드가 시작하는 것을 방해합니다.

  • 슬레이브가 실행중인 경우 마스터와 연결이되었는지 여부를 확인합니다. SHOW PROCESSLIST 를 사용하여 I / O 스레드와 SQL 스레드를 찾아 내고 그 State 컬럼을 체크하고 그들에게 무엇이 표시되어 있는지 확인하십시오. 섹션 17.2.1 "복제 구현 정보" 를 참조하십시오. I / O 스레드 상태가 Connecting to master 인 경우 다음 사항을 확인하십시오.

    • 마스터에서 복제에 사용되는 사용자의 권한을 확인합니다.

    • 마스터의 호스트 이름이 올바른지 올바른 포트를 사용하여 마스터에 연결되어 있는지 확인합니다. 복제에 사용되는 포트는 클라이언트 네트워크 통신에 사용되는 포트와 동일합니다 (기본값은 3306 입니다). 호스트 이름의 경우, 그 이름이 올바른 IP 주소로 확인되는지 확인하십시오.

    • 네트워크가 마스터 또는 슬레이브에서 비활성화되어 있지 않은지 확인합니다. 구성 파일에 skip-networking 옵션을 찾습니다. 있으면 주석 처리하거나 삭제하십시오.

    • 마스터에 방화벽 또는 IP 필터링 구성이있는 경우, MySQL에 사용되는 네트워크 포트가 필터링되지 않았는지 확인합니다.

    • ping 이나 traceroute / tracert 를 사용하여 호스트에 도달하면 마스터에 도달 할 수 있는지 확인합니다.

  • 슬레이브가 이전 작동했는데 중지하면 일반적으로 마스터에서 성공한 문의 일부가 슬레이브에 실패한 것이 원인입니다. 마스터의 적절한 스냅 샷을 생성하고 슬레이브 쓰레드가 아닌 슬레이브에서 데이터를 변경하지 않은 경우, 이것은 결코 발생하지 않을 것입니다. 슬레이브가 갑자기 정지하는 경우, 그것은 버그인지, 또는 섹션 17.4.1 "복제 기능 및 문제" 에서 설명한 알려진 복제 제한 중 하나가 발생합니다. 버그의 경우보고 방법에 대한 설명을 섹션 17.4.5 "복제 버그 또는 문제를보고하는 방법" 에서 참조하십시오.

  • 마스터에 성공한 문이 슬레이브에서 실행하는 것을 거부하는 경우, 슬레이브 데이터베이스를 삭제하고 마스터에서 새로운 스냅 샷을 복사해서 전체 데이터베이스 재 동기화를 수행 할 수없는 경우 다음 단계 시도하십시오.

    1. 슬레이브에서 영향을받는 테이블이 마스터 테이블과 다른지 여부를 결정합니다. 이것이 어떻게 발생했는지를 이해하려고 노력하십시오. 그리고, 슬레이브 테이블을 마스터의 것과 동일하고 START SLAVE 를 실행하십시오.

    2. 이전 단계가 작동하지 않거나 맞지 않는 경우는 수동으로 업데이트를 한 후 (필요한 경우), 마스터에서 다음 문을 무시하는 것이 안전 여부를 이해하려고 노력하십시오.

    3. 슬레이브가 마스터에서 다음 문을 생략 할 수 있다고 판단하는 경우 다음 문을 실행합니다.

      mysql> SET GLOBAL sql_slave_skip_counter = N;
      mysql> START SLAVE;
      

      마스터에서 다음 문이 AUTO_INCREMENT 또는 LAST_INSERT_ID() 를 사용하지 않는 경우, N 값은 1이어야합니다. 그렇지 않은 경우, 값은 2 여야합니다. AUTO_INCREMENT 또는 LAST_INSERT_ID() 를 사용하는 문에 값 2를 사용하는 이유는 그들이 마스터의 바이너리 로그에서 두 개의 이벤트를 필요로하는 것입니다.

      섹션 13.4.2.4 "SET GLOBAL sql_slave_skip_counter 구문" 을 참조하십시오.

    4. 슬레이브가 마스터와 완전히 동기화 된 상태에서 시작되었는지 및 슬레이브 쓰레드 이외로 사용되는 테이블을 아무도 갱신하지 않은 것을 알고 있다면, 아마이 모순은 버그의 결과입니다. 최신 버전의 MySQL을 실행하는 경우이 문제를보고하십시오. 이전 버전을 실행하는 경우, 최신 운영 환경 릴리스로 업그레이드하여 문제가 지속되는지 여부를 판단 해보십시오.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved