MySQL 설치 · 8 min read · Sep 26, 2025

Debian 11에서 ProxySQL로 로드 밸런싱 MySQL 서버 설치하는 방법

ProxySQL은 VM, K8s, 베어 메탈 및 Docker 컨테이너와 같은 여러 환경에 설치할 수 있는 소형 고성능 MySQL 프록시입니다. ProxySQL은 연결 다중화 지원을 통해 MySQL 클러스터의 고가용성을 제공하는 오픈 소스 솔루션으로, 쓰기를 기본 서버로 라우팅하는 쿼리 규칙을 제공하고 읽기를 복제본에 분산합니다.

ProxySQL은 AMD64 (x86_64) 및 ARM64를 모두 지원합니다. 애플리케이션을 위한 애플리케이션 레이어 프록시를 제공하며, 장애 조치 감지를 통한 고급 쿼리도 제공합니다.

이 가이드에서는 Debian 11 서버에서 ProxySQL을 통해 MySQL 클러스터의 로드 밸런싱을 설치하고 설정합니다. Percona XtraDB 클라이언트와 함께 ProxySQL v2를 설치한 후, ProxySQL에 Percona XtraDB 클러스터를 추가하고, ProxySQL 모니터링 사용자 설정, 애플리케이션에 사용할 데이터베이스 및 사용자를 추가합니다.

전제 조건

이 가이드를 시작하려면 다음 요구 사항이 필요합니다:

  • Debian 11 시스템에서 실행되는 Linux 서버 - 이 예제에서는 호스트 이름이 ‘proxysql-deb‘인 Debian 서버를 사용합니다.
  • sudo/root 관리자 권한이 있는 비루트 사용자.
  • 완전히 구성된 MySQL 클러스터 또는 Percona XtraDB 클러스터.

그게 전부입니다. 모든 요구 사항이 준비되면 이제 ProxySQL 설치를 시작할 수 있습니다.

저장소 설정

이 가이드의 첫 번째 단계는 ProxySQL 및 Percona XtraDB 저장소를 서버에 추가하는 것입니다. Percona XtraDB 저장소는 ProxySQL에서 필요한 ‘percona-xtradb-cluster-client‘ 패키지를 설치하는 데 사용됩니다.

시작하려면 다음 apt 명령을 입력하여 일부 기본 종속성을 설치합니다. 프롬프트가 표시되면 y를 입력하고 ENTER를 눌러 진행합니다.

sudo apt install wget gnupg2 lsb-release curl apt-transport-https ca-certificates

install basic deps

다음으로, Percona XtraDB에 대한 저장소 파일을 다운로드하고 아래의 ‘dpkg‘ 명령을 통해 설치합니다.

wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb  
sudo dpkg -i percona-release_latest.generic_all.deb

install percona repo

이제 아래의 apt 명령을 사용하여 Debian 패키지 인덱스를 업데이트하고 새로 추가된 Percona XtraDB 저장소를 확인합니다.

sudo apt update

그런 다음, ‘percona-release‘ 명령을 입력하여 Percona XtraDB 클러스터 8.0 저장소를 활성화합니다.

sudo percona-release setup pxc80

enable percona repo

Percona XtraDB 저장소가 추가되었으므로, 이제 다음 명령을 실행하여 ProxySQL에 대한 GPG 키와 저장소를 추가합니다.

wget -q -nv -O /etc/apt/trusted.gpg.d/proxysql-2.4.x-keyring.gpg 'https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key.gpg'  
echo deb https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/$(lsb_release -sc)/ ./ | tee /etc/apt/sources.list.d/proxysql.list

새로운 저장소를 적용하기 위해 Debian 패키지 인덱스를 다시 업데이트하고 새로 고칩니다.

sudo apt update

add proxysql repo

Percona XtraDB 및 ProxySQL 저장소가 모두 추가되었으므로, 이제 ProxySQL 및 Percona XtraDB 클라이언트 패키지를 설치할 수 있습니다.

ProxySQL 및 Percona XtraDB 클러스터 클라이언트 설치

이 섹션에서는 Percona XtraDB 클라이언트 패키지와 함께 ProxySQL v2 패키지를 설치합니다. 다음 apt 명령을 입력하여 ProxySQL 및 Percona XtraDB 클라이언트 패키지를 모두 설치합니다.

sudo apt install proxysql2 percona-xtradb-cluster-client

프롬프트가 표시되면 y를 입력하여 확인하고 ENTER를 눌러 진행합니다.

install proxysql

ProxySQL이 설치되면 자동으로 실행되며 시스템 시작 시 자동으로 시작됩니다. 다음 systemctl 명령 유틸리티를 입력하여 ProxySQL 서비스 상태를 확인합니다.

sudo systemctl is-enabled proxysql  
sudo systemctl start proxysql

출력 ‘ enabled ‘는 ProxySQL이 시스템 부팅 시 자동으로 시작됨을 확인합니다. 그리고 출력 ‘ active (running) ‘는 ProxySQL이 실행 중임을 확인합니다.

proxysql status

다음으로, 기본 사용자 및 비밀번호 ‘admin‘로 ProxySQL 서버에 로그인하기 위해 다음 mysql 명령을 입력합니다.

mysql -u admin -padmin -h 127.0.0.1 -P 6032 --prompt='proxysql-deb> '

성공적으로 로그인하면 다음과 같은 ProxySQL 셸을 얻을 수 있습니다. Percona XtraDB 클라이언트를 통해 ProxySQL 관리 모듈에 연결되었습니다.

login percona xtradb

이제 다음 쿼리를 입력하여 ProxySQL 서버의 데이터베이스 목록을 가져옵니다. ProxySQL 서버에서 여러 데이터베이스를 확인할 수 있어야 합니다.

SHOW DATABASES;

list databases

ProxySQL 서버와 Percona XtraDB 클러스터 클라이언트가 설치되었으므로, 이제 MySQL 또는 Percona XtraDB 클러스터를 ProxySQL 서버에 추가하고 로드 밸런싱을 설정할 준비가 되었습니다.

MySQL 클러스터/Percona XtraDB 클러스터를 ProxySQL에 추가하기

ProxySQL 서버를 설치한 후 첫 번째 단계는 MySQL 또는 Percona XtraDB 클러스터를 ProxySQL 서버에 추가하는 것입니다. 이는 ProxySQL 셸을 통해 달성할 수 있습니다. 이 예제에서는 다음 세부정보를 가진 Percona XtraDB 클러스터를 사용합니다:

Hostname    IP Address      Port  
---------------------------------  
pxc01       192.168.5.15    3306  
pxc02       192.168.5.16    3306  
pxc03       192.168.5.17    3306

시작하기 전에 ProxySQL 셸에 로그인했는지 확인합니다. 그런 다음 다음 쿼리를 입력하여 MySQL 서버를 ProxySQL에 추가합니다. IP 주소와 포트의 세부정보를 MySQL 클러스터 세부정보로 변경해야 합니다.

INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.15',3306);  
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.16',3306);  
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.17',3306);

출력 ‘ Query OK, 1 row affected ‘는 MySQL 서버가 ProxySQL 서버에 추가되었음을 확인합니다.

add mysql server to proxysqlk

다음 쿼리를 입력하여 ProxySQL에서 사용할 수 있는 MySQL 서버 목록을 확인합니다. ProxySQL 서버에 세 개의 MySQL 서버가 추가된 것을 확인할 수 있어야 합니다.

SELECT * FROM mysql_servers;

MySQL 또는 Percona XtraDB 클러스터가 ProxySQL에 추가되었으므로, 이제 ProxySQL에서 Percona XtraDB 클러스터 모니터링을 설정해야 합니다.

ProxySQL 모니터링 사용자 설정

MySQL 또는 Percona XtraDB 클러스터가 정상인지 확인하기 위해 ProxySQL은 모든 사용 가능한 MySQL 서버의 백엔드를 지속적으로 모니터링합니다. 이를 위해 Percona XtraDB 클러스터에서 새 사용자를 생성한 다음 ProxySQL 서버에서 모니터링 사용자를 정의해야 합니다.

Percona XtraDB 클러스터 서버에 로그인하고 ‘mysql’ 명령을 통해 MySQL 셸에 접근한 후, 다음 MySQL 쿼리를 실행하여 비밀번호 ‘monitor’로 사용자 ‘monitor’를 생성합니다.

CREATE USER 'monitor'@'%' IDENTIFIED WITH mysql_native_password by 'monitor';  
GRANT USAGE ON *.* TO 'monitor'@'%';  
FLUSH PRIVILEGES;
SELECT USER,host FROM mysql.user;  
SHOW GRANTS FOR 'monitor'@'%';

다음으로 ProxySQL 서버로 이동하여 Percona XtraDB 클러스터 모니터링에 사용할 사용자를 정의하기 위해 다음 쿼리를 실행합니다. 이는 기본 변수 ‘mysql-monitor_username‘을 사용자 ‘monitor’로 변경하고 ‘mysql-monitor_password‘ 변수를 비밀번호 ‘monitor‘로 변경합니다.

UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';  
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_password';

ProxySQL 서버에서 Percona XtraDB 클러스터 모니터링을 위한 추가 매개변수를 업데이트하기 위해 다음 쿼리를 입력합니다.

UPDATE global_variables SET variable_value='2000' WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');

ProxySQL 서버 내의 ‘global_variables‘에서 변경한 내용을 저장하려면 다음 쿼리를 실행합니다.

LOAD MYSQL VARIABLES TO RUNTIME;  
SAVE MYSQL VARIABLES TO DISK;

이제 다음 쿼리를 실행하여 ProxySQL 서버에서 ‘mysql-monitor_‘에 대한 ‘global_variables’ 목록을 확인합니다.

SELECT * FROM global_variables WHERE variable_name LIKE 'mysql-monitor_%';

다음 스크린샷과 같은 출력을 얻어야 합니다 - 변수 ‘mysql-monitor_username’은 사용자 ‘monitor’로 설정되어야 하며, 변수 ‘mysql-monitor_password’는 비밀번호 ‘monitor’로 설정되어야 합니다. 또한 변수 ‘mysql-monitor_connect_interval’,’mysql-monitor_ping_interval’,’mysql-monitor_read_only_interval’의 값이 ‘2000‘으로 변경된 것을 확인할 수 있습니다.

verify monitoring proxysql

마지막으로, ProxySQL 서버에서 Percona XtraDB 클러스터의 모니터링 상태를 확인하기 위해 다음 쿼리를 입력합니다. 이는 ProxySQL 서버에서 모든 사용 가능한 Percona XtraDB 클러스터 서버로의 마지막 로그 상태와 마지막 핑 로그를 보여줍니다.

SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 6;  
SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 6;

성공적으로 실행되면 다음과 같은 출력을 얻어야 합니다.

ProxySQL 서버에서 Percona XtraDB 클러스터로의 마지막 연결 로그.

last connect

ProxySQL 서버에서 Percona XtraDB 클러스터로의 마지막 핑 로그.

ping proxysql

MySQL 또는 Percona XtraDB 클러스터가 ProxySQL 서버에 의해 모니터링되므로, 이제 애플리케이션에서 사용할 새 사용자를 설정할 준비가 되었습니다.

애플리케이션을 위한 데이터베이스 사용자 설정

ProxySQL 서버가 설치되고 구성되었으며, MySQL 또는 Percona XtraDB 클러스터가 데이터베이스 백엔드로 추가되었으므로, 이제 애플리케이션에서 사용할 새 사용자를 설정합니다. 따라서 애플리케이션은 MySQL 서버에 직접 연결하는 대신 기본적으로 포트 ‘6033‘에서 실행되는 ProxySQL 서버에 연결해야 합니다.

애플리케이션을 위한 새 사용자를 설정하려면 다음 단계를 따라야 합니다:

  • MySQL 클러스터 또는 Percona XtraDB 클러스터에서 새 사용자를 생성하고 권한을 설정합니다.
  • Percona XtraDB 클러스터 사용자를 ProxySQL 서버에 추가합니다 - ‘mysql_users‘ 테이블에 삽입합니다.

시작하려면 Percona XtraDB 클러스터 서버로 돌아가 루트 사용자로 MySQL 셸에 로그인합니다. 그런 다음 다음 쿼리를 입력하여 모든 데이터베이스에 접근할 수 있는 권한을 부여하여 새 MySQL 사용자를 생성합니다. 이 예제에서는 비밀번호 ‘sbpass‘로 새 사용자 ‘sbuser‘를 생성합니다. 또한 IP 주소 ‘192.168.5.85‘를 ProxySQL 서버 IP 주소로 변경해야 합니다.

CREATE USER 'sbuser'@'192.168.5.85' IDENTIFIED WITH mysql_native_password by 'sbpass';  
GRANT ALL PRIVILEGES ON *.* TO 'sbuser'@'192.168.5.85';  
FLUSH PRIVILEGES;

다음으로 ProxySQL 서버로 돌아가서 다음 쿼리를 실행하여 새 MySQL 사용자를 ProxySQL 서버에 추가합니다. MySQL 사용자는 ProxySQL 서버의 ‘mysql_users‘ 테이블에 추가되어야 합니다. 또한 이 문서 작성 시점에서 ProxySQL 서버는 암호화된 비밀번호를 지원하지 않습니다.

INSERT INTO mysql_users (username,password) VALUES ('sbuser','sbpass');

이제 다음 쿼리를 입력하여 ProxySQL 서버에서 변경 사항을 확인하고 저장합니다. 이를 통해 새 사용자가 준비되었으며, 이 MySQL 사용자를 애플리케이션에서 사용할 수 있습니다.

LOAD MYSQL USERS TO RUNTIME;  
SAVE MYSQL USERS TO DISK;

create user proxysql

이제 애플리케이션은 사용자 ‘sbuser‘와 비밀번호 ‘sbpass‘로 포트 6033에서 ProxySQL 서버에 연결해야 합니다.

데이터베이스 및 사용자 확인

이 섹션에서는 생성한 사용자 및 비밀번호를 사용하여 ProxySQL 서버에 연결하여 ProxySQL 설치를 확인합니다.

다음 ‘mysql’ 명령을 입력하여 새 사용자 ‘sbuser’와 비밀번호 ‘sbpass’로 ProxySQL 서버에 로그인합니다. 성공적으로 로그인하면 ProxySQL 서버 셸을 볼 수 있어야 합니다.

mysql -u sbuser -psbpass -h 127.0.0.1 -P 6033 --prompt='proxysql-deb> '

connect to proxysqlk with new user

다음 쿼리를 입력하여 Percona XtraDB 클러스터의 데이터베이스 목록을 확인합니다. 이 예제에서는 Percona XtraDB 클러스터에 ‘percona‘라는 데이터베이스가 하나 있습니다.

show databases;

percona ‘ 데이터베이스로 전환하려면 아래의 ‘USE‘ 쿼리를 사용합니다.

use percona

show list databases

다음으로, ‘percona‘ 데이터베이스에서 테이블 목록을 확인하고 현재 작업 중인 데이터베이스에서 사용 가능한 데이터를 검색하기 위해 다음 쿼리를 입력합니다.

show tables;  
select * from example;

다음과 같은 출력을 얻어야 합니다 - Percona XtraDB 클러스터에 저장된 데이터베이스는 ProxySQL 서버에서 접근할 수 있습니다. 이는 Percona XtraDB 클러스터를 위한 로드 밸런서로서 ProxySQL 설치가 성공적이었다는 것을 의미합니다.

show tables and data

다음으로, ‘percona‘ 데이터베이스와 ‘example‘ 테이블에 새 데이터를 삽입하기 위해 다음 쿼리를 입력합니다.

INSERT INTO percona.example VALUES (4, 'pxc04');  
INSERT INTO percona.example VALUES (5, 'pxc05');

그런 다음, 다음 쿼리를 사용하여 새로 업데이트된 데이터를 다시 확인합니다. 성공적으로 실행되면 ‘example‘ 테이블에서 새 데이터를 확인할 수 있습니다. 이는 사용자가 Percona XtraDB 클러스터의 데이터베이스에 읽기 및 쓰기를 할 수 있음을 확인합니다.

select * from example;

insert new data

마지막으로, Percona XtraDB 클러스터에서 새 데이터가 업데이트되었는지 확인하려면 Percona XtraDB 클러스터 서버에서 직접 확인해야 합니다.

Percona XtraDB 클러스터 서버에 로그인하고 루트 사용자로 MySQL 셸에 접근한 후, 다음 쿼리를 실행하여 ‘percona‘ 데이터베이스의 ‘example‘ 테이블에서 데이터를 검색합니다.

select * from percona.example;

성공적으로 실행되면 ProxySQL 서버를 통해 추가한 새 데이터를 확인할 수 있습니다.

verify data updated

이로써 MySQL 클러스터 또는 Percona XtraDB 클러스터를 위한 로드 밸런서로서 ProxySQL 서버 설치가 성공적으로 완료되었습니다.

결론

이 가이드에서는 Debian 11 서버에서 ProxySQL을 통해 MySQL 클러스터 또는 Percona XtraDB 클러스터의 로드 밸런싱을 구성했습니다. ProxySQL v2를 설치하고, Percona XtraDB 클러스터를 ProxySQL에 추가하고, ProxySQL에서 Percona XtraDB 클러스터 모니터링을 구성했습니다.

또한 애플리케이션에서 사용할 수 있는 MySQL 또는 Percona XtraDB 클러스터 사용자를 생성하고 구성했습니다. ProxySQL을 통해 MySQL 클러스터 또는 Percona XtraDB 클러스터의 로드 밸런싱을 확인하여 데이터베이스 서버와 애플리케이션의 고가용성 및 내결함성을 가능하게 했습니다.

이제 더 많은 Percona XtraDB 클러스터 노드를 로드 밸런싱 데이터베이스 서버에 추가할 수 있습니다. 또한 ProxySQL을 통해 읽기/쓰기 분할을 설정하고, ProxySQL 샤딩을 설정하고, ProxySQL에서 Percona XtraDB 클러스터로의 SSL 연결을 설정할 수 있습니다. ProxySQL에 대해 더 알아보려면 ProxySQL의 공식 문서를 방문하십시오.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.