Proxysql چیست ؟
سرویس proxysql چیست ؟ در واقع ای سرویس یک رابط بین (Application) و (Mastersql , Slavesql) است که برای بهبود عملکرد و سرعت بخشیدن به پاسخ های Database به درخواست های برنامه به کار می رود. در این مقاله از سایت ماهان ویپ بزرگترین ارائه دهنده خدمات ویپ می خواهیم به طور مفصل و تخصصی به مسئله سرورهای اس کیو ال بپردازیم.
سرور proxysql ابتدا درخواست ها را بررسی کرده و تغییرات نوشتنی مانند Insert , Delete , Update را به سرور Master ارسال میکند و درخواست های خواندنی مانند Select را به سرور Slave ارسال میکند تا تمام بار روی Database اصلی نباشد.
راه اندازی Mysqlproxy روی سیستم عامل Centoc
در ادامه این مقاله تخصصی بعد از آنکه فهمیدیم Proxysql چیست می رویم سراغ مراحل بعد و راه اندازی این سرویس. در ابتدا سرویس Mysql را نصب و راه اندازی کرده و رمز عبور خود را تغییر دهید ( به آموزش MySQL مراجعه کنید )
به طور مثال آی پی سرورهای ما به این شرح است
Master = 172.16.16.100
Slave = 172.16.16.111
ابتدا از به روز بودن سرویس های خود اطمینان حاصل کنید
Yum update –y
اطلاعات مربوط به repo را از طریق دستور زیر در مسیر /etc/yam.repos.d ایجاد نمایید
cat <<EOF | tee /etc/yum.repos.d/proxysql.repo
[proxysql_repo]
name= ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.1.x/centos/\$releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/repo_pub_key
EOF
با استفاده از دستور زیر سرویس نصب sql را انجام دهید.
yum install proxysql -y
سرویس proxysql را استارت کنید
service proxysql start
وضعیت سرویس را بررسی کنید
systemctl status proxysql
در صورتی که نصب sql server را بخ درستی انجام دادید و راه اندازی شده باشد باید وضعیت آن running باشد
در سرور Master وارد mysql شده و با استفاده از دستور زیر کاربر monitor را ایجاد نمایید.
CREATE USER monitor ‘@’%’ IDENTIFIED BY ‘ monitor ‘;
GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO ‘monitor’@’%’ IDENTIFIED BY ‘monitor’;
توجه داشته باشید که برای هر گونه تغییرات در proxysql باید پس از وارد کردن دستورات برای دخیره سازی از دستورات زیر استفاده کنید تا تغییرات اعمال شوند
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
برای به روز رسانی متغیرهای Global از دستور زیر استفاده کنید.
UPDATE global_variables SET variable_value=’monitor’ WHERE variable_name=’mysqlmonitor_username’;
برای لاگین به proxysql توسط کاربر Admin و از پورت6032 استفاده میشود
mysql -u admin -padmin -h 127.0.0.1 -P6032 –prompt=’Admin> ‘
افزودن کاربران
با استفاده از این دستورات کاربرانی که قرار است از طریق proxysql به mysql متصل شوند را اضافه کنید
(hostgroup) مشخص میکند که چه کاربرانی و با چه رولی به صورت پیش فرض به کدام mysql قرار است متصل شوند که در صورت نبودن آن سرور به سرور بعدی وصل میشوند
INSERT INTO mysql_users(username,password,default_hostgroup) VALUES (‘master’,’123456aA’,1);
INSERT INTO mysql_users(username,password,default_hostgroup) VALUES (‘slave’,’123456‘,2);
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
افزودن سرور ها
به منظور اضافه کردن سرور ها از دستور زیر استفاده کنید
INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (1,’192.168.1.1’ ,3306);
INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (2,’192.168.1.2’ ,3306);
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
افزودن رول های Query
با استفاده از دستور زیر رول های Query را مشخص کنید
در این مثال query های select ,insert , update, delete به hostgroup1 یا همان Master و query های select به hostgroup2 یا همان Slave ارسال میشوند
INSERT INTO mysql_query_rules (active ,match_digest,destination_hostgroup) VALUES (1,’SELECT .* FOR UPDATE’,1);
INSERT INTO mysql_query_rules (active ,match_digest,destination_hostgroup) VALUES (1,’SELECT .*’,2);
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
مشخص کردن hostgroup
باید مشخص شود که کدام hostgroup برای read و کدام hostgroup برای write در نظر گرفته شده است
INSERT INTO mysql_replication_hostgroups (writer_hostgroup, reader_hostgroup) VALUES (0, 1);
ذخیره تنظیمات
برای ذخیره تنظیمات در فایل از دستور زیر استفاده میشود
SELECT CONFIG INTO OUTFILE /tmp/proxysql.conf ;
مشاهده وضعیت ها
برای بررسی تعداد درخواست های ارسالی از دستور زیر استفاده میشود
select hostgroup, digest_text, count_star, sum_time, min_time, max_time from stats_mysql_query_digest order by sum_time desc LIMIT 10;
برای بررسی وضعیت حافظه مصرف شده از دستور زیر استفاده کنید
SELECT * FROM stats_mysql_commands_counters ORDER BY Total_cnt;
SELECT * FROM stats.stats_memory_metrics;
در آخر؛ چرا ماهان ویپ انتخاب شماست؟
ماهان ویپ، یک شرکت دانشبنیان با بیش از 15 سال تجربه درخشان در حوزه خدمات تلفن تحت شبکه، به عنوان یکی از پیشروترین شرکتهای فعال در این زمینه شناخته میشود. این شرکت با بهرهگیری از متخصصین ایرانی، توانسته نرمافزار مدیریت مرکز تماس مبتنی بر هسته را طراحی و پیادهسازی نماید.
اعتماد به تواناییهای متخصصین ایرانی، عاملی بسیار مهم در به دست آوردن این دستاورد بوده است. شرکت ماهان ویپ در وبسایت خود، علاوه بر ارائه خدمات متنوع مرتبط با ویپ و درج هزینه راه اندازی voip، بخش بلاگی را نیز داراست که مقالات مفیدی از جمله مقاله ” Proxysql چیست ” یا ” قطع شدن سرور ویپ ” را در آن منتشر میکند. این مقالات به کاربران امکان میدهد تا اطلاعات خود را در زمینههای مختلف ارتباطی گسترش داده و بهبود بخشند. برای اطلاعات بیشتر می توانید علاوه بر سایت ماهان ویپ از طریق صفحه اینستاگرام ماهان ویپ هم با متخصصین این شرگت ارتباط بگیرید.
سوالات متداول
Proxysql چیست ؟
ProxySQL یک نرمافزار متنباز و مدیریت کننده ترافیک SQL است که به عنوان یک لایه میانی بین برنامههای کاربردی و سرورهای پایگاه داده عمل میکند. با استفاده از ProxySQL، میتوان ترافیک SQL را مدیریت کرده و بهینهسازی کرد. این نرمافزار از قابلیتهایی مانند توزیع بار و بالانسینگ بار، کنترل دسترسی به پایگاه داده، ضبط و ردیابی کوئریها، کشسازی کوئریهای پرتکرار و… پشتیبانی میکند.
ProxySQL چگونه میتواند ترافیک SQL را بهینهسازی کند؟
ProxySQL با استفاده از چندین قابلیت و ویژگی میتواند ترافیک SQL را بهینهسازی کند. در ادامه به برخی از این ویژگیها اشاره میشود:
1- توزیع بار و بالانسینگ بار: با استفاده از این ویژگی، ProxySQL میتواند ترافیک SQL را به صورت متوازن بین سرورهای پایگاه داده توزیع کند و سرعت عملکرد سیستم را افزایش دهد.
2- کشسازی کوئریهای پرتکرار: ProxySQL میتواند کوئریهای پرتکرار را در حافظهی کش ذخیره کند تا در صورتی که همان کوئری مجدداً اجرا شود، نتیجهی آن را به صورت سریعتر بازگرداند.
3- ضبط و ردیابی کوئریها: با استفاده از این ویژگی، ProxySQL میتواند ترافیک SQL را ضبط و ذخیره کند تا در صورت نیاز به ردیابی مشکلات و خطاها، از آن استفاده کرد.