ASPECT # 1: प्रतिकृति
मुझे ऐसा नहीं लगता
replicate-wild-do-table = db_backup.%
replicate-rewrite-db = db->db_backup
एक साथ हैं।
अन्य लोगों ने भी इस बारे में सोचा है
आदेश प्रतिकृति नियमों से समस्या उपजी है। प्रतिकृति नियमों पर MySQL प्रलेखन के अनुसार :
यदि कोई --replicate-rewrite-db विकल्प निर्दिष्ट किए गए थे, तो उन्हें --replicate- * फ़िल्टरिंग नियमों से पहले लागू किया जाता है।
यहां तक कि दोहराने-फिर से लिखने पर भी MySQL प्रलेखन कहते हैं:
डेटाबेस नाम का अनुवाद --replicate- * नियमों से पहले किया जाता है।
replicate-wild-do-table
फिर से लिखने के बाद लागू की जाती है। यह आश्चर्य की बात नहीं होगी अगर यह आदेश किसी भी तरह एक INSERT को एक तालिका में लगाए, जिसमें पहले से ही डेटा है।
आप शायद पूछ रहे हैं कि डेटा वहां कैसे पहुंचा?
ASPECT # 2: mysqldump
ऐसा mysqldump --single-transaction
लगता है कि डेटा के समय-समय पर डंप करने का सबसे बड़ा तरीका है। दुर्भाग्य से, mysqldump --single-transaction
एक अकिलीज़ हील है ALTER TABLE
:। एक मेज किसी भी के अधीन है, तो ALTER TABLE
इस तरह के एक के रूप में आदेश, DROP TABLE
और CREATE TABLE
, कि लेनदेन mysqldump में डंप करने के लिए कोशिश कर रहा था की अखंडता को तोड़ सकते हैं। एक मेज (जो MySQL ब्रह्मांड में DDL है) छोटा किया जा रहा है और छोड़ने और सूचियों को जोड़ने कर सकते हैं विघटनकारी भी हो।
आप MySQL Performance Blog के Best रखे MySQLDump Secret से इस बारे में अधिक जानकारी प्राप्त कर सकते हैं । मैंने वास्तव में 12 कमांड का वर्णन करते हुए एक पिछले प्रश्न में इस बिंदु को संबोधित किया था जो कि mysqldump के लेनदेन की अखंडता को तोड़ सकता है: MySQL बैकअप IoDB
चेतावनी
उपसंहार
एक या दोनों पहलुओं ने mysqldump के दौरान एक पंक्ति को खिसकाने में योगदान दिया हो सकता है जो कि या तो फिर से लिखे गए नियमों या mysqldump के अलगाव से वंचित होने के कारण अस्तित्व में नहीं होना चाहिए।
सुझाव
मैं सभी INSERTs को देखने के लिए mysqldump की शुरुआत के बाद से सभी रिले लॉग का एक mysqlbinlog डंप करूंगा कि दास प्रक्रिया करेगा और यह देखेगा कि क्या उन पंक्तियों पहले से ही दास पर मौजूद हैं। यदि वे करते हैं, तो आप शायद दो काम कर सकते हैं:
1: सभी डुप्लिकेट कुंजी त्रुटियों को छोड़ दें
बस इसे गुलाम पर my.cnf में जोड़ें
[mysqld]
slave-skip-errors=1062
skip-slave-start
और mysql को पुनरारंभ करें। फिर भागोSTART SLAVE;
सभी डुप्लिकेट-कुंजी त्रुटियां बायपास हो जाएंगी। जब Seconds_Behind_Master
0 हो जाता है, तो उन पंक्तियों को हटा दें और mysql को पुनरारंभ करें।
2: पर्कोना उपकरण डाउनलोड करें
आपके लिए आवश्यक उपकरण हैं
दास में अंतर खोजने के लिए इनका उपयोग करें, और फिर उन्हें सही करें