दिलचस्प पोस्ट
असाइनमेंट स्टेटमेंट क्यों एक मान लौटाते हैं? जावास्क्रिप्ट के साथ "हैक्लासेल"? मजबूत पासवर्ड regex एनीमेशन को पुनर्स्थापित करना जहां पृष्ठभूमि पृष्ठभूमि से ऐप को फिर से शुरू किया गया था Socket.io में RedisStore का उपयोग करने के उदाहरण भाषा एक्स बंद होने की तुलना में पायथन में क्या सीमाएं बंद हैं? कोणीय और बहस कास्ट करना किसी ऑब्जेक्ट को स्ट्रिंग में बदलाना है, जब ऑब्जेक्ट वास्तव में एक स्ट्रिंग है एंड्रॉइड वॉली इमेजलोडर – बिटमैप लुक कैश पैरामीटर? MySQL अनुक्रमित – सर्वोत्तम प्रथाएं क्या हैं? एंड्रॉइड में टच इवेंट का अनुकरण कैसे करें? हम पीपीसी / पीपीसी 64 और साथ ही 10.4 / 10.5 एसडीके समर्थन को Xcode 4 को कैसे बहाल कर सकते हैं? AngularJS: त्रुटि रोकें $ $ पहले से ही प्रगति पर है जब $ दायरे को कॉल करते हैं। $ लागू होते हैं () JsonP को डेटा पोस्ट करें क्या वही सदिश से एक तत्व को पुश_बैक करना सुरक्षित है?

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

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

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

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

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

Solutions Collecting From Web of "टेबल लॉक किए बिना 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 फ़ाइलों को कॉपी कर सकता है (यह डंप नहीं करता है)।