एक बजट पर डाउनट्रीमलेस MySQL बैकअप


14

मेरा वर्तमान MySQL बैकअप परिदृश्य हमारे db को दूसरे सर्वर पर दोहराने और टेबल या पंक्ति लॉकिंग से किसी भी डाउनटाइम को हटाने के लिए उस सर्वर पर mysqldump को चलाने के लिए है। यह अच्छी तरह से काम कर रहा है लेकिन दूसरे सर्वर के लिए प्रति माह $ 150 खर्च होता है (ऑस्ट्रेलियाई होस्टिंग अमेरिका की तुलना में बहुत अधिक महंगा है।)

मैंने इस बारे में यहां बहुत सारे प्रश्न पढ़े हैं, ज्यादातर लोगों को निर्धारित बैकअप और व्हाट्सएप की मदद की आवश्यकता है जो कि मुझे नहीं चाहिए। मुझे बिना किसी डाउनटाइम के mysqldump (अधिमानतः हर 4hrs) की आवश्यकता है। DB ~ 7GB असम्पीडित है, इसलिए mysqldump सर्वर के आधार पर कुछ समय ले सकता है।

मैंने उसी मशीन की प्रतिकृति बनाने पर विचार किया है, लेकिन मैं नहीं चाहता था कि गुलाम बहुत आवश्यक स्मृति में खाएं। मुझे यकीन नहीं है कि मैं प्रति db आधार पर मेमोरी उपयोग में बाधा डाल सकता हूं? किसी भी तरह, यह db डंपिंग करते समय सर्वर पर लोड डाल देगा।

मैंने अभी इसे http://www.zmanda.com/quick-mysql-backup.html पढ़ा है और यह अच्छा लग रहा है, प्रति वर्ष $ 300 ठीक है, जो मुझे बहुत बचाता है।

दुर्भाग्य से मैं अमेज़ॅन के आरडीएस की नकल नहीं कर सकता, लेकिन मैं एक माइक्रो आरसी 2 उदाहरण के लिए दोहरा सकता हूं, लेकिन प्रतिकृति ओवर-नेट होगी और पिंग ~ 220ms है।

मैंने यहां कुछ लोगों को LVM स्नैपशॉट के बारे में बात करते हुए देखा, जो एक अच्छा विकल्प हो सकता है। मैं इस विकल्प के बारे में बहुत कुछ नहीं जानता।

राय की बहुत सराहना की जाएगी।


वेबसाइट क्या है? यह क्या करता है, इसका वर्णन दें
jamespo

आप $ 150 प्रति माह की तुलना में बहुत सस्ते में सर्वर खरीद सकते हैं। 7GB उतना डेटा नहीं लगता है। आप डिस्पोजेबल 128 एमबी सर्वर को कम से कम $ 1.50 एक महीने के लिए और अधिक प्रभावशाली 1GB वाले $ 20 के लिए खरीद सकते हैं। चूँकि क्वेरी कैश की कोई आवश्यकता नहीं है इसलिए आप एक जीबी रैम और एक एसएसडी के साथ सर्वर के साथ बहुत आसानी से लिख सकते हैं।
Xeoncross

LVM स्नैपशॉट तब तक एक सुसंगत छवि नहीं देगा जब तक कि आप सर्वर को पहले बंद नहीं करते। आप हॉट स्नैपशॉट कर सकते हैं - और फ़ाइलों के पुनर्निर्माण का प्रयास करें - लेकिन यह जोखिम भरा है।
सिम्बियन

जवाबों:


10

यदि आप निर्दोष तालिकाओं का उपयोग करते हैं, तो आप उपयोग कर सकते हैं

http://www.percona.com/docs/wiki/percona-xtrabackup:start

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


मेरे पास कुछ MyISAM टेबल हैं लेकिन उनका उपयोग अक्सर नहीं किया जाता है, इसलिए उन पर ताला लगाना ठीक है। टिप्पणी के लिए धन्यवाद, कि बाहर की जाँच करेगा।
ईसाई

Percona चट्टानों btw!
ईसाई

5

यदि आप innodb या किसी अन्य बैकएंड का उपयोग कर रहे हैं जो पूरी तरह से लेन-देन का है, तो आप उपयोग कर सकते हैं mysqldump --single-transaction ...। मैंने अच्छे परिणामों के साथ काफी बड़े (~ 100GB) डेटाबेस पर इसका उपयोग किया है; यदि डेटाबेस भारी लोड के अधीन है , तो इसमें घंटे लग सकते हैं, लेकिन यह आपकी तालिकाओं को लॉक किए बिना काम करता है। प्रतिकृति आम तौर पर बेहतर होती है लेकिन कभी-कभी आप एक अच्छी ठोस डंप फ़ाइल चाहते हैं। ध्यान रखें कि आप mysql प्रतिकृति दास को भी डंप कर सकते हैं।

Mysqldump पृष्ठ से (संचालन में होने वाले परिचालनों के बारे में कैविएट्स पर ध्यान दें):

 ·   --single-transaction

   This option sends a START TRANSACTION SQL statement to the server
   before dumping data. It is useful only with transactional tables
   such as InnoDB, because then it dumps the consistent state of the
   database at the time when BEGIN was issued without blocking any
   applications.

   When using this option, you should keep in mind that only InnoDB
   tables are dumped in a consistent state. For example, any MyISAM or
   MEMORY tables dumped while using this option may still change
   state.

   While a --single-transaction dump is in process, to ensure a valid
   dump file (correct table contents and binary log coordinates), no
   other connection should use the following statements: ALTER TABLE,
   CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE. A
   consistent read is not isolated from those statements, so use of
   them on a table to be dumped can cause the SELECT that is performed
   by mysqldump to retrieve the table contents to obtain incorrect
   contents or fail.

यहोशू, मैं 'अपने आप' के टाइपो को नोटिस करता हूं और ध्यान देता हूं कि मुझे 'खुद' टाइप करना बहुत मुश्किल है क्योंकि मैं स्वाभाविक रूप से mysql टाइप करता हूं। मैं वर्तमान में गुलाम मशीन पर 4 घंटे के लिए एक mysqldump करता हूं। एकल-लेनदेन एक अच्छा विकल्प की तरह लगता है, धन्यवाद!
ईसाई

रवींद्र। अच्छा पकड़ा। :)
जोशुआ हॉब्लेट

मुझे नहीं लगता कि इतने बड़े डेटाबेस पर mysqldump एक अच्छा विकल्प है। यदि डंप करने में घंटों लगते हैं, तो इसे पुनर्स्थापित करने में सप्ताह लग सकते हैं। अपने पुनर्स्थापना समय और इसे पूरा करने के लिए आवश्यक संसाधनों का परीक्षण करें!
बैरन श्वार्ट्ज

धन्यवाद बैरन, इसे बहाल करने में थोड़ा समय लगता है - सप्ताह नहीं, लेकिन अभी भी काफी समय है। मैं देखूंगा कि मुझे अपना नया सर्वर मिलने में कितना समय लगेगा। हो सकता है कि फ़ाइलों की एक प्रति बहुत अधिक प्रभावी हो।
ईसाई

2

मैं अमेरिका में एक सस्ते वीपीएस के लिए एक उच्च विलंबता कनेक्शन की नकल करने में बहुत अधिक समस्या नहीं देखता हूं। उच्च विलंबता वास्तव में एक समस्या का इतना नहीं होना चाहिए। प्रतिकृति को तब भी तेजी से पकड़ने में सक्षम बनाया गया है जब एक गुलाम घंटों पीछे हो जाता है, अर्थात यह अतुल्यकालिक रूप से काम कर सकता है।

जब तक आप अपने ऑस्ट्रेलियाई होस्टिंग प्लान पर उस आउटगोइंग बैंडविड्थ को खड़ा कर सकते हैं।

यहाँ एक अधिक विस्तृत प्रतिक्रिया है कि क्या उच्च विलंबता मायने रखती है


1
मुझे नहीं पता होगा कि यह कितना बैंडविड्थ का उपयोग करेगा। हो सकता है कि मुझे बॉक्स के बीच के ट्रैफ़िक पर नज़र रखनी चाहिए, अब मेरे पास यह देखना है कि कितना उपयोग किया जाता है।
ईसाई

1
EBS के शीर्ष पर mysql को चलाने की कोशिश करने से आप "निराश" हो सकते हैं। मैं अत्यधिक सुझाव देता हूं कि आप प्रतिकृति के लिए इसका उपयोग करने से पहले प्रदर्शन का परीक्षण करें।
जोशुआ हॉब्लेट

इसके लिए धन्यवाद, इससे पहले कि मैं इस पर भरोसा करना शुरू करूं, निश्चित रूप से इसके लिए एक महसूस मिलेगा - अगर यह मेरे द्वारा लिया गया दृष्टिकोण है।
क्रिश्चियन

1

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

आप 5-10 मिनट मैक्स में 7GB डेटाबेस mysqldump करने में सक्षम होना चाहिए, रीड / राइट लॉक को हटा दें और डाउनटाइम समाप्त हो जाएगा। फिर आप नए सर्वर पर 7GB फ़ाइल के लिए सबसे अधिक बैंडविड्थ प्रभावी तरीका पा सकते हैं (पढ़ें: उच्च अनुपालन)। आपके पास फ़ाइल को स्थानांतरित करने और नए सर्वर पर MySQL में आयात करने के लिए बहुत समय है। फिर, मास्टरलॉग जानकारी दर्ज करें और प्रतिकृति शुरू करें। केक का एक टुकड़ा होना चाहिए!

MySQL प्रलेखन शानदार है : http://dev.mysql.com/doc/refman/5.0/en/replication.html


और मुझे जोड़ने का मतलब था, प्रतिकृति ज्यादा बैंडविड्थ का उपयोग नहीं करती है। यह कोई शक नहीं है कि हर चार घंटे में mysqldump-ing से बेहतर कॉल है !!!
ल्यूक

आईटी विभाग का उल्लेख किसने किया? यह सिर्फ मेरी वेबसाइट है। :) और मैं वर्तमान में बैकअप के लिए नकल कर रहा हूं लेकिन $ 150 p / m पर इसका सबसे अच्छा तरीका सुनिश्चित नहीं है। जैसा कि कहा गया है कि EC2 माइक्रो इंस्टेंस का विकल्प है।
ईसाई

@ क्रिसियन क्या है पी / एम? मुझे नहीं पता कि यह क्या है, लेकिन प्रति मीटर एक पी के लिए 150 डॉलर महंगा लगता है 8- |
तहरीरके

@TehShrike, p / m = प्रति माह। ऑस्ट्रेलियाई होस्टिंग अमेरिकी होस्टिंग की तुलना में बहुत अधिक महंगा है। इसके अलावा, मैं गति और स्थानांतरण के लिए उसी सर्वर पर दूसरे सर्वर को रखने की कोशिश कर रहा था जिसे बैंडविड्थ भत्ते के खिलाफ नहीं गिना गया था।
ईसाई

1

मुझे यकीन नहीं है कि मैं प्रति db आधार पर मेमोरी उपयोग में बाधा डाल सकता हूं

बेशक आप कर सकते हैं - आपको बस एक अलग /etc/my.cnf के साथ दास को चलाने की आवश्यकता है

तुम भी मास्टर / दास पर शेड्यूलिंग प्राथमिकता / सीपीयू आत्मीयता में हेरफेर करने के लिए सामान कर सकते हैं और अच्छा / त्याग और कार्यपत्रक (यह एक लिनक्स सर्वर है) का उपयोग करके।

लेकिन प्रतिकृति जगह-जगह होगी और पिंग ~ 220ms है

विलंबता बहुत अधिक अप्रासंगिक है - महत्वपूर्ण चीज बैंडविड्थ है - और डेटाबेस बैंडविड्थ (यह मानते हुए कि आप सत्र डेटा की नकल नहीं कर रहे हैं) HTTP बैंडविड्थ की तुलना में कम परिमाण के कई आदेश हैं।

मुझे [डेटाबेस का एक सुसंगत बैकअप बनाने की आवश्यकता है] (अधिमानतः प्रत्येक 4hrs) बिना डाउनटाइम के

लेकिन आपके द्वारा चर्चा की जाने वाली रणनीतियाँ उस समय की किसी भी चीज़ की वसूली की अनुमति नहीं देती हैं।

मुझे लगता है कि सबसे सस्ता विकल्प एक ही मशीन पर एक गुलाम होगा - और अगर यह आपके प्रदर्शन को प्रतिकूल रूप से प्रभावित कर रहा है जो आप फिर से कॉन्फ़िगर कर सकते हैं तो वर्तमान होस्टिंग पैकेज को अपग्रेड कर सकते हैं।

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


अच्छी प्रतिक्रिया, इसके लिए धन्यवाद। मैं जिस नए सर्वर को देख रहा हूं, उसमें एक ही मशीन पर एक गुलाम के लिए अनुमति देने के लिए पर्याप्त मेमोरी होगी, लेकिन मुझे वास्तव में इस बात की पसंद है कि बिनलॉग को कॉपी / रोल किया गया। एक बार फिर धन्यवाद!
ईसाई

1

मेरा सुझाव:

1 - अपना दूसरा खाता / सर्वर रखें और अपने मूल खाते / सर्वर के डेटाबेस में प्रतिकृति लागू करें।

2 - दूसरे खाते / सर्वर के लिए प्रतिकृति बंद करो।

3 - कुछ दिनों के लिए प्रदर्शन की निगरानी। सुनिश्चित करें कि आप अपने व्यस्ततम अवधियों को शामिल करने के लिए इसे लंबे समय तक मॉनिटर करते हैं।

4 - यदि कोई बड़ी प्रदर्शन समस्या है, तो अपने पुराने सेटअप पर स्विच करने के लिए तैयार रहें। यही कारण है कि आपने दूसरा खाता रखा।

5 - अपने मूल खाते में अधिक क्षमता / अपग्रेड सर्वर खरीदें। मेरा मानना ​​है कि दो सर्वरों के लिए भुगतान करने से यह सस्ता होना चाहिए।

6 - दूसरा खाता रद्द करें।

सौभाग्य!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.