24.2.4 플러그인 작성
- 24.2.4.1 플러그인 제작 개요
- 24.2.4.2 플러그인 데이터 구조
- 24.2.4.3 플러그인 라이브러리의 컴파일 및 설치
- 24.2.4.4 Full-Text Parser 플러그인 작성
- 24.2.4.5 Daemon 플러그인 작성
- 24.2.4.6 INFORMATION_SCHEMA 플러그인 작성
- 24.2.4.7 Semisynchronous Replication 플러그인 작성
- 24.2.4.8 Audit 플러그인 작성
- 24.2.4.9 Authentication 플러그인 작성
- 24.2.4.10 Password-Validation 플러그인 작성
플러그인 라이브러리를 작성하려면 라이브러리 파일에 포함 된 플러그인을 나타내는 필요한 디스크립터 정보를 제공하고 각 플러그인 인터페이스 함수를 작성해야합니다.
모든 서버 플러그인은 플러그인 API에 정보를 제공하는 일반 기술자 및 특정 유형의 플러그인 플러그인 인터페이스에 대한 정보를 제공하는 유형별 기술자가 있어야합니다. 일반 기술자의 구조는 모든 플러그인 타입으로 동일합니다. 유형별 기술자의 구조는 플러그인 유형에 따라 달라 플러그인이 실행해야하는 작업의 요구 사항에 의해 결정됩니다. 서버 플러그인 인터페이스를 사용하면 플러그인은 상태 변수 및 시스템 변수를 노출 할 수 있습니다. 이 변수는 SHOW STATUS
문이나 SHOW VARIABLES
문 및 해당 INFORMATION_SCHEMA
테이블을 통해 볼 수 있습니다.
클라이언트 플러그인의 경우 아키텍처는 조금 다릅니다. 각 플러그인에는 기술자가 있어야하지만 일반 기술자 및 유형별 기술자로 분할되어 있지 않습니다. 그렇지 않고, 기술자는 모든 클라이언트 플러그인에 공통되는 고정 된 일련의 멤버로 시작이 일반 회원의 뒤에 특정 플러그인 타입을 구현하는 데 필요한 추가 멤버가 계속됩니다.
플러그인은 C 또는 C ++ (또는 C 호출 규칙을 사용할 수있는 다른 언어)로 작성할 수 있습니다. 플러그인은 동적으로로드 및 언로드되기 때문에 운영 시스템이 동적로드를 지원해야 호출 응용 프로그램을 (정적 아니라) 동적으로 컴파일하고있을 필요가 있습니다 . 서버 플러그인의 경우, 이것은 mysqld를 동적으로 컴파일 할 필요가 있다는 것을 의미합니다.
서버 플러그인은 실행중인 서버의 일부가 될 코드가 포함되어 있으므로 플러그인을 작성할 때 서버 코드를 작성하는 경우에 해당하는 모든 제한 사항을 준수해야합니다. 예를 들어 libstdc++
라이브러리의 함수를 사용하려고하면 문제가 발생할 수 있습니다. 이러한 제약은 서버의 향후 버전에서 변경 될 수 있기 때문에 서버 업그레이드하여 기존 서버에 생성 된 플러그인 개정이 필요할 수 있습니다. 이러한 제한 사항은 섹션 2.9.4 "MySQL 소스 구성 옵션" 및 섹션 2.9.5 "MySQL의 컴파일에 관한 문제" 를 참조하십시오.
어떤 응용 프로그램이 플러그인을 사용할지 알 수 없기 때문에 클라이언트 플러그인 작성자는 호출 애플리케이션의 기호에 의존하지 않도록하십시오.