본문 바로가기
DB

ProxySQL 시작하기 (설치)

by 세계정보ㄱ 2023. 1. 13.
728x90
반응형

https://www.proxysql.com/

 

ProxySQL - A High Performance Open Source MySQL Proxy

ProxySQL is a MySQL protocol proxy supporting Amazon Aurora, RDS, ClickHouse, Galera, Group Replication, MariaDB Server, NDB, Percona Server and more...

proxysql.com

https://github.com/sysown/proxysql

 

GitHub - sysown/proxysql: High-performance MySQL proxy with a GPL license.

High-performance MySQL proxy with a GPL license. Contribute to sysown/proxysql development by creating an account on GitHub.

github.com

소개

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

또는 사용 가능한 리포지토리를 사용할 수도 있습니다.:

Ubuntu / Debian:

저장소 추가 :

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

Red Hat / CentOS:

저장소 추가 :

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

Amazon Linux:

저장소 추가 :

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

Almalinux:

저장소 추가 :

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

OpenSUSE:

저장소 추가 :

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

서비스 관리

소프트웨어가 설치되면 다음 service명령을 사용하여 프로세스를 제어할 수 있습니다. :

ProxySQL 시작하기 :

service proxysql start

ProxySQL 중지하기:

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

ProxySQL 재시작 :

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

구성 파일에서 ProxySQL 다시 초기화(처음 시작한 후 구성 파일 대신 DB 파일이 사용됨) :

# 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 버전을 확인하는 방법

$ 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

관리 인터페이스 를 통해 ProxySQL 구성

우선 ProxySQL을 구성하는 가장 좋은 방법은 관리 인터페이스를 통하는 것입니다. 관리 데이터베이스에 대한 SQL 쿼리를 통해 (프록시를 다시 시작하지 않고도) 온라인으로 구성할 수 있습니다. 수동 및 자동화된 방식으로 구성하는 효과적인 방법입니다.

구성하는 두 번째 방법으로 구성 파일이 있습니다.

관리 인터페이스를 통해 ProxySQL 구성

관리 인터페이스(기본 자격 증명 사용)에 로그인하려면 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 초기 설설치를 부트스트랩하는 유효한 방법으로 해당 값을 버리면 안 됩니다.

구성 파일의 주요 섹션을 빠르게 살펴보겠습니다(이 개요는 ProxySQL 구성에 대한 매우 높은 수준의 개요 역할을 함).

 

최상위 섹션:

  • admin_variables: 관리 인터페이스의 기능을 제어하는 ​​전역 변수를 포함합니다.
  • mysql_variables: 들어오는 MySQL 트래픽을 처리하는 기능을 제어하는 ​​전역 변수를 포함합니다.
  • mysql_serversmysql_servers: 관리 인터페이스 의 테이블에 대한 행을 포함합니다 . 기본적으로 이들은 들어오는 MySQL 트래픽이 라우팅되는 백엔드 서버를 정의합니다. 행은 .cfg파일 형식에 따라 인코딩됩니다. 예는 다음과 같습니다. :
  • mysql_servers = ( { address="127.0.0.1" port=3306 hostgroup=0 max_connections=200 } )
  • mysql_usersmysql_users: 관리 인터페이스 의 테이블에 대한 행을 포함합니다 . 기본적으로 프록시에 연결할 수 있는 사용자와 프록시가 백엔드 서버에 연결할 수 있는 사용자를 정의합니다. 행은 .cfg파일 형식에 따라 인코딩됩니다. 예는 다음과 같습니다. :
  •  mysql_users:
     (
     	{
     		username = "root"
     		password = "root"
     		default_hostgroup = 0
     		max_connections=1000
     		default_schema="information_schema"
     		active = 1
     	}
     )
  • 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, 문자열로 데이터 디렉터리를 가리킵니다.
728x90
반응형