MySQL, MariaDB

ProxySQL 은 서비스에 필요한 설정값을 어디에 저장하고 재사용할까?

SungWookKang 2023. 8. 4. 10:49
반응형

ProxySQL 서비스에 필요한 설정값을 어디에 저장하고 재사용할까?

 

l  Version : MySQL, ProxySQL

 

ProxySQL에서 서버를 추가하거나, 사용자를 등록하는 설정을 변경하고 적용하려면 관리자 모드 접속을 통해서 필요한 내용을 수정하고, 수정한 내용을 서비스 중단 없이 runtime 적용할 있다. 그리고 서비스 재시작시 기존의 설정을 유지하기 위해서는 현재 설정 값을 데이터베이스 또는 디스크로 저장하여 재사용 있다.

 

아래 그림을 참고하여 설명하면, 일반적으로 관리자 모드에 접속하여 수정하는 부분은 MEMORY영역이다. 그렇기 때문에 관리자에서 수정하였을 경우에는 아직 메모리에서만 적용된 것으로 서비스에 적용되지 않은 상태이다. (아마도 실수가 발생하였을 서비스 보호를 위해서 변경 사항을 자동으로 적용시키지 않는 모델로 디자인한 같다.) 그리고 LOAD 명령어를 사용하여 RUNTIME영역에 적용을 있다. RUNTIME 적용되면 서비스에 반영되어 운영된다. 그리고 메모리 값을 수정하였더라도, 런타임 기준으로 메모리 롤백이 필요할 런타임의 값을 메모리로 SAVE하여 RUNTIME설정을 메모리로 저장할 있다. 이러한 과정을 영역별로 LOAD SAVE 있다.

 

 

ProxySQL 서비스를 시작할 config 파일을 읽어들여 datadir 위치를 확인한다. 다음에 datadir 경로에 위치한 데이터베이스 파일 또는 디스크 파일이 있는지 여부를 확인하여 해당 파일을 읽어 설정 값으로 사용한다. 일반적인 설치를 진행하였다면 config 파일은 아래 경로에 존재한다.

/etc/proxysql.cnf

 

 

datadir 경로에서 데이터베이스 파일이 발견되면 ProxySQL 지속형 온디스크 데이터베이스(proxysql.db) 읽어 메모리 구성을 초기화한다. 따라서 디스크는 메모리에 로드된 다음 런타임 구성으로 전파된다. 데이터베이스 파일이 없는 경우에는 config 파일의 설정 값을 읽어 메모리 데이터베이스에 적용한 다음 온디스크 데이터베이스에 저장되고 런타임에 적용한다.

 

설정 값을 사용할 데이터베이스 파일이 발견되면 config 파일의 설정 값은 사용되지 않는다는 점에 유의해야 한다. , 정상적인 시작 중에 ProxySQL 지속형 온디스크 데이터베이스에서만 메모리 구성을 초기화 한다.

 

ProxySQL 시작할 config 파일의 설정값을 메모리 런타임에 사용하기 위해서는 아래와 같은 순서를 적용할 있다.

1.       최신의 Config 파일을 배포한다. 일반적인 설치를 진행하였다면 아래 경로에 설정 파일이 위치한다.

/etc/proxysql.cnf

 

2.       배포한 Config 파일에 적절한 권한 부여한다. 실습에서는 775 권한을 부여하였다.

sudo chmod 775 proxysql.cnf

 

3.       실행중인 ProxySQL 서비스를 중지한다. 서비스 중지전에 유입되는 트래픽은 다른 곳으로 라우팅 되도록 하여 서비스 장애가 발생하지 않도록 주의한다.

sudo service proxysql stop

 

4.       기존의 데이터베이스 설정이 사용되지 않도록 데이터베이스 파일을 삭제한다.

sudo rm -rf /var/lib/proxysql/proxy*

 

5.       ProxySQL 서비스를 시작한다. 이때 initial 옵션을 함께 사용한다.

sudo service proxysql start initial

 

 

실제 현업에서 ProxySQL 운영한다고 하면 필요에 따라 다수의 ProxySQL 운영하는 환경이 발생한다. 이러한 환경에서는 서버의 설정 파일을 수정하고 이력을 관리하는 것이 매우 중요하다. 그렇기 때문에 직접 서버에 접속하여 설정 파일을 수정하는 것은 이력이 남지 않아 매우 불편하면서도 위험한 상황이 발생할 있다. 그래서 정책적으로 config파일을 기준으로 수정하고, 이력 관리는 Git 등을 사용하면 안전한 이력 관리를 있다. 그리고 서비스 시작 데이터베이스 정보가 아닌 config 값을 사용하면 혼란없이 다수의 서버 환경에서 안전한 관리가 가능하다.

 

 

 

[참고자료]

l  Configuration system : https://github.com/sysown/proxysql/blob/master/doc/configuration_system.md

 

 

 

 

2023-08-04 / Sungwook Kang / http://sungwookkang.com

 

MySQL, ProxySQL, ProxySQL설정, ProxySQL 구성관리, ProxySQL 시작

반응형