DB에서 Curl 날리기

Hyeseong·2022년 1월 7일
0

mysql

목록 보기
2/4

DB에서 발생한 CRUD를 통하여 외부 API를 호출하고 싶다면 어떻게 해야할까요?

정답 UDF

User Define Function

준비물 :

1. 불글의 구글링 의지

2. stackoverflow

링크 : https://stackoverflow.com/questions/27587333/mysql-udf-sys-exec-doesnt-work/52173646
  • 파일 가져오기 : https://github.com/mysqludf/lib_mysqludf_sys
  • 터미널에서 깃으로 가저온 파일 경로로 갑니다.
  • gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -m64 -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so 명령어 실행시키기
    • 만약 32비트 OS일 경우 -m64를 -m32로 바꾸세요.
  • 아래 명령어를 mariadb shell에서 수행하세요.
    • SHOW VARIABLES LIKE 'plugin_dir';
  • 출력된 경로로로 가서 생성된 lib_mysqludf_sys.so파일을 넣어주세요.
  • 아래 명령어를 mariadb client shell에서 돌려줍니다.
    • CREATE FUNCTION sys_exec RETURNS INT SONAME 'lib_mysqludf_sys.so';
  • 그 다음은 trigger를 이용해서 특정 트랜잭션이 수행되면 curl을 날리도록 하면되요.
MariaDB [stt]> create trigger channel_sync
    -> after update on c_server
    -> for each row
    -> begin
    -> declare result int;
    -> set result = (select sys_exec("curl -v http://192.168.20.124:55532/monitor/channel-sync"));
    -> end;//
profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글