ProxySQL adalah proksi berkinerja tinggi, ketersediaan tinggi, dan sadar protokol untuk MySQL dan fork (seperti Percona Server dan MariaDB). Sekaligus mendapatkan kebebasan tanpa batas yang didapat dari lisensi GPL.
Perkembangannya didorong oleh kurangnya proxy open source yang memberikan kinerja tinggi.
Paket yang dirilis dapat ditemukan di sini: https://github.com/sysown/proxysql/releases
Cukup unduh sebuah paket dan gunakan manajer paket sistem Anda untuk menginstalnya:
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
Alternatifnya, Anda juga dapat menggunakan repositori yang tersedia:
Menambahkan repositori:
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
Menginstal:
apt-get update
apt-get install proxysql OR apt-get install proxysql=version
Menambahkan repositori:
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
Menginstal:
yum install proxysql OR yum install proxysql-version
Menambahkan repositori:
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
Menginstal:
yum install proxysql OR yum install proxysql-version
Menambahkan repositori:
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
Menginstal:
yum install proxysql OR yum install proxysql-version
Menambahkan repositori:
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
atau
zypper addrepo -g -n ' ProxySQL Zypper repository ' ' https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/opensuse/$releasever_major ' proxysql
Menginstal:
yum install proxysql OR yum install proxysql-version
Menginstal (melalui pkg):
pkg install proxysql
Menginstal (melalui port):
cd /usr/ports/databases/proxysql/ && make install clean
Setelah perangkat lunak diinstal, Anda dapat menggunakan perintah service
untuk mengontrol proses:
service proxysql start
service proxysql stop
Atau alternatifnya melalui antarmuka 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> proxysql stop
service proxysql restart
Atau alternatifnya melalui antarmuka 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> 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
Instal saja paket baru dan mulai ulang 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
Versi debug memiliki _DEBUG
dalam string versinya. Ini lebih lambat daripada versi non-debug, tetapi lebih mudah untuk di-debug jika terjadi kegagalan.
$ proxysql --version
Main init phase0 completed in 0.000146 secs.
ProxySQL version 2.1.0-544-g17a4b4a7_DEBUG, codename Truls
admin interface
Pertama-tama, ingatlah bahwa cara terbaik untuk mengonfigurasi ProxySQL adalah melalui antarmuka adminnya. Ini cocok untuk konfigurasi online (tanpa harus me-restart proxy) melalui query SQL ke database adminnya. Ini adalah cara efektif untuk mengonfigurasinya secara manual dan otomatis.
Sebagai cara kedua untuk mengkonfigurasinya, kami memiliki file konfigurasi.
Untuk masuk ke antarmuka admin (dengan kredensial default) gunakan klien mysql dan sambungkan menggunakan kredensial admin
berikut secara lokal pada port (6032):
$ 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 >
catatan: Jika versi klien MySQL Anda adalah versi 8.04 atau lebih tinggi, tambahkan --default-auth=mysql_native_password
ke perintah di atas untuk terhubung ke antarmuka admin.
Setelah terhubung ke antarmuka admin, Anda akan memiliki daftar database dan tabel yang dapat Anda tanyakan menggunakan bahasa 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)
Ini akan memungkinkan Anda mengontrol daftar server backend, bagaimana lalu lintas dirutekan ke server tersebut, dan pengaturan penting lainnya (seperti caching, kontrol akses, dll). Setelah Anda melakukan modifikasi pada struktur data dalam memori, Anda harus memuat konfigurasi baru ke runtime, atau mempertahankan pengaturan baru ke disk (sehingga pengaturan tersebut tetap ada setelah proxy dimulai ulang). Tutorial mendetail tentang cara mengkonfigurasi ProxySQL melalui antarmuka Admin tersedia di sini.
Meskipun file konfigurasi seharusnya hanya dianggap sebagai cara sekunder untuk mengkonfigurasi proxy, kita tidak boleh membuang nilainya sebagai cara yang valid untuk mem-bootstrap instalasi ProxySQL yang baru.
Mari kita dengan cepat membahas bagian utama dari file konfigurasi (ikhtisar ini berfungsi sebagai gambaran umum tingkat tinggi dari konfigurasi ProxySQL).
Bagian tingkat atas:
admin_variables
: berisi variabel global yang mengontrol fungsionalitas antarmuka admin.
mysql_variables
: berisi variabel global yang mengontrol fungsionalitas untuk menangani lalu lintas MySQL yang masuk.
mysql_servers
: berisi baris untuk tabel mysql_servers
dari antarmuka admin. Pada dasarnya, ini menentukan server backend yang menjadi tujuan rute lalu lintas MySQL yang masuk. Baris dikodekan sesuai format file .cfg
, berikut ini contohnya:
mysql_servers =
(
{
address= " 127.0.0.1 "
port=3306
hostgroup=0
max_connections=200
}
)
mysql_users
: berisi baris untuk tabel mysql_users
dari antarmuka admin. Pada dasarnya, ini menentukan pengguna yang dapat terhubung ke proxy, dan pengguna yang dapat dihubungkan oleh proxy ke server backend. Baris dikodekan sesuai format file .cfg
, berikut ini contohnya:
mysql_users:
(
{
username = " root "
password = " root "
default_hostgroup = 0
max_connections=1000
default_schema= " information_schema "
active = 1
}
)
mysql_query_rules
: berisi baris untuk tabel mysql_query_rules
dari antarmuka admin. Pada dasarnya, ini mendefinisikan aturan yang digunakan untuk mengklasifikasikan dan merutekan lalu lintas MySQL yang masuk, berdasarkan berbagai kriteria (pola yang cocok, yang digunakan pengguna untuk menjalankan kueri, dll.). Baris dikodekan sesuai format file .cfg
, berikut adalah contohnya (Catatan: contoh ini adalah aturan perutean kueri yang sangat umum dan disarankan untuk membuat aturan khusus untuk kueri daripada menggunakan aturan umum seperti ini):
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
}
)
item konfigurasi tingkat atas: datadir
, sebagai string, untuk menunjuk ke direktori data.