बड़े पैमाने पर बैकअप Gitlab कैसे?


13

जब Gitlab से यह पूछा जाए कि Gitlab ऑन-प्रिमाइसेस पर 3TB बैकअप कैसे करें तो वे जवाब देते हैं कि हमारे टूल का उपयोग करें जो एक टारबॉल बनाता है।

यह सभी स्तरों पर मेरे लिए गलत है। इस टारबॉल में पोस्टग्रेज डंप, डॉकटर इमेज, रेपो डेटा, जीआईटी एलएफएस, आदि कॉन्फिगरेशन वगैरह हैं। KB बहुत गतिशील डेटा के साथ एक साथ स्थिर डेटा के टीबी का बैकअप सही नहीं है। और उसके बाद का मुद्दा आता है, हम हर घंटे एक बैकअप करना चाहते हैं।

सवाल

मैं वास्तव में दूसरों से जानना चाहता हूं कि वे ऐसा कैसे करते हैं, लगातार बैकअप पाने के लिए।

लिनक्स पर जेडएफएस मेरे साथ ठीक होगा, अगर वह समाधान का हिस्सा है।


3
यह गलत क्यों है? आप इसे पूरी तरह से बहाल करने के लिए अपने गिटलैब का पूरी तरह से समर्थन करते हैं। मुझे नहीं लगता कि यह गलत है। बेशक, यह कहना है, वृद्धिशील बैकअप की तुलना में बहुत अधिक स्थान का उपयोग करता है, लेकिन ... मैं बैकअप आकार के बारे में परवाह नहीं करेगा।
Lenniey

3
हर घंटे बैकअप रखना अनसुना नहीं है, लेकिन उनके दृष्टिकोण के साथ घंटे से भी कम समय में 3TB बनाना असंभव है। और केवल एक दिन के लिए बैकअप ~ 100TB होगा, जहां डेटा में केवल 10MB परिवर्तन हो सकते हैं।
सैंड्रा

ठीक है, यह एक अलग सवाल है, सामान्य रूप से बैकअप के बारे में नहीं, लेकिन अक्सर बैकअप के बारे में।
लेनिए

5
अपने आधिकारिक डॉक्स में भी वे धीमी होने के रूप में अपनी पद्धति का उल्लेख करते हैं और विकल्प सुझाते हैं: If your GitLab server contains a lot of Git repository data you may find the GitLab backup script to be too slow. In this case you can consider using filesystem snapshots as part of your backup strategy.मैं अनुभव से नहीं बोल सकता, हालांकि। लेकिन मुझे जल्द ही कुछ इस तरह से शामिल करना पड़ सकता है ...
Lenniey

Gitlab में कॉन्फिग फ़ाइल और बैकअप फ़्लैग के विकल्प हैं जो आपको वर्गों को बाहर करने की अनुमति देंगे, या ऑब्जेक्ट स्टोर पर छवियों और कलाकृतियों को स्टोर करने के लिए इतनी दूर
जाएंगे

जवाबों:


10

बैकअप (1h) के बीच इतने कम समय के लिए, आपका सबसे अच्छा शर्त फाइल-सिस्टम स्नैपशॉट और send/recv समर्थन पर भरोसा करना है।

यदि ZoL का उपयोग करना आपके पर्यावरण में कोई समस्या नहीं है, तो मैं इसका उपयोग करने की दृढ़ता से सलाह दूंगा । ZFS एक बहुत ही मजबूत फाइल सिस्टम है और आप वास्तव में सभी एक्स्ट्रा (जैसे: संपीड़न) की पेशकश करेंगे। जब युग्मित किया जाता है sanoid/syncoid, तो यह एक बहुत ही मजबूत बैकअप रणनीति प्रदान कर सकता है। मुख्य अव्यवस्था यह है कि यह मेनलाइन कर्नेल में शामिल नहीं है, इसलिए आपको इसे अलग से इंस्टॉल / अपडेट करने की आवश्यकता है।

वैकल्पिक रूप से, यदि आपको वास्तव में अपने आप को मेनलाइन में शामिल सामान तक सीमित रखने की आवश्यकता है, तो आप BTRFS का उपयोग कर सकते हैं। लेकिन इसकी (कई) कमियों और चिता को समझना सुनिश्चित करें ।

अंत में, एक वैकल्पिक समाधान का उपयोग करने के लिए है lvmthin(: के साथ जैसे नियमित रूप से बैकअप लेने के लिए snapper), तीसरे पक्ष के उपकरणों पर निर्भर (जैसे: bdsync, blocksync, आदि) को कॉपी करने के / जहाज डेल्टा केवल।

एक अलग दृष्टिकोण के लिए दो प्रतिकृति मशीनों (के माध्यम से DRBD) होगा जहाँ आप के माध्यम से अश्लील फोटो लेते हैं lvmthin


पोस्टग्रेज के बारे में क्या? गीतालाब को रोकना और एक मिनट के लिए स्थगित करना होगा, तो एक सुसंगत शाफ़्ट बनाया जा सकता है? आदर्श रूप से यह बहुत अच्छा होगा यदि पोस्टग्रैप्स को केवल पढ़ने के लिए मोड में रखा जा सकता है जबकि स्नैपशॉट बनाया गया है।
सैंड्रा

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

14

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

और मुद्दों का बैकअप लेने के लिए "अंतर्निहित" बैकअप प्रक्रियाओं का उपयोग करें, मुझे संदेह है कि 3TB इस हिस्से से आता है इसलिए आप बहुत कम लागत पर बहुत बार बैकअप करने में सक्षम होंगे। आप प्रतिकृति के साथ एक गर्म स्टैंडबाय के साथ PostgreSQL डेटाबेस भी सेट कर सकते हैं।

संभवतः आपका 3TB डॉकरी रजिस्ट्री में कंटेनर छवियों से आता है। क्या आपको उन्हें वापस करने की आवश्यकता है? यदि हां, तो उसके लिए बेहतर दृष्टिकोण हो सकता है।

असल में, मैं वास्तव में यह देखने की सलाह दूंगा कि यह क्या है जो आपके बैकअप बनाता है और विभिन्न भागों में डेटा बैकअप देता है।

यहां तक ​​कि GitLab से बैकअप टूल में सिस्टम के कुछ हिस्सों जैसे डॉकर रजिस्ट्री को शामिल करने / बाहर करने के विकल्प हैं।


1
गिट पुल एक सही वृद्धिशील बैकअप नहीं है। git push --forceया तो बैकअप को तोड़ देगा या उन पर से इतिहास को मिटा देगा, यह कैसे लागू होता है, इस पर निर्भर करता है।
user371366

@ dn3s यही कारण है कि आप हमेशा मुख्य पुश पर git push --force को अक्षम करते हैं। अगर कोई इतिहास बदलना चाहता है तो वे अपना खुद का कांटा बना सकते हैं, और सभी जोखिमों को स्वीकार कर सकते हैं।
चार्ली_प्ल

2
यह प्रतिकृति के लिए ठीक हो सकता है , लेकिन आप अपने बैकअप की अखंडता को सही अनुप्रयोग व्यवहार पर भरोसा नहीं करना चाहते हैं। यदि आवेदन में कोई बग है, या यह गलत तरीके से सड़क के नीचे है तो क्या होगा? क्या होगा यदि आपका सर्वर दुर्भावनापूर्ण उपयोगकर्ता द्वारा समझौता किया जाता है? यदि आपके एप्लिकेशन में बैकअप होस्ट से सामग्री को निकालने की क्षमता है, तो वृद्धिशील दूरस्थ बैकअप का बहुत मूल्य खो जाता है।
user371366
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.