24.2.4.5 Daemon 플러그인 작성
데몬 플러그인은 서버에서 실행되지만 서버와 통신하지 않는 코드에 사용되는 간단한 유형의 플러그인입니다. 이 섹션에서는 MySQL 소스 배포판의 plugin/daemon_example
디렉토리에있는 플러그인의 예를 사용하여 데몬 서버 플러그인을 만드는 방법에 대해 설명합니다. 이 디렉토리에는 daemon_example
라는 데몬 플러그인에 대한 daemon_example.cc
라는 소스 파일이 포함되어 있으며,이 데몬 플러그인은 데이터 디렉토리의 mysql-heartbeat.log
라는 파일에 하트 비트 문자열 정기적 인 간격으로 씁니다.
데몬 플러그인을 작성하려면 플러그인의 소스 파일에 다음 헤더 파일을 포함합니다. 플러그인의 기능 및 요구 사항에 따라 다른 MySQL의 헤더 파일이나 일반적인 헤더 파일이 필요할 수도 있습니다.
#include <mysql/plugin.h>
plugin.h
는 MYSQL_DAEMON_PLUGIN
서버 플러그인 유형 및 플러그인의 선언에 필요한 데이터 구조를 정의합니다.
daemon_example.cc
파일은 라이브러리 디스크립터를 다음과 같이 설정합니다. 이 라이브러리 디스크립터에는 하나의 일반 서버 플러그인 기술자가 포함되어 있습니다.
mysql_declare_plugin(daemon_example) { MYSQL_DAEMON_PLUGIN, &daemon_example_plugin, "daemon_example", "Brian Aker", "Daemon example, creates a heartbeat beat file in mysql-heartbeat.log", PLUGIN_LICENSE_GPL, daemon_example_plugin_init, /* Plugin Init */ daemon_example_plugin_deinit, /* Plugin Deinit */ 0x0100 /* 1.0 */, NULL, /* status variables */ NULL, /* system variables */ NULL, /* config options */ 0, /* flags */ } mysql_declare_plugin_end;
name
멤버 ( daemon_example
)는 INSTALL PLUGIN
과 UNINSTALL PLUGIN
등의 문에서 플러그인을 참조하는 데 사용할 이름을 지정합니다. 이것은 SHOW PLUGINS
또는 INFORMATION_SCHEMA.PLUGINS
에 의해 표시되는 이름이기도합니다.
플러그인 디스크립터의 두 번째 멤버 daemon_example_plugin
은 유형별 데몬 플러그인 디스크립터를 가리 킵니다. 이 구조체는 유형별 API 버전 번호만으로 구성되어 있습니다.
struct st_mysql_daemon daemon_example_plugin= { MYSQL_DAEMON_INTERFACE_VERSION };
유형별 구조는 인터페이스 기능이 없습니다. 서버와 플러그인 간의 통신은 없지만 서버는 일반 플러그인 디스크립터에서 초기화 함수 및 초기화 해제 함수를 호출하여 플러그인을 시작 및 중지합니다.
daemon_example_plugin_init()
는 하트 비트 파일을 열고 정기적으로 동작하는 스레드를 생성하고 다음 메시지를 파일에 기록합니다.daemon_example_plugin_deinit()
은 파일을 닫고 다른 정리 작업을 수행합니다.
플러그인 라이브러리의 오브젝트 파일을 컴파일 및 설치하려면 섹션 24.2.4.3 "플러그인 라이브러리의 컴파일 및 설치" 단계를 사용합니다. 라이브러리 파일을 사용하려면 라이브러리 파일이 플러그인 디렉토리 ( plugin_dir
시스템 변수에 지정된 디렉토리)에 설치되어 있어야합니다. daemon_example
플러그인의 경우 소스에서 MySQL을 빌드 할 때 컴파일 및 설치됩니다. 이것은 바이너리 배포판에 포함됩니다. 빌드 프로세스에서는 libdaemon_example.so
라는 공유 객체 라이브러리가 생성됩니다 (접미사는 플랫폼에 따라 달라질 수 있습니다.)
플러그인을 사용하려면 플러그인을 서버에 등록합니다. 예를 들어, 플러그인을 실행시에 등록하려면 다음 문을 사용합니다 (필요에 따라 접미사를 변경합니다).
mysql> INSTALL PLUGIN daemon_example SONAME 'libdaemon_example.so';
플러그인 로딩에 대한 추가 정보는 섹션 5.1.8.1 "플러그인 설치 및 제거" 를 참조하십시오.
플러그인의 설치를 확인하려면 INFORMATION_SCHEMA.PLUGINS
테이블을 조사하거나 SHOW PLUGINS
문을 사용합니다.
플러그인이로드되면 플러그인은 데이터 디렉토리의 mysql-heartbeat.log
라는 파일에 하트 비트 문자열을 일정한 간격으로 씁니다. 이 파일은 무제한으로 증가하므로 플러그인이 제대로 작동하는 것을 확인한 후 파일을 언로드하십시오.
mysql> UNINSTALL PLUGIN daemon_example;