본문 바로가기
Dev/DataBase

MaxScale - Filter

by nakanara 2024. 10. 25.
반응형

MaxScale에서 사용자 정의 함수(UDF)를 사용하는 경우 Master에서 실행하도록 설정되어 있습니다.
함수 안에서 데이터를 변경할 수 있는 가능성이 있으며, MaxScale에서는 판단이 불가능 한 점이 있습니다. 다만 이런 부분으로 인해 단순한 포맷팅의 목적으로 SELECT 문에서 함수를 사용하는 경우 성능적으로 부하분산의 의미가 다소 떨어질 가능성이 있습니다. 

MaxScale에서 사용자 정의 함수(UDF)를 사용하는 경우, SELECT 쿼리를 읽기 전용으로 인지하여 슬레이브로 보내고, 데이터 변경 쿼리(예: UPDATE, INSERT, DELETE)는 마스터로 보내는 정책을 유지하고 싶다는 요청에 대해 아래와 같은 해결책을 고려할 수 있습니다.

* 쿼리 라우팅 필터 적용
MaxScale은 쿼리 라우팅을 제어할 수 있는 쿼리 라우팅 필터를 제공합니다. 이를 통해 특정 사용자 쿼리나 함수에 대해 라우팅을 세밀하게 제어할 수 있습니다. 사용자 함수가 있는 경우에도 SELECT 쿼리를 슬레이브로 보내고, 변경 쿼리(UPDATE, INSERT, DELETE)는 마스터로 보내는 규칙을 적용할 수 있습니다.


# MaxScale 설정 파일(maxscale.cnf) 수정

[Read-Write-Service]
type=service
router=readwritesplit
user=max
passwd=max
servers=server1,server2
router_options=master_accept_reads
filters=slave_check_filter

[slave_check_filter]
type=filter
module=regexfilter
options=/ignorecase/ # 대소문자 구분 안함

# 사용자 정의 함수를 포함한 SELECT 쿼리를 슬레이브로 라우팅
match=SELECT.*your_function_name.*
#match=SELECT.*(FN_USERFN1|GET_FN1|CUSTOM_FN).*

target=slave

# 업데이트, 삽입, 삭제 쿼리는 마스터로 라우팅
exclude=/UPDATE|INSERT|DELETE/


# regexfilter 모듈을 사용하여 특정 쿼리를 패턴 매칭.
- SELECT 쿼리와 특정 함수가 포함된 쿼리를 감지하고 슬레이브로 라우팅.
-  UPDATE, INSERT, DELETE 쿼리는 마스터로 라우팅.
-  기본적으로는 읽기 전용 쿼리는 슬레이브로, 쓰기 작업은 마스터로 보내는 기본 정책을 유지.

# 라우팅 규칙의 작동 방식
- 쿼리 패턴 매칭: SELECT 쿼리에서 특정 사용자 함수(your_function_name)가 포함된 경우에만 슬레이브로 라우팅.
- 변경 쿼리 필터링: UPDATE, INSERT, DELETE가 포함된 쿼리는 슬레이브로 가지 않고 항상 마스터로 라우팅.
- 이를 통해 MaxScale은 함수에 상관없이 읽기 전용 쿼리를 슬레이브로 보낼 수 있고, 데이터 변경 쿼리는 마스터로 보내는 기본 정책을 유지할 수 있습니다.

# 기타 고려사항
- 쿼리 분석 부담: regexfilter는 쿼리를 분석하여 라우팅을 결정하기 때문에, 성능에 약간의 부담이 될 수 있습니다. 복잡한 쿼리나 매우 빈번한 쿼리에서는 성능 영향을 확인하는 것이 좋습니다.
- 함수 사용 최적화: 사용자 함수가 SELECT에서 자주 사용된다면, 해당 함수를 효율적으로 설계하고 필요한 인덱스를 최적화하는 것이 중요합니다.
- 이 방법을 통해 특정 사용자 함수가 사용된 SELECT 쿼리가 슬레이브로 라우팅되도록 하면서도 데이터 변경 쿼리는 마스터로 보내는 정책을 유지할 수 있습니다.

 

MaxScale 21.06 Filters - MariaDB Knowledge Base

 

MaxScale 21.06 Filters

Filters What Are Filters? The filter mechanism in MariaDB MaxScale is a means by which processing can be inserted into the flow of requests and responses between the client co...

mariadb.com

 

반응형

'Dev > DataBase' 카테고리의 다른 글

maxscale.cnf 설정 속성  (0) 2024.10.25
MariaDB my.cnf 설정 파일  (0) 2024.05.24
MHA vs MaxScale 장단점 비교  (0) 2024.05.06
MariaDB 간략한 정리  (0) 2024.01.18
MariaDB 이중화 솔루션 MaxScale  (0) 2023.12.06