Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डेटाबेस प्रॉक्सी फ़ेलओवर टाइम्स की तुलना करना - ProxySQL, MaxScale और HAProxy

ClusterControl का उपयोग अत्यधिक उपलब्ध प्रतिकृति सेटअप को परिनियोजित करने के लिए किया जा सकता है। यह GTID- आधारित MySQL या MariaDB प्रतिकृति सेटअप के लिए स्विचओवर और फ़ेलओवर का समर्थन करता है। ClusterControl ट्रैफ़िक रूटिंग के लिए विभिन्न प्रकार के प्रॉक्सी को परिनियोजित कर सकता है:ProxySQL, HAProxy और MaxScale। इन्हें फेलओवर या स्विचओवर से संबंधित टोपोलॉजी परिवर्तनों को संभालने के लिए एकीकृत किया गया है। इस ब्लॉग पोस्ट में, हम देखेंगे कि यह कैसे काम करता है और आप प्रत्येक प्रॉक्सी से क्या उम्मीद कर सकते हैं।

सबसे पहले, आइए कुछ परिभाषाओं और शब्दावली को देखें। ClusterControl को विफल प्रतिकृति मास्टर की पुनर्प्राप्ति करने के लिए कॉन्फ़िगर किया जा सकता है - यह एक दास को नया मास्टर बनने के लिए बढ़ावा दे सकता है, कोई भी आवश्यक टोपोलॉजी परिवर्तन कर सकता है और लेखन को स्वीकार करने के लिए संपूर्ण सेटअप की क्षमता को पुनर्स्थापित कर सकता है। इसे ही हम "विफलता" कहेंगे। ClusterControl एक मास्टर स्विच भी कर सकता है - कभी-कभी मास्टर को बदलने की आवश्यकता होती है। विशिष्ट परिदृश्य एक भारी स्कीमा परिवर्तन होगा, जिसे रोलिंग फैशन में निष्पादित किया जाना है। प्रक्रिया के अंत में, पुराने मास्टर पर परिवर्तन करने से पहले, आपको दासों में से एक को बढ़ावा देना होगा, जिसमें पहले से ही परिवर्तन लागू है।

"फेलओवर" और "स्विचओवर" के बीच मुख्य अंतर यह है कि फेलओवर, परिभाषा के अनुसार, एक आपातकालीन स्थिति है जहां मास्टर पहले से ही अनुपलब्ध है। दूसरी ओर, स्विचओवर एक अधिक नियंत्रणीय प्रक्रिया है जिस पर ClusterControl का पूर्ण नियंत्रण होता है। अगर हम फेलओवर के बारे में बात कर रहे हैं, तो इसे इनायत से संभालने का कोई तरीका नहीं है क्योंकि मास्टर क्रैश के कारण एप्लिकेशन पहले ही कनेक्शन खो चुका है। जैसे, आप चाहे किसी भी प्रॉक्सी का उपयोग करें, एप्लिकेशन को हमेशा फिर से कनेक्ट करना होगा।

इसलिए, एप्लिकेशन को लेनदेन विफलताओं को संभालने और उन्हें पुनः प्रयास करने में सक्षम होना चाहिए। विफलता के बारे में बोलते समय दूसरी महत्वपूर्ण बात यह है कि डेटाबेस सर्वर के स्वास्थ्य की जांच करने के लिए प्रॉक्सी की क्षमता है। स्वास्थ्य जांच के बिना, प्रॉक्सी सर्वर की स्थिति नहीं जान सकता है, और इसलिए ट्रैफ़िक को विफल करने का निर्णय नहीं ले सकता है। प्रॉक्सी परिनियोजित करते समय ClusterControl स्वचालित रूप से इन स्वास्थ्य जांचों को कॉन्फ़िगर करता है।

विफलता

प्रॉक्सीएसक्यूएल

आइए एक नज़र डालते हैं कि एप्लिकेशन के दृष्टिकोण से विफलता कैसी दिख सकती है। हम पहले ProxySQL संस्करण 1.4.6 का उपयोग करके डेटाबेस से जुड़ेंगे।

[email protected]:~# while true  ;do time sysbench /root/sysbench/src/lua/oltp_read_write.lua --threads=4 --max-requests=0 --time=3600 --mysql-host=10.0.0.105 --mysql-user=sbtest --mysql-password=pass --mysql-port=6033 --tables=32 --report-interval=1 --skip-trx=on --table-size=10000 --db-ps-mode=disable run ; done
sysbench 1.1.0-651e7fd (using bundled LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 4
Report intermediate results every 1 second(s)
Initializing random number generator from current time


Initializing worker threads...

Threads started!

[ 1s ] thds: 4 tps: 29.51 qps: 585.28 (r/w/o: 465.27/120.01/0.00) lat (ms,95%): 196.89 err/s: 0.00 reconn/s: 0.00
[ 2s ] thds: 4 tps: 44.61 qps: 784.77 (r/w/o: 603.28/181.49/0.00) lat (ms,95%): 116.80 err/s: 0.00 reconn/s: 0.00
[ 3s ] thds: 4 tps: 46.98 qps: 829.66 (r/w/o: 646.74/182.93/0.00) lat (ms,95%): 121.08 err/s: 0.00 reconn/s: 0.00
[ 4s ] thds: 4 tps: 49.04 qps: 886.64 (r/w/o: 690.50/195.14/1.00) lat (ms,95%): 112.67 err/s: 0.00 reconn/s: 0.00
[ 5s ] thds: 4 tps: 47.98 qps: 887.64 (r/w/o: 689.72/197.92/0.00) lat (ms,95%): 106.75 err/s: 0.00 reconn/s: 0.00
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'UPDATE sbtest8 SET k=k+1 WHERE id=5019'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:461: SQL error, errno = 2013, state = 'HY000': Lost connection to MySQL server during query
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'DELETE FROM sbtest6 WHERE id=4957'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:490: SQL error, errno = 2013, state = 'HY000': Lost connection to MySQL server during query
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'SELECT SUM(k) FROM sbtest23 WHERE id BETWEEN 4986 AND 5085'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:435: SQL error, errno = 2013, state = 'HY000': Lost connection to MySQL server during query
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'DELETE FROM sbtest21 WHERE id=5218'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:490: SQL error, errno = 2013, state = 'HY000': Lost connection to MySQL server during query

real    0m5.903s
user    0m0.092s
sys    0m1.252s
sysbench 1.1.0-651e7fd (using bundled LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 4
Report intermediate results every 1 second(s)
Initializing random number generator from current time


Initializing worker threads...

FATAL: unable to connect to MySQL server on host '10.0.0.105', port 6033, aborting...
FATAL: error 2003: Can't connect to MySQL server on '10.0.0.105' (111)
FATAL: `thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:352: connection creation failed
FATAL: unable to connect to MySQL server on host '10.0.0.105', port 6033, aborting...
FATAL: error 2003: Can't connect to MySQL server on '10.0.0.105' (111)
FATAL: `thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:352: connection creation failed
FATAL: unable to connect to MySQL server on host '10.0.0.105', port 6033, aborting...
FATAL: error 2003: Can't connect to MySQL server on '10.0.0.105' (111)
FATAL: `thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:352: connection creation failed
FATAL: unable to connect to MySQL server on host '10.0.0.105', port 6033, aborting...
FATAL: error 2003: Can't connect to MySQL server on '10.0.0.105' (111)
FATAL: `thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:352: connection creation failed
FATAL: Threads initialization failed!

real    0m0.021s
user    0m0.012s
sys    0m0.000s
sysbench 1.1.0-651e7fd (using bundled LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 4
Report intermediate results every 1 second(s)
Initializing random number generator from current time


Initializing worker threads...

Threads started!

[ 1s ] thds: 4 tps: 0.00 qps: 55.81 (r/w/o: 55.81/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 2s ] thds: 4 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 3s ] thds: 4 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 4s ] thds: 4 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 5s ] thds: 4 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 6s ] thds: 4 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 7s ] thds: 4 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 8s ] thds: 4 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 9s ] thds: 4 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 4 tps: 0.00 qps: 3.00 (r/w/o: 0.00/3.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 11s ] thds: 4 tps: 58.99 qps: 1026.91 (r/w/o: 792.93/233.98/0.00) lat (ms,95%): 9977.52 err/s: 0.00 reconn/s: 0.00

जैसा कि हम ऊपर से देख सकते हैं, नया मास्टर दुर्घटना के ~11 सेकंड के भीतर उपलब्ध हो गया। इस समय के दौरान, ClusterControl ने एक दास को एक नया स्वामी बनने के लिए प्रोत्साहित किया और यह लिखने के लिए उपलब्ध हो गया।

HAProxy

नीचे हमारे sysbench एप्लिकेशन के आउटपुट का एक अंश है, जब हम HAProxy के माध्यम से कनेक्ट होने के दौरान फेलओवर हुआ। HAProxy संस्करण 1.5.14 के साथ परिनियोजित किया गया था।

[email protected]:~# while true  ;do date ; time sysbench /root/sysbench/src/lua/oltp_read_write.lua --threads=4 --max-requests=0 --time=3600 --mysql-host=10.0.0.105 --mysql-user=sbtest --mysql-password=pass --mysql-port=3307 --tables=32 --report-interval=1 --skip-trx=on --table-size=10000 --db-ps-mode=disable run ; done
Mon Mar 26 13:24:36 UTC 2018
sysbench 1.1.0-651e7fd (using bundled LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 4
Report intermediate results every 1 second(s)
Initializing random number generator from current time


Initializing worker threads...

Threads started!

[ 1s ] thds: 4 tps: 38.62 qps: 748.66 (r/w/o: 591.21/157.46/0.00) lat (ms,95%): 204.11 err/s: 0.00 reconn/s: 0.00
[ 2s ] thds: 4 tps: 45.25 qps: 797.34 (r/w/o: 619.37/177.97/0.00) lat (ms,95%): 142.39 err/s: 0.00 reconn/s: 0.00
[ 3s ] thds: 4 tps: 46.04 qps: 833.66 (r/w/o: 647.51/186.15/0.00) lat (ms,95%): 155.80 err/s: 0.00 reconn/s: 0.00
[ 4s ] thds: 4 tps: 38.03 qps: 698.50 (r/w/o: 548.39/150.11/0.00) lat (ms,95%): 161.51 err/s: 0.00 reconn/s: 0.00
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'INSERT INTO sbtest26 (id, k, c, pad) VALUES (5019, 4641, '59053342586-08172779908-92479743240-43242105725-10632773383-95161136797-93281862044-04686210438-11173993922-29424780352', '31974441818-04649488782-29232641118-20479872868-43849012112')'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:491: SQL error, errno = 2013, state = 'HY000': Lost connection to MySQL server during query
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'INSERT INTO sbtest5 (id, k, c, pad) VALUES (4990, 5016, '24532768797-67997552950-32933774735-28931955363-94029987812-56997738696-36504817596-46223378508-29593036153-06914757723', '96663311222-58437606902-85941187037-63300736065-65139798452')'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:491: SQL error, errno = 2013, state = 'HY000': Lost connection to MySQL server during query
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'DELETE FROM sbtest25 WHERE id=4996'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:490: SQL error, errno = 2013, state = 'HY000': Lost connection to MySQL server during query
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'UPDATE sbtest16 SET k=k+1 WHERE id=5269'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:461: SQL error, errno = 2013, state = 'HY000': Lost connection to MySQL server during query

real    0m4.270s
user    0m0.068s
sys    0m0.928s

...

Mon Mar 26 13:24:47 UTC 2018
sysbench 1.1.0-651e7fd (using bundled LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 4
Report intermediate results every 1 second(s)
Initializing random number generator from current time


Initializing worker threads...

FATAL: unable to connect to MySQL server on host '10.0.0.105', port 3307, aborting...
FATAL: error 2013: Lost connection to MySQL server at 'reading initial communication packet', system error: 0
FATAL: `thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:352: connection creation failed
FATAL: unable to connect to MySQL server on host '10.0.0.105', port 3307, aborting...
FATAL: error 2013: Lost connection to MySQL server at 'reading initial communication packet', system error: 2
FATAL: `thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:352: connection creation failed
FATAL: unable to connect to MySQL server on host '10.0.0.105', port 3307, aborting...
FATAL: error 2013: Lost connection to MySQL server at 'reading initial communication packet', system error: 2
FATAL: `thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:352: connection creation failed
FATAL: unable to connect to MySQL server on host '10.0.0.105', port 3307, aborting...
FATAL: error 2013: Lost connection to MySQL server at 'reading initial communication packet', system error: 2
FATAL: `thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:352: connection creation failed
FATAL: Threads initialization failed!

real    0m0.036s
user    0m0.004s
sys    0m0.008s

...

Mon Mar 26 13:25:03 UTC 2018
sysbench 1.1.0-651e7fd (using bundled LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 4
Report intermediate results every 1 second(s)
Initializing random number generator from current time


Initializing worker threads...

Threads started!

[ 1s ] thds: 4 tps: 50.58 qps: 917.42 (r/w/o: 715.10/202.33/0.00) lat (ms,95%): 153.02 err/s: 0.00 reconn/s: 0.00
[ 2s ] thds: 4 tps: 50.17 qps: 956.33 (r/w/o: 749.61/205.72/1.00) lat (ms,95%): 121.08 err/s: 0.00 reconn/s: 0.00

कुल मिलाकर, इस प्रक्रिया में 12 सेकंड लगे।

मैक्सस्केल

आइए एक नजर डालते हैं कि MaxScale फेलओवर को कैसे हैंडल करता है। हम 2.1.9 संस्करण के साथ MaxScale का उपयोग करते हैं।

[email protected]:~# while true ; do date ; time sysbench /root/sysbench/src/lua/oltp_read_write.lua --threads=4 --max-requests=0 --time=3600 --mysql-host=10.0.0.106 --mysql-user=myuser --mysql-password=pass --mysql-port=4008 --tables=32 --report-interval=1 --skip-trx=on --table-size=100000 --db-ps-mode=disable run ; done
Mon Mar 26 15:16:34 UTC 2018
sysbench 1.1.0-651e7fd (using bundled LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 4
Report intermediate results every 1 second(s)
Initializing random number generator from current time


Initializing worker threads...

Threads started!

[ 1s ] thds: 4 tps: 34.82 qps: 658.54 (r/w/o: 519.27/125.34/13.93) lat (ms,95%): 137.35 err/s: 0.00 reconn/s: 0.00
[ 2s ] thds: 4 tps: 35.01 qps: 655.23 (r/w/o: 513.18/142.05/0.00) lat (ms,95%): 207.82 err/s: 0.00 reconn/s: 0.00
[ 3s ] thds: 4 tps: 39.01 qps: 696.16 (r/w/o: 542.13/154.04/0.00) lat (ms,95%): 139.85 err/s: 0.00 reconn/s: 0.00
[ 4s ] thds: 4 tps: 40.91 qps: 724.41 (r/w/o: 557.77/166.63/0.00) lat (ms,95%): 125.52 err/s: 0.00 reconn/s: 0.00
FATAL: mysql_drv_query() returned error 1053 (Server shutdown in progress) for query 'UPDATE sbtest28 SET k=k+1 WHERE id=49992'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:461: SQL error, errno = 1053, state = '08S01': Server shutdown in progress
FATAL: mysql_drv_query() returned error 1053 (Server shutdown in progress) for query 'UPDATE sbtest14 SET k=k+1 WHERE id=59650'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:461: SQL error, errno = 1053, state = '08S01': Server shutdown in progress
FATAL: mysql_drv_query() returned error 1053 (Server shutdown in progress) for query 'UPDATE sbtest12 SET k=k+1 WHERE id=50288'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:461: SQL error, errno = 1053, state = '08S01': Server shutdown in progress
FATAL: mysql_drv_query() returned error 1053 (Server shutdown in progress) for query 'UPDATE sbtest25 SET k=k+1 WHERE id=50105'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:461: SQL error, errno = 1053, state = '08S01': Server shutdown in progress

real    0m5.043s
user    0m0.080s
sys    0m1.044s


Mon Mar 26 15:16:53 UTC 2018
sysbench 1.1.0-651e7fd (using bundled LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 4
Report intermediate results every 1 second(s)
Initializing random number generator from current time


Initializing worker threads...

Threads started!

[ 1s ] thds: 4 tps: 46.82 qps: 905.61 (r/w/o: 710.34/195.27/0.00) lat (ms,95%): 101.13 err/s: 0.00 reconn/s: 0.00

विफलता सारांश

यह स्पष्ट करना महत्वपूर्ण है कि यह एक वैज्ञानिक बेंचमार्क नहीं है - अधिकांश समय ClusterControl द्वारा फेलओवर करने के लिए उपयोग किया जाता है। टोपोलॉजी परिवर्तन का पता लगाने के लिए प्रॉक्सी को आमतौर पर कुछ सेकंड की आवश्यकता होती है। हमने अपने आवेदन के रूप में sysbench का उपयोग किया। इसे ऑटो-प्रतिबद्ध लेनदेन चलाने के लिए कॉन्फ़िगर किया गया था, इसलिए न तो स्पष्ट लेनदेन और न ही तैयार किए गए बयानों का उपयोग किया गया है। Sysbench का रीड/राइट वर्कलोड काफी तेज है। यदि आपके पास लंबे समय से चल रहे लेन-देन या प्रश्न हैं, तो विफलता का प्रदर्शन अलग होगा। आप हमारे परिदृश्य को सबसे अच्छे मामले के रूप में देख सकते हैं।

स्विचओवर

जैसा कि हमने पहले उल्लेख किया है, स्विचओवर निष्पादित करते समय ClusterControl में मास्टर का अधिक नियंत्रण होता है। कुछ परिस्थितियों में (जैसे कोई लेन-देन नहीं, लंबे समय तक चलने वाला लेखन नहीं, आदि), जब तक प्रॉक्सी इसका समर्थन करता है, तब तक यह एक सुंदर मास्टर स्विच करने में सक्षम हो सकता है। दुर्भाग्य से, अभी तक, ClusterControl द्वारा परिनियोजित करने योग्य कोई भी प्रॉक्सी सुंदर स्विचओवर को संभाल नहीं सकता है। अतीत में, प्रॉक्सीएसक्यूएल में यह क्षमता थी इसलिए हमने करीब से जांच करने का फैसला किया और प्रॉक्सीएसक्यूएल निर्माता, रेने कैना से संपर्क किया। जांच के दौरान हमने एक प्रतिगमन की पहचान की जिसे प्रॉक्सीएसक्यूएल की अगली रिलीज में तय किया जाना चाहिए। इस बीच, यह दिखाने के लिए कि ProxySQL को कैसे व्यवहार करना चाहिए, हमने ProxySQL का उपयोग एक छोटे वर्कअराउंड के साथ किया जिसे हमने स्रोत से संकलित किया था।

[ 16s ] thds: 4 tps: 39.01 qps: 711.11 (r/w/o: 555.09/156.02/0.00) lat (ms,95%): 173.58 err/s: 0.00 reconn/s: 0.00
[ 17s ] thds: 4 tps: 49.00 qps: 879.06 (r/w/o: 678.05/201.01/0.00) lat (ms,95%): 102.97 err/s: 0.00 reconn/s: 0.00
[ 18s ] thds: 4 tps: 42.86 qps: 768.57 (r/w/o: 603.09/165.48/0.00) lat (ms,95%): 176.73 err/s: 0.00 reconn/s: 0.00
[ 19s ] thds: 4 tps: 28.07 qps: 521.26 (r/w/o: 406.98/114.28/0.00) lat (ms,95%): 235.74 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 4 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 21s ] thds: 4 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 22s ] thds: 4 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 23s ] thds: 4 tps: 13.98 qps: 249.59 (r/w/o: 193.68/55.91/0.00) lat (ms,95%): 4055.23 err/s: 0.00 reconn/s: 0.00
[ 24s ] thds: 4 tps: 81.06 qps: 1449.01 (r/w/o: 1123.79/325.23/0.00) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00
[ 25s ] thds: 4 tps: 52.02 qps: 923.42 (r/w/o: 715.32/208.09/0.00) lat (ms,95%): 390.30 err/s: 0.00 reconn/s: 0.00
[ 26s ] thds: 4 tps: 59.00 qps: 1082.94 (r/w/o: 844.96/237.99/0.00) lat (ms,95%): 164.45 err/s: 0.00 reconn/s: 0.00
[ 27s ] thds: 4 tps: 50.99 qps: 900.75 (r/w/o: 700.81/199.95/0.00) lat (ms,95%): 130.13 err/s: 0.00 reconn/s: 0.00

जैसा कि आप देख सकते हैं, 4 सेकंड के लिए कोई क्वेरी निष्पादित नहीं की जाती है लेकिन एप्लिकेशन में कोई त्रुटि नहीं लौटाई जाती है और इस विराम के बाद, ट्रैफ़िक एक बार फिर प्रवाहित होने लगता है।

संक्षेप में, हमने दिखाया है कि क्लस्टरकंट्रोल, जब ProxySQL या MaxScale या HAProxy के साथ प्रयोग किया जाता है, तो 10-15 सेकंड के डाउनटाइम के साथ एक विफलता का प्रदर्शन कर सकता है। नियोजित मास्टर स्विच के संबंध में, कोई भी प्रॉक्सी लेखन के समय त्रुटियों के बिना प्रक्रिया को संभाल नहीं सकता है। हालांकि, यह उम्मीद की जाती है कि अगला ProxySQL संस्करण एप्लिकेशन में बिना किसी त्रुटि के कुछ सेकंड के स्विचओवर की अनुमति देगा।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक MySQL/MariaDB डेटाबेस निर्यात करें

  2. MySQL अद्वितीय बाधा जोड़ें

  3. AWS RDS MySQL में धीमी क्वेरी लॉग को कैसे सक्षम करें

  4. जहां MySQL में पंक्तियों को फ़िल्टर करने के लिए क्लॉज

  5. कैसे mysql चयन क्वेरी में दो तिथियों के बीच की तारीखों की सूची प्राप्त करने के लिए?