ProxySQL은 MySQL 및 포크(예: Percona Server 및 MariaDB)를 위한 고성능, 고가용성, 프로토콜 인식 프록시입니다. 동시에 GPL 라이센스와 함께 제공되는 무제한의 자유를 누리세요.
고성능을 제공하는 오픈 소스 프록시가 부족하기 때문에 개발이 이루어졌습니다.
릴리스된 패키지는 여기에서 찾을 수 있습니다: https://github.com/sysown/proxysql/releases
패키지를 다운로드하고 시스템 패키지 관리자를 사용하여 설치하면 됩니다.
wget https://github.com/sysown/proxysql/releases/download/v2.4.2/proxysql_2.4.2-ubuntu20_amd64.deb
dpkg -i proxysql_2.4.2-ubuntu20_amd64.deb
또는 사용 가능한 저장소를 사용할 수도 있습니다.
저장소 추가:
apt-get update && apt-get install -y --no-install-recommends lsb-release wget apt-transport-https ca-certificates
wget -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
설치:
apt-get update
apt-get install proxysql OR apt-get install proxysql=version
저장소 추가:
cat > /etc/yum.repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/centos/ $ releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key
EOF
설치:
yum install proxysql OR yum install proxysql-version
저장소 추가:
cat > /etc/yum.repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/centos/8
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key
EOF
설치:
yum install proxysql OR yum install proxysql-version
저장소 추가:
cat > /etc/yum.repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/almalinux/ $ releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key
EOF
설치:
yum install proxysql OR yum install proxysql-version
저장소 추가:
cat > /etc/zypp/repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL Zypper repository
enabled=1
autorefresh=0
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/opensuse/ $ releasever_major
gpgcheck=1
EOF
또는
zypper addrepo -g -n ' ProxySQL Zypper repository ' ' https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/opensuse/$releasever_major ' proxysql
설치:
yum install proxysql OR yum install proxysql-version
설치(pkg를 통해):
pkg install proxysql
설치(포트를 통해):
cd /usr/ports/databases/proxysql/ && make install clean
소프트웨어가 설치되면 service
명령을 사용하여 프로세스를 제어할 수 있습니다.
service proxysql start
service proxysql stop
또는 관리 인터페이스를 통해:
$ mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt='Admin> '
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 4
Server version: 5.5.30 (ProxySQL Admin Module)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
Admin> proxysql stop
service proxysql restart
또는 관리 인터페이스를 통해:
$ mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt='Admin> '
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 4
Server version: 5.5.30 (ProxySQL Admin Module)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
Admin> proxysql restart
# If you are using the init script run:
/etc/init.d/proxysql initial
# or
service proxysql initial
# If you are using the systemd unit file run:
systemctl start proxysql-initial
# or
service proxysql-initial start
새 패키지를 설치하고 ProxySQL을 다시 시작하세요.
wget https://github.com/sysown/proxysql/releases/download/v2.1.0/proxysql_2.1.0-ubuntu16_amd64.deb
dpkg -i proxysql_2.1.0-ubuntu16_amd64.deb
service proxysql restart
$ proxysql --version
ProxySQL version 2.1.0-544-g17a4b4a7, codename Truls
디버그 버전의 버전 문자열에는 _DEBUG
가 있습니다. 비 디버그 버전에 비해 속도는 느리지만 오류 발생 시 디버깅이 더 쉽습니다.
$ proxysql --version
Main init phase0 completed in 0.000146 secs.
ProxySQL version 2.1.0-544-g17a4b4a7_DEBUG, codename Truls
admin interface
통해 ProxySQL 구성우선, ProxySQL을 구성하는 가장 좋은 방법은 관리 인터페이스를 이용하는 것임을 명심하십시오. 이는 관리 데이터베이스에 대한 SQL 쿼리를 통해 프록시를 다시 시작할 필요 없이 온라인 구성에 적합합니다. 이는 수동 및 자동화된 방식으로 구성하는 효과적인 방법입니다.
이를 구성하는 두 번째 방법으로 구성 파일이 있습니다.
기본 자격 증명을 사용하여 관리 인터페이스에 로그인하려면 mysql 클라이언트를 사용하고 포트(6032)에서 로컬로 다음 admin
증명을 사용하여 연결합니다.
$ mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt= ' Admin> '
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g .
Your MySQL connection id is 4
Server version: 5.5.30 (ProxySQL Admin Module)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ' help; ' or ' h ' for help. Type ' c ' to clear the current input statement.
Admin >
참고: MySQL 클라이언트 버전이 8.04 이상인 경우 위 명령에 --default-auth=mysql_native_password
추가하여 관리 인터페이스에 연결하세요.
관리 인터페이스에 연결되면 SQL 언어를 사용하여 쿼리할 수 있는 데이터베이스 및 테이블 목록이 표시됩니다.
Admin > SHOW DATABASES;
+ -- ---+---------+-------------------------------+
| seq | name | file |
+ -- ---+---------+-------------------------------+
| 0 | main | |
| 2 | disk | / var / lib / proxysql / proxysql . db |
| 3 | stats | |
| 4 | monitor | |
+ -- ---+---------+-------------------------------+
4 rows in set ( 0 . 00 sec)
이를 통해 백엔드 서버 목록, 트래픽이 해당 서버로 라우팅되는 방식 및 기타 중요한 설정(예: 캐싱, 액세스 제어 등)을 제어할 수 있습니다. 메모리 내 데이터 구조를 수정한 후에는 새 구성을 런타임에 로드하거나 새 설정을 디스크에 유지해야 합니다(프록시를 다시 시작한 후에도 해당 설정이 그대로 유지되도록). 관리 인터페이스를 통해 ProxySQL을 구성하는 방법에 대한 자세한 자습서는 여기에서 확인할 수 있습니다.
구성 파일은 프록시를 구성하는 보조 방법으로만 간주되어야 하지만 새로운 ProxySQL 설치를 부트스트랩하는 유효한 방법으로 해당 값을 무시해서는 안 됩니다.
구성 파일의 주요 섹션을 빠르게 살펴보겠습니다(이 개요는 ProxySQL 구성에 대한 매우 높은 수준의 개요 역할을 합니다).
최상위 섹션:
admin_variables
: 관리 인터페이스의 기능을 제어하는 전역 변수를 포함합니다.
mysql_variables
: 들어오는 MySQL 트래픽을 처리하는 기능을 제어하는 전역 변수를 포함합니다.
mysql_servers
: 관리 인터페이스의 mysql_servers
테이블에 대한 행을 포함합니다. 기본적으로 이는 들어오는 MySQL 트래픽이 라우팅되는 백엔드 서버를 정의합니다. 행은 .cfg
파일 형식에 따라 인코딩됩니다. 예는 다음과 같습니다.
mysql_servers =
(
{
address= " 127.0.0.1 "
port=3306
hostgroup=0
max_connections=200
}
)
mysql_users
: 관리 인터페이스의 mysql_users
테이블에 대한 행을 포함합니다. 기본적으로 이는 프록시에 연결할 수 있는 사용자와 프록시가 백엔드 서버에 연결할 수 있는 사용자를 정의합니다. 행은 .cfg
파일 형식에 따라 인코딩됩니다. 예는 다음과 같습니다.
mysql_users:
(
{
username = " root "
password = " root "
default_hostgroup = 0
max_connections=1000
default_schema= " information_schema "
active = 1
}
)
mysql_query_rules
: 관리 인터페이스의 mysql_query_rules
테이블에 대한 행을 포함합니다. 기본적으로 이는 다양한 기준(패턴 일치, 쿼리를 실행하는 데 사용되는 사용자 등)에 따라 들어오는 MySQL 트래픽을 분류하고 라우팅하는 데 사용되는 규칙을 정의합니다. 행은 .cfg
파일 형식에 따라 인코딩됩니다. 다음은 예입니다(참고: 이 예는 매우 일반적인 쿼리 라우팅 규칙이므로 이와 같은 일반 규칙을 사용하기보다는 쿼리에 대한 특정 규칙을 만드는 것이 좋습니다).
mysql_query_rules:
(
{
rule_id=1
active=1
match_pattern= " ^SELECT .* FOR UPDATE$ "
destination_hostgroup=0
apply=1
},
{
rule_id=2
active=1
match_pattern= " ^SELECT "
destination_hostgroup=1
apply=1
}
)
최상위 구성 항목: datadir
, 문자열로, 데이터 디렉터리를 가리킵니다.