يعد 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 هي من خلال واجهة الإدارة الخاصة به. وهذا يفسح المجال للتكوين عبر الإنترنت (دون الحاجة إلى إعادة تشغيل الوكيل) عبر استعلامات 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
، كسلسلة، للإشارة إلى datadir.