ProxySQL เป็นพร็อกซีที่รับรู้โปรโตคอลประสิทธิภาพสูง พร้อมใช้งานสูงสำหรับ MySQL และ Forks (เช่น 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 คือผ่านอินเทอร์เฟซผู้ดูแลระบบ สิ่งนี้ยืมตัวเองไปสู่การกำหนดค่าออนไลน์ (โดยไม่ต้องรีสตาร์ทพร็อกซี) ผ่านการสืบค้น SQL ไปยังฐานข้อมูลผู้ดูแลระบบ เป็นวิธีที่มีประสิทธิภาพในการกำหนดค่าทั้งด้วยตนเองและแบบอัตโนมัติ
เป็นวิธีรองในการกำหนดค่า เรามีไฟล์การกำหนดค่า
ในการเข้าสู่อินเทอร์เฟซผู้ดูแลระบบ (ด้วยข้อมูลรับรองเริ่มต้น) ให้ใช้ไคลเอนต์ mysql และเชื่อมต่อโดยใช้ข้อมูลรับรอง admin
ต่อไปนี้ในเครื่องบนพอร์ต (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 >
หมายเหตุ: หากเวอร์ชันไคลเอนต์ 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
เป็นสตริงเพื่อชี้ไปที่ data dir