• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

proxysql 의 프로시져 select , update 분기

22.09.20 09:27 작성 조회수 293

0

안녕하세요?

강의 감사하게 잘 듣고 있습니다.

proxysql 의 프로시져 select , update 분기는 어떻게 설정해야하는지 궁금합니다.

일반적인 query 도 사용하지만 프로시져를 호출하는 경우도 많아서 궁금하네요.

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요.

ProxySQL에서 procedure의 분기에 대해서 문의 주셨는데요.

제가 간단하게 아래와 같이 테스트를 해봤습니다.

--테스트용 프로시저 생성 및 권한 부여

# docker exec -it -uroot db001 /bin/bash

mysql> use testdb;

 

create procedure sp_select()

begin

select @@hostname,now();

end

appuser에 procedure 실행 권한 부여

GRANT EXECUTE ON testdb.* TO appuser@'%';

 

외부에서 proxysql을 통해서 프로시저 호출

(Query rule 등록 전으로 db001로만 접속)

mysql -uappuser -papppass -h172.31.10.19 -P16033 -N -e "call testdb.sp_select"

proxysql접속 후 프로시저 호출에 대한 digest 값 확인

# mysql -h127.0.0.1 -P16032 -uradmin -pradmin --prompt "ProxySQL Admin>"

프로시저에 대한 digest 값 확인

SELECT digest,SUBSTR(digest_text,0,25),count_star,sum_time FROM stats_mysql_query_digest;

+--------------------+--------------------------+------------+----------+

| digest | SUBSTR(digest_text,0,25) | count_star | sum_time |

+--------------------+--------------------------+------------+----------+

| 0x30EBC689D70068BC | call testdb.sp_select | 30 | 11694 |

+--------------------+--------------------------+------------+----------+

 

digest 값을 이용해서 query rule 등록

ProxySQL Admin>INSERT INTO mysql_query_rules (rule_id,active,digest,destination_hostgroup)

VALUES(3,1,'0x30EBC689D70068BC',20);

ProxySQL Admin>LOAD MYSQL QUERY RULES TO RUNTIME;

ProxySQL Admin>SAVE MYSQL QUERY RULES TO DISK;

proxysql을 통해서 프로시저 호출

(Query rule 등록 후 db001~003 접속)

mysql -uappuser -papppass -h172.31.10.19 -P16033 -N -e "call testdb.sp_select"

위와 같이 digest 값으로 query rule을 등록해서 프로시저에 대한 처리를 할 수 있을 거 같습니다.

더 다양한 Query rule 등록 방식은 아래 URL을 참고하시기 바랍니다.

https://proxysql.com/documentation/proxysql-read-write-split-howto/

감사합니다.