दिलचस्प पोस्ट
सी ++ स्ट्रिंग == और तुलना () के बीच अंतर? रेखा खींचें और उसे पैनल में कैसे चुनें जावा वेबसाइट्स क्लायंट (सर्वोत्तम तरीका) फ़ंक्शन पॉइंटर्स का क्या मतलब है? क्या आप हमेशा श्रेणी () पर एक्सरेन्ज () को पसंद करते हैं? सीएसएस जब इनलाइन ब्लॉक तत्वों लाइन-ब्रेक, माता-पिता आवरण नई चौड़ाई फिट नहीं है Autowayout के साथ सभी subviews फिट करने के लिए पर्यवेक्षण का आकार कैसे बदलना है? सदस्य फ़ंक्शन के लिए फ़ंक्शन पॉइंटर नि: शुल्क कैसे मुक्त है पता है कि कैसे? मैं क्लासपाथ में एक जावा पैकेज से सभी वर्गों को कैसे पढ़ूं? यूट्यूब वीडियो आईडी पाने के लिए PHP रेगेक्स? Servlets में doGet और doPost रूबी गॉटचस एक नौसिखिया किस बारे में चेतावनी दी जानी चाहिए? एंड्रॉइड में प्रगति पट्टी को कैसे अनुकूलित करें एकाधिक रिटर्न: कौन सा अंतिम रिटर्न मान सेट करता है?

टेबल लॉक किए बिना MySQLDump चलाएं

मैं अपने स्थानीय विकास डेटाबेस में एक लाइव उत्पादन डेटाबेस की प्रतिलिपि बनाना चाहता हूं। क्या उत्पादन डेटाबेस लॉक किए बिना ऐसा करने का कोई तरीका है?

मैं वर्तमान में उपयोग कर रहा हूं:

mysqldump -u root --password=xxx -h xxx my_db1 | mysql -u root --password=xxx -h localhost my_db1 

लेकिन यह प्रत्येक तालिका को लॉक कर रहा है जैसा कि यह चलता है।

वेब के समाधान से एकत्रित समाधान "टेबल लॉक किए बिना MySQLDump चलाएं"

क्या --lock-tables=false विकल्प काम करता है?

मैन पेज के मुताबिक, यदि आप --single-transaction टेबल डंप कर रहे हैं तो आप --single-transaction विकल्प का उपयोग कर सकते हैं:

 --lock-tables, -l Lock all tables before dumping them. The tables are locked with READ LOCAL to allow concurrent inserts in the case of MyISAM tables. For transactional tables such as InnoDB and BDB, --single-transaction is a much better option, because it does not need to lock the tables at all. 

यह उम्र बहुत देर हो चुकी है, लेकिन किसी विषय के लिए खोज करने वाले व्यक्ति के लिए अच्छा है। यदि आप इनओडीबी नहीं हैं, और आप लॉकिंग के बारे में चिंतित नहीं हैं, तो आप केवल विकल्प का उपयोग करने के लिए डंप करते हैं:

 --lock-tables=false 

इसका उत्तर आपके द्वारा उपयोग किए जा रहे स्टोरेज इंजन के आधार पर अलग-अलग होता है आदर्श परिदृश्य है यदि आप इनोएडीबी का उपयोग कर रहे हैं उस स्थिति में आप --single-transaction फ्लैग का उपयोग कर सकते हैं, जो आपको उस समय डेटाबेस के एक --single-transaction स्नैपशॉट देगा जो डंप शुरू होता है।

--skip-add-locks ने मेरे लिए मदद की

बड़े तालिकाओं को डंप करने के लिए, आपको –quick के साथ -single-transaction विकल्प को जोड़ना चाहिए।

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_single-transaction

ईमानदारी से, मैं इसके लिए प्रतिकृति सेटअप करेगा, जैसे कि आप तालिकाओं को लॉक नहीं करते हैं, तो आपको डंप से असंगत डेटा मिल जाएगा।

यदि डंप लंबे समय तक लेता है, तो पहले से ही डंप किये जाने वाले टेबल को कुछ तालिका के साथ बदल दिया हो सकता है, जो केवल डंप होने के बारे में है।

इसलिए तालिकाओं को लॉक करें या प्रतिकृति का उपयोग करें

यह उस लड़के की तुलना में देर के बारे में है, जिसने कहा था कि वह देर से उत्तर के तौर पर था, लेकिन मेरे मामले में (विंडोज 7 पर WAMP के माध्यम से MySQL), मुझे इसका उपयोग करना था:

 --skip-lock-tables 

InnoDB तालिकाओं के लिए – सिंगल-लेनदेन का उपयोग करें

"यह किसी भी अनुप्रयोग को अवरुद्ध किए बिना जारी किया गया था जब उस समय डेटाबेस की सुसंगत स्थिति को डंप करता है" MySQL DOCS

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_single-transaction

  mysqldump -uuid -ppwd --skip-opt --single-transaction --max_allowed_packet=1G -q db | mysql -u root --password=xxx -h localhost db 

चूंकि इन तरीकों में से कोई भी मेरे लिए काम नहीं करता है, बस मैंने ऐसा किया:

 mysqldump [...] | grep -v "LOCK TABLE" | mysql [...] 

यह LOCK TABLE <x> और UNLOCK TABLES कमांड दोनों को बाहर कर देगा

नोट: उम्मीद है कि आपके डेटा में उस स्ट्रिंग में शामिल नहीं है!

एक अन्य देर उत्तर:

यदि आप सर्वर डेटाबेस (लिनक्स पर्यावरण में) की एक बड़ी प्रतिलिपि बनाने की कोशिश कर रहे हैं और सभी तालिकाओं का डेटाबेस इंजिन है, तो आप mysqlhotcopy उपयोग करना चाहिए mysqlhotcopy

दस्तावेज़ के अनुसार:

यह एक डेटाबेस बैकअप बनाने के लिए फ्लश टैब, लॉक टैबिल और सीपी या एससीपी का उपयोग करता है यह डेटाबेस या एकल तालिकाओं का बैकअप बनाने का एक तेज़ तरीका है, लेकिन यह केवल एक ही मशीन पर चलाया जा सकता है जहां डेटाबेस निर्देशिका स्थित हैं। mysqlhotcopy केवल MyISAM और ARCHIVE तालिकाओं का समर्थन करने के लिए काम करता है

LOCK TABLES समय उस समय पर निर्भर करता है जब सर्वर MySQL फ़ाइलों को कॉपी कर सकता है (यह डंप नहीं करता है)।