• 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. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 1. MySQL 내부 사양
    2. MySQL 플러그인 API
    1. 플러그인 API의 특징
    2. 플러그인 API의 구성 요소
    3. 플러그인 유형
    4. 플러그인 작성
    1. 플러그인 제작 개요
    2. 플러그인 데이터 구조
    3. 플러그인 라이브러리의 컴파일 및 설치
    4. Full-Text Parser 플러그인 작성
    5. Daemon 플러그인 작성
    6. INFORMATION_SCHEMA 플러그인 작성
    7. Semisynchronous Replication 플러그인 작성
    8. Audit 플러그인 작성
    9. Authentication 플러그인 작성
    10. Password-Validation 플러그인 작성
    3. 플러그인을 위한 MySQL서비스
    4. MySQL에 새로운 함수 추가
    5. MySQL 디버그 및 이식
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

24.2.4.7 Semisynchronous Replication 플러그인 작성

이 섹션에서는 MySQL 소스 배포판의 plugin/semisync 디렉토리에있는 플러그인 예제를 사용하여 준 동기 복제 서버 플러그인을 만드는 방법에 대해 설명합니다. 이 디렉토리에는 rpl_semi_sync_master 및 rpl_semi_sync_slave 라는 마스터 플러그인 및 슬레이브 플러그인의 소스 파일이 포함되어 있습니다. 여기에서는 플러그인 프레임 워크를 설치하는 방법에 대해서만 설명합니다. 플러그인 복제 기능을 구현하는 방법은 소스를 참조하십시오.

준 동기 복제 플러그인을 작성하려면 플러그인 소스 파일에 다음 헤더 파일을 포함합니다. 플러그인의 기능 및 요구 사항에 따라 다른 MySQL의 헤더 파일이나 일반적인 헤더 파일이 필요할 수도 있습니다.

#include <mysql/plugin.h>

plugin.h 은 MYSQL_REPLICATION_PLUGIN 서버 플러그인 유형 및 플러그인을 선언하는 데 필요한 데이터 구조를 정의합니다.

마스터 측의 경우 semisync_master_plugin.cc 에는 rpl_semi_sync_master 라는 플러그인 다음의 일반 기술자가 포함되어 있습니다.

mysql_declare_plugin(semi_sync_master)
{
  MYSQL_REPLICATION_PLUGIN,
  &semi_sync_master_plugin,
  "rpl_semi_sync_master",
  "He Zhenxing",
  "Semi-synchronous replication master",
  PLUGIN_LICENSE_GPL,
  semi_sync_master_plugin_init, /* Plugin Init */
  semi_sync_master_plugin_deinit, /* Plugin Deinit */
  0x0100 /* 1.0 */,
  semi_sync_master_status_vars, /* status variables */
  semi_sync_master_system_vars, /* system variables */
  NULL,                         /* config options */
  0,                            /* flags */
}
mysql_declare_plugin_end;

슬레이브의 경우 semisync_slave_plugin.cc 에는 rpl_semi_sync_slave 라는 플러그인 다음의 일반 기술자가 포함되어 있습니다.

mysql_declare_plugin(semi_sync_slave)
{
  MYSQL_REPLICATION_PLUGIN,
  &semi_sync_slave_plugin,
  "rpl_semi_sync_slave",
  "He Zhenxing",
  "Semi-synchronous replication slave",
  PLUGIN_LICENSE_GPL,
  semi_sync_slave_plugin_init, /* Plugin Init */
  semi_sync_slave_plugin_deinit, /* Plugin Deinit */
  0x0100 /* 1.0 */,
  semi_sync_slave_status_vars,  /* status variables */
  semi_sync_slave_system_vars,  /* system variables */
  NULL,                         /* config options */
  0,                            /* flags */
}
mysql_declare_plugin_end;

마스터 플러그인 및 슬레이브 플러그인의 두 경우 모두 일반 기술자는 유형별 기술자 초기화 함수 및 초기화 해제 함수 및 플러그인에 의해 구현되는 상태 변수와 시스템 변수에 대한 포인터가 있습니다. 변수의 설정 내용은 섹션 24.2.4.2.2 "서버 플러그인의 상태 변수 및 시스템 변수" 를 참조하십시오. 이후의 설명에서는 마스터 플러그인의 유형별 기술자 초기화 함수 및 초기화 해제 함수에 대해 설명하고 있습니다 만, 슬레이브 플러그인에도 마찬가지로 적용됩니다.

마스터의 일반 기술자의 semi_sync_master_plugin 멤버는 유형별 기술자를 의미하며 이것은 유형별 API 버전 번호만으로 구성되어 있습니다.

struct Mysql_replication semi_sync_master_plugin= {
  MYSQL_REPLICATION_INTERFACE_VERSION
};

초기화 함수 및 초기화 해제 함수의 선언은 다음과 같이됩니다.

static int semi_sync_master_plugin_init(void *p);
static int semi_sync_master_plugin_deinit(void *p);

초기화 함수는 포인터를 사용하여 트랜잭션 및 바이너리 로깅 "옵서버"를 서버에 등록합니다. 초기화가 성공한 후, 서버는 적절한시기에 옵저버를 호출합니다. (옵저버 내용은 소스 파일을 참조하십시오.) 초기화 해제 함수는 옵저버를 등록 해제하여 정리 작업을 수행합니다. 각 함수는 성공하면 0, 오류가 발생한 경우 1을 반환합니다.

플러그인 라이브러리의 오브젝트 파일을 컴파일 및 설치하려면 섹션 24.2.4.3 "플러그인 라이브러리의 컴파일 및 설치" 단계를 사용합니다. 라이브러리 파일을 사용하려면 라이브러리 파일이 플러그인 디렉토리 ( plugin_dir 시스템 변수에 지정된 디렉토리)에 설치되어 있어야합니다. rpl_semi_sync_master 플러그인 및 rpl_semi_sync_slave 플러그인의 경우 이러한 소스에서 MySQL을 빌드 할 때 컴파일 및 설치됩니다. 이들은 바이너리 배포판에 포함되어 있습니다. 빌드 프로세스에서는 semisync_master.so 및 semisync_slave.so 라는 공유 객체 라이브러리가 생성됩니다 (접미사는 플랫폼에 따라 달라질 수 있습니다.)

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