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

PostgreSQL तार्किक प्रतिकृति का अनुकूलन कैसे करें

तार्किक प्रतिकृति या Pglogic एक तालिका स्तर, WAL आधारित प्रतिकृति तंत्र है जो दो PostgreSQL उदाहरणों के बीच विशिष्ट तालिकाओं के डेटा को दोहराता है। "pglogic" और "तार्किक प्रतिकृति" के बीच एक भ्रम प्रतीत होता है। दोनों सुविधाओं और क्षमताओं में कुछ अंतर के साथ एक ही तरह की प्रतिकृति तंत्र प्रदान करते हैं। तार्किक प्रतिकृति को PostgreSQL-10 में एक इन-बिल्ट फीचर के रूप में पेश किया गया है, जो कि pglogic के विपरीत है जो एक एक्सटेंशन है। चल रहे निरंतर विकास के साथ "Pglogic", 10 से पहले PostgreSQL संस्करणों का उपयोग करने वाले उन वातावरणों के लिए तार्किक प्रतिकृति को लागू करने के लिए एकमात्र विकल्प के रूप में बना हुआ है। आखिरकार, pglogic की सभी विशेषताएं तार्किक प्रतिकृति का हिस्सा होंगी। दूसरे शब्दों में, pglogic (विस्तार) तार्किक प्रतिकृति (इन-बिल्ट फीचर) बन गया। तार्किक प्रतिकृति का मूल लाभ यह है कि इसे स्थापित / निर्मित करने के लिए किसी भी एक्सटेंशन की आवश्यकता नहीं है जो बदले में उन वातावरणों के लिए फायदेमंद है जहां एक्सटेंशन स्थापित करना प्रतिबंधित है।

यह ब्लॉग तार्किक प्रतिकृति को अनुकूलित करने पर केंद्रित होगा। यानी, इस ब्लॉग में हाइलाइट की गई अनुकूलन युक्तियाँ और तकनीकें pgological और तार्किक प्रतिकृति दोनों के लिए लागू होंगी।

तार्किक प्रतिकृति एक वाल आधारित प्रतिकृति है जो अपनी तरह की पहली है। एक डीबीए के रूप में, यह अन्य ट्रिगर आधारित प्रतिकृति समाधानों की तुलना में अधिक विश्वसनीय और प्रदर्शनकारी प्रतिकृति तंत्र होगा। pglogic प्रतिकृति के टेबल भाग में किए गए परिवर्तनों को वास्तविक समय में WAL रिकॉर्ड के माध्यम से दोहराया जाता है जो इसे अत्यधिक कुशल और गैर जटिल बनाता है। बाजार में अन्य सभी प्रतिकृति तंत्र ट्रिगर आधारित हैं जो प्रदर्शन और रखरखाव चुनौतियों का सामना कर सकते हैं। तार्किक प्रतिकृति के आने के साथ, ट्रिगर आधारित प्रतिकृति पर निर्भरता लगभग समाप्त हो गई है।

ऐसे अन्य ब्लॉग हैं जो तार्किक प्रतिकृति को काफी विस्तार से कॉन्फ़िगर करने का तरीका बताते हैं।

इस ब्लॉग में, तार्किक प्रतिकृति को अनुकूलित करने के तरीके पर ध्यान दिया जाएगा।

तार्किक प्रतिकृति को अनुकूलित करना

शुरू करने के लिए, "तार्किक प्रतिकृति" का व्यवहार "स्ट्रीमिंग प्रतिकृति" के समान है, केवल अंतर यह है कि स्ट्रीमिंग प्रतिकृति संपूर्ण डेटाबेस को दोहराती है जबकि तार्किक प्रतिकृति केवल व्यक्तिगत तालिकाओं को दोहराती है। दोहराने के लिए विशिष्ट व्यक्तिगत तालिकाओं का चयन करते समय, कारकों/चुनौतियों का अनुमान लगाया जाना चाहिए।

आइए तार्किक प्रतिकृति को प्रभावित करने वाले कारकों पर एक नज़र डालें।

तार्किक प्रतिकृति प्रदर्शन को प्रभावित करने वाले कारक

तार्किक प्रतिकृति का अनुकूलन यह सुनिश्चित करने के लिए महत्वपूर्ण है कि डेटा को बिना किसी रुकावट के मूल रूप से दोहराया जाए। इसे स्थापित करने से पहले पूर्वाभास करने वाले कारक हैं। आइए उन पर एक नजर डालते हैं:

  • तालिकाओं में संग्रहीत डेटा का प्रकार जिसे दोहराया जाना है
  • तालिकाएं लेनदेन की दृष्टि से कितनी सक्रिय हैं (प्रतिकृति का हिस्सा)
  • बुनियादी ढांचे की क्षमता का अनुमान लगाया जाना चाहिए
  • पैरामीटर कॉन्फ़िगरेशन बेहतर तरीके से किया जाना चाहिए

उपरोक्त सभी कारक तार्किक प्रतिकृति को काफी हद तक प्रभावित करते हैं। आइए उन पर विस्तार से एक नज़र डालते हैं।

PostgreSQL तार्किक प्रतिकृति डेटा प्रकार

तालिका में संग्रहीत डेटा के प्रकार को समझना महत्वपूर्ण है। यदि प्रतिकृति का तालिका भाग बड़े पाठ या बाइनरी ऑब्जेक्ट्स को संग्रहीत करता है और बड़ी संख्या में लेन-देन का सामना करता है, तो बुनियादी ढांचे के संसाधनों के उच्च उपयोग के कारण प्रतिकृति धीमा हो सकती है। ऐसे जटिल और बड़े आकार के डेटा प्रतिकृति को संभालने के लिए बुनियादी ढांचे की क्षमता पर्याप्त होनी चाहिए।

कैसे सक्रिय तालिकाएं लेन-देन की दृष्टि से प्रतिकृति का हिस्सा हैं

अत्यधिक लेन-देन वाली सक्रिय तालिकाओं की नकल करते समय, I/O प्रदर्शन समस्याओं, गतिरोधों, आदि के कारण प्रतिकृति सिंक में पिछड़ सकती है, जिसे ध्यान में रखा जाना चाहिए। यह उत्पादन डेटाबेस वातावरण को स्वस्थ नहीं बना सकता है। यदि प्रतिकृति की जा रही तालिकाओं की संख्या अधिक है और डेटा को कई साइटों पर दोहराया जाता है, तो उच्च CPU उपयोग हो सकता है और अधिक संख्या में CPU (या CPU कोर) की आवश्यकता होती है।

बुनियादी ढांचे की क्षमता

तार्किक प्रतिकृति को एक समाधान के रूप में मानने से पहले, यह सुनिश्चित करना महत्वपूर्ण है कि डेटाबेस सर्वरों की आधारभूत संरचना क्षमता पर्याप्त है। यदि अधिक संख्या में तालिकाओं को दोहराया जा रहा है, तो प्रतिकृति कार्य करने के लिए पर्याप्त CPU उपलब्ध होना चाहिए।

बड़ी संख्या में तालिकाओं की नकल करते समय, उन्हें समूहों में विभाजित करने और समानांतर में दोहराने पर विचार करें। दोबारा, इसे प्रतिकृति के लिए उपलब्ध होने के लिए कई CPUs की आवश्यकता होगी। यदि दोहराए जा रहे तालिकाओं में डेटा परिवर्तन अक्सर और उच्च होते हैं तो यह प्रतिकृति प्रदर्शन को भी प्रभावित कर सकता है।

आज श्वेतपत्र डाउनलोड करें क्लस्टरकंट्रोल के साथ पोस्टग्रेएसक्यूएल प्रबंधन और स्वचालन इस बारे में जानें कि पोस्टग्रेएसक्यूएल को तैनात करने, मॉनिटर करने, प्रबंधित करने और स्केल करने के लिए आपको क्या जानना चाहिए। श्वेतपत्र डाउनलोड करें

तार्किक प्रतिकृति के लिए पैरामीटर अनुकूलित करना

तार्किक प्रतिकृति कार्यप्रणाली के लिए कॉन्फ़िगर किए गए पैरामीटर को बेहतर ढंग से ट्यून किया जाना चाहिए ताकि यह सुनिश्चित हो सके कि प्रतिकृति टूट न जाए।

आइए पहले इसे कॉन्फ़िगर करने के लिए आवश्यक मापदंडों पर एक नज़र डालें:

wal_level=’logical’
max_wal_senders=10                     # greater than number of subscribers (or replicas)
max_replication_slots=10              # greater than number of subscribers (or replicas)
max_worker_processes=10           # greater than number of subscribers (or replicas)
max_logical_replication_workers  # greater than number of subscribers (or replicas)
max_sync_workers_per_subscription # depends on number of tables being replicated

max_wal_senders ट्यूनिंग

max_wal_senders हमेशा प्रतिकृतियों की संख्या से अधिक होना चाहिए। यदि डेटा को कई साइटों पर दोहराया जाता है, तो कई max_wal_senders चलन में आते हैं। इसलिए, यह सुनिश्चित करना महत्वपूर्ण है कि यह पैरामीटर एक इष्टतम संख्या पर सेट है।

max_replication_slots ट्यूनिंग

सामान्य तौर पर, टेबल पर होने वाले सभी डेटा परिवर्तन WAL फ़ाइलों को pg_xlog / pg_wal में लिखे जाते हैं जिन्हें WAL रिकॉर्ड कहा जाता है। वाल प्रेषक प्रक्रिया उन वाल रिकॉर्ड्स (प्रतिकृति की जा रही तालिकाओं से संबंधित) को उठाती है और प्रतिकृतियों को भेजती है और प्रतिकृति साइट पर wal_receiver प्रक्रिया उन परिवर्तनों को ग्राहक नोड पर लागू करेगी।

जब भी चेकपॉइंट होता है, WAL फ़ाइलें pg_xlog/pg_wal स्थान से हटा दी जाती हैं। यदि सब्सक्राइबर नोड में परिवर्तन लागू होने से पहले ही WAL फाइलें हटा दी जाती हैं, तो प्रतिकृति टूट जाएगी और पीछे रह जाएगी। यदि ग्राहक नोड पीछे रह जाता है, तो एक प्रतिकृति स्लॉट यह सुनिश्चित करेगा कि प्रदाता के साथ तालमेल बिठाने के लिए ग्राहक के लिए आवश्यक सभी WAL फाइलें बरकरार रहे। प्रत्येक ग्राहक नोड के लिए एक प्रतिकृति स्लॉट को कॉन्फ़िगर करने की अनुशंसा की जाती है।

max_worker_processes को ट्यून करना

वर्कर प्रोसेसर की इष्टतम संख्या कॉन्फ़िगर करना महत्वपूर्ण है। यह इस बात पर निर्भर करता है कि सर्वर में कितनी अधिकतम प्रक्रियाएं हो सकती हैं। यह केवल बहु-सीपीयू वातावरण में ही संभव है। Max_worker_processes यह सुनिश्चित करेगा कि कई CPU कोर का उपयोग करके काम को तेजी से पूरा करने के लिए कई प्रक्रियाएं पैदा की जाती हैं। तार्किक प्रतिकृति का उपयोग करके डेटा की प्रतिकृति करते समय, यह पैरामीटर डेटा को तेज़ी से दोहराने के लिए कई कार्यकर्ता प्रक्रियाओं को उत्पन्न करने में मदद कर सकता है। max_logic_worker_processes नामक एक विशिष्ट पैरामीटर है जो यह सुनिश्चित करेगा कि डेटा को कॉपी करने के लिए कई प्रक्रियाओं का उपयोग किया जाता है।

मैक्स_लॉजिकल_वर्कर_प्रोसेसेस को ट्यून करना

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

max_sync_workers_per_subscription ट्यूनिंग

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

तार्किक प्रतिकृति कुशल और तेज है यह सुनिश्चित करने के लिए वे पैरामीटर हैं जिन्हें ट्यून किया जाना चाहिए। अन्य पैरामीटर जो तार्किक प्रतिकृति को भी प्रभावित करते हैं, वे इस प्रकार हैं।

wal_receiver_timeout, wal_receiver_status_interval and wal_retrieve_retry_interval.

इन मापदंडों का प्रदाता नोड पर कोई प्रभाव नहीं पड़ता है।

निष्कर्ष

प्रतिकृति विशिष्ट तालिका एक सामान्य आवश्यकता है जो बड़े और जटिल डेटाबेस सिस्टम में उत्पन्न होती है। यह व्यावसायिक रिपोर्टिंग या डेटा वेयरहाउसिंग उद्देश्यों के लिए हो सकता है। एक डीबीए के रूप में, मेरा मानना ​​है कि तार्किक प्रतिकृति कम जटिलता के साथ इसके आसान कार्यान्वयन के कारण ऐसे उद्देश्यों को पूरा करती है। तार्किक प्रतिकृति को कॉन्फ़िगर और ट्यून करने के लिए अच्छी मात्रा में योजना, वास्तुकला और परीक्षण की आवश्यकता होती है। वास्तविक समय में दोहराए जा रहे डेटा की मात्रा का मूल्यांकन यह सुनिश्चित करने के लिए किया जाना चाहिए कि कुशल और कम प्रतिकृति प्रणाली मौजूद है। निष्कर्ष निकालने के लिए, PostgreSQL-10 में चल रहे डेटाबेस, तार्किक प्रतिकृति जाने का रास्ता है और उन डेटाबेस के लिए जो PostgreSQL संस्करणों में चल रहे हैं <10, pglogic विकल्प है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दो SQL लेफ्ट जॉइन गलत परिणाम देते हैं

  2. जेपीए फ्लश बनाम प्रतिबद्ध

  3. Postgres . में LIKE और ~ के बीच अंतर

  4. SQL (Postgres) में JSON ऑब्जेक्ट्स की सरणी के रूप में लौटें

  5. PostgreSQL सूची दृश्य