• 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 기능과 이슈
    1. Replication and AUTO_INCREMENT
    2. Replication and BLACKHOLE 테이블
    3. Replication and Character Sets
    4. CREATE ... IF NOT EXISTS 문 복제
    5. CREATE TABLE ... SELECT 문 복제
    6. CREATE SERVER, ALTER SERVER 및 DROP SERVER 복제
    7. CURRENT_USER ()의 복제
    8. DROP ... IF EXISTS 문 복제
    9. 테이블 정의가 다른 마스터와 슬레이브에 복제
    10. Replication and DIRECTORY Table Options
    11. 호출되는 기능의 복제
    12. 복제 및 부동 소수점 값
    13. 복제 및 소수 초 지원
    14. 복제 및 FLUSH
    15. 복제와 시스템 함수
    16. 복제 및 LIMIT
    17. 복제 및 LOAD DATA INFILE
    18. 복제 및 REPAIR TABLE
    19. 복제 및 마스터 또는 슬레이브 Shutdowns
    20. 복제와 max_allowed_pa​​cket
    21. 복제 및 MEMORY 테이블
    22. 복제 및 임시 테​​이블
    23. mysql 시스템 데이터베이스의 복제
    24. 복제 및 쿼리 최적화
    25. 복제 및 예약어
    26. 복제중인 슬레이브 오류
    27. 서버 측 도움말 테이블의 복제
    28. Replication 및 서버 SQL 모드
    29. Replication 시도 및 시간 제한
    30. Replication 및 Time Zones
    31. Replication 및 트랜잭션
    32. Replication 및 트리거
    33. Replication 및 TRUNCATE TABLE
    34. Replication 및 변수
    35. Replication 및 Views
    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.1.11 호출되는 기능의 복제

사용자 정의 함수 (UDF) 및 저장 프로그램 (저장 프로 시저 및 함수, 트리거 및 이벤트) 등의 호출 기능의 복제에는 다음과 같은 특징이 있습니다.

  • 기능의 영향은 항상 복제됩니다.

  • 다음 문은 문 기반 복제를 사용하여 복제됩니다.

    • CREATE EVENT

    • ALTER EVENT

    • DROP EVENT

    • CREATE PROCEDURE

    • DROP PROCEDURE

    • CREATE FUNCTION

    • DROP FUNCTION

    • CREATE TRIGGER

    • DROP TRIGGER

    그러나 이러한 문을 사용하여 작성, 수정 또는 삭제하는 기능의 영향은 열 기반 리플리케이션을 사용하여 복제됩니다.

    참고

    호출하는 기능을 문 기반 복제를 사용하여 복제하려고하면 경고가 생성됩니다 : Statement is not safe to log in statement format. 예를 들어, 명령문 기반 응용 프로그램에서 UDF를 복제하려고하면 MySQL 서버는 현재 UDF가 결정적 여부를 확인할 수 없기 때문에이 경고가 생성됩니다. 호출되는 기능의 영향이 결정적임을 확실히 알고있는 경우는 이러한 경고를 무시해도 안전합니다.

  • CREATE EVENT 및 ALTER EVENT 의 경우 :

    • 이벤트의 상태는 지정된 상태에 관계없이 슬레이브에서 SLAVESIDE_DISABLED 로 설정됩니다 (이것은 DROP EVENT 에는 적용되지 않습니다).

    • 이벤트가 생성 된 마스터는 슬레이브에서 서버 ID에 의해 식별됩니다. INFORMATION_SCHEMA.EVENTS 의 ORIGINATOR 컬럼 및 mysql.event 의 originator 열이 정보가 저장됩니다. 자세한 내용은 섹션 21.7 "INFORMATION_SCHEMA EVENTS 테이블 ' 및 섹션 13.7.5.19 "SHOW EVENTS 구문" 을 참조하십시오.

  • 기능 구현은 마스터가 실패해도 이벤트 처리를 잃지 않고 슬레이브를 마스터로 사용할 수 있도록 재생 가능한 상태에서 슬레이브에 존재합니다.

다른 서버 (복제 마스터로 동작하고있었습니다)에서 생성 된 예약 된 이벤트가 MySQL 서버에 있는지 여부를 확인하려면 여기에 나타낸 바와 같은 방법으로 INFORMATION_SCHEMA.EVENTS 테이블을 조회 하십시오.

SELECT EVENT_SCHEMA, EVENT_NAME
    FROM INFORMATION_SCHEMA.EVENTS
    WHERE STATUS = 'SLAVESIDE_DISABLED';

또한 SHOW EVENTS 문을 다음과 같이 사용할 수 있습니다.

SHOW EVENTS
    WHERE STATUS = 'SLAVESIDE_DISABLED';

이러한 이벤트를 가진 복제 노예를 복제 마스터로 승격 할 때는 ALTER EVENT event_name ENABLED 를 사용하여 각 이벤트를 활성화해야합니다. 여기에서 event_name 은 이벤트의 이름입니다.

여러 마스터가 슬레이브에서 이벤트를 만드는 데 사용 된 서버 ID master_id 를 가진 마스터에서 생성 된 이벤트 만 확인하고 싶다면, 여기에서 같이 EVENTS 테이블에 대한 앞서의 쿼리를 수정 하고 ORIGINATOR 컬럼을 추가하십시오.

SELECT EVENT_SCHEMA, EVENT_NAME, ORIGINATOR
    FROM INFORMATION_SCHEMA.EVENTS
    WHERE STATUS = 'SLAVESIDE_DISABLED'
    AND   ORIGINATOR = 'master_id'

같은 방법으로 SHOW EVENTS 문 ORIGINATOR 를 사용할 수 있습니다.

SHOW EVENTS
    WHERE STATUS = 'SLAVESIDE_DISABLED'
    AND   ORIGINATOR = 'master_id'

마스터에서 복제 된 이벤트를 활성화하기 전에 슬레이브에서 MySQL 이벤트 스케줄러를 사용하지 않도록 설정 ( SET GLOBAL event_scheduler = OFF; 같은 문을 사용하여) 필요한 ALTER EVENT 문을 실행하고 서버를 다시 시작한 다음 슬레이브에서 이벤트 스케줄러를 다시 활성화하십시오 ( SET GLOBAL event_scheduler = ON; 같은 문을 사용).

나중에 새로운 마스터 리플리케이션 슬레이브로 강등하려면 ALTER EVENT 문에서 사용 된 모든 이벤트를 수동으로 해제해야합니다. 이것은 앞에서 언급 한 SELECT 문에서 이벤트의 이름을 별도의 테이블에 저장하거나 ALTER EVENT 문을 사용하여 이벤트를 식별하는 공통 프리픽스 ( replicated_ 등)에서 그 이름을 변경하는 것으로, 할 수 있습니다.

이벤트의 이름을 변경 한 경우이 서버를 리플리케이션 슬레이브로 강등 할 때 여기서 같이 EVENTS 테이블을 조회하여 이벤트를 확인할 수 있습니다.

SELECT CONCAT(EVENT_SCHEMA, '.', EVENT_NAME) AS 'Db.Event'
      FROM INFORMATION_SCHEMA.EVENTS
      WHERE INSTR(EVENT_NAME, 'replicated_') = 1;


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