centos7에 Mysql,MariaDB UDF 설치 및 사용하기
사용목적
Mysql UDF는 (User Define Function) Mysql에서 외부 프로그램을 호출하거나 데이터를 전송할 때 사용됩니다.
CentOS7에 설치된 MariaDB에 udf 설치하는 방법을 정리합니다.
사전준비
마리아DB 10.3 설치
설치 순서
1. http://www.mysqludf.org 접속 UDF libraries 선택합니다.
2. lib_mysqludf_sys 다운로드합니다.
3. 압축을 풀고 mysql 또는 mariadb 가 설치된 서버에 업로드합니다.
- /usr/include/mysql 하위에 저장합니다.
- mysql 설치 후 상기 폴더가 보이지 않을 경우 설치(yum install mysql-devel)
- server 밑에 mysql.h파일을 사용할 것입니다.
4. 업로드 폴더로 이동후 소스컴파일을 진행합니다.
- centos7의 mariadb 10.3 기본 plugin 폴더인 /usr/lib64/mysql/plugin 밑에 컴파일
cd /usr/include/mysql/lib_mysqludf_sys-master
gcc -m64 -fPIC -Wall -I. -I/usr/include/mysql/server -shared lib_mysqludf_sys.c -o /usr/lib64/mysql/plugin/lib_mysqludf_sys.so
5. mariadb 접속 및 udf 생성 후 테스트
mysql -u root -p 'password'
mysql>use mysql;
mysql>DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;
mysql>DROP FUNCTION IF EXISTS sys_get;
mysql>DROP FUNCTION IF EXISTS sys_set;
mysql>DROP FUNCTION IF EXISTS sys_exec;
mysql>DROP FUNCTION IF EXISTS sys_eval;
mysql>CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so';
mysql>CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sys.so';
mysql>CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sys.so';
mysql>CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so';
mysql>CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
#test
mysql>select * from mysql.func;
mysql>select sys_eval('du -sh *') from dual;
#cpu
mysql>select sys_eval("top -n 1 | grep -i cpu\(s\)| awk '{print $5}' | tr -d "%id," | awk '{print 100-$1}'") from dual;
#memory used
mysql>select sys_eval("free | grep Mem | awk '{print $3}'") ;
마무리
서버 자원을 DB화 하거나 실시간 외부 프로그램 호출할 때 유용할 것으로 생각됩니다.