HeadlinesBriefing HeadlinesBriefing.com

MySQL CDC से BigQuery: Binlog बनाम अवधि-आधारित सिंक

Hacker News •
×

MySQL से वेयरहाउस तक की अधिकांश पाइपलाइनों में अनुसूचित SELECT-आधारित सिंक का उपयोग किया जाता है, जो वर्तमान पंक्तियों को पिछले स्नैपशॉट्स के साथ तुलना करके काम करता है। इस दृष्टिकोण से चलने के बीच के हटाव और मध्यवर्ती अपडेट छूट जाते हैं, और बड़े टेबल स्कैन के दौरान उत्पादन डेटाबेस पर भारी बोझ पड़ता है।

परिवर्तन डेटा कैप्चर (CDC) सीधे MySQL के बाइनरी लॉग (binlog) से पढ़ता है, और जैसे ही वे होते हैं, प्रत्येक INSERT, UPDATE और DELETE को क्रम में कैप्चर करता है, साथ में पूरी पंक्ति स्थिति। प्रति घंटा चलने वाला CDC पाइपलाइन मूल रूप से प्रति मिनट चलने वाले बैच सिंक की तुलना में अधिक विश्वसनीय होता है, क्योंकि यह सब कुछ कैप्चर करता है जो हुआ है, न कि केवल नवीनतम स्नैपशॉट।

बिनलॉग के माध्यम से CDC के लिए विशिष्ट MySQL कॉन्फ़िगरेशन की आवश्यकता होती है: ROW प्रारूप में बाइनरी लॉगिंग और पूरी पंक्ति छवियों के साथ (binlog_row_image=FULL), binlog_row_value_options को PARTIAL_JSON पर सेट नहीं किया जाना चाहिए, REPLICATION SLAVE, REPLICATION CLIENT, SELECT, RELOAD और SHOW DATABASES अधिकारों वाला एक प्रतिलिपि उपयोगकर्ता, प्रत्येक प्रतिलिपि क्लाइंट के लिए अद्वितीय server-id, और डाउनटाइम को कवर करने के लिए पर्याप्त binlog प्रतिधारण (डिफ़ॉल्ट 30 दिन)।

Erathos जैसे प्रबंधित प्लेटफ़ॉर्म स्नैपशॉट मोड चयन, server-id टकराव से बचाव, और binlogs के purged होने पर पुनर्प्राप्ति तर्क को संभालते हैं। एक बार जब CDC परिवर्तनों को सही ढंग से कैप्चर कर लेता है, तो BigQuery में डेटा लैंड करना सीधा हो जाता है — प्रत्येक परिवर्तन घटना एक पंक्ति संचालन के रूप में मैप होती है। प्राथमिकता पूर्णता पर होती है, गति पर नहीं: एक पाइपलाइन जो कभी-कभी पीछे रह जाती है लेकिन कभी गलत नहीं होती, वह समय पर चलने वाली लेकिन अपूर्ण डेटा लैंड करने वाली पाइपलाइन से बेहतर होती है।

मुख्य इकाइयाँ: कंपनियाँ: Erathos, BigQuery, MySQL

स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित