मुझे पता चला कि विभाजन की मेज पर काम करने वाली इस समस्या को हल करने के लिए शायद एक अच्छा तरीका है। मुझे कुछ साल पहले से विभाजन को छोड़ने की आवश्यकता थी, और 2014 के लिए कुछ जोड़ना था। लगभग सभी विभाजन इस त्रुटि की रिपोर्ट करते हैं, इसलिए पुराने भी। बहुत बुरा दुर्घटना।
इसलिए जब पुराना पुराना हो रहा है और MAXVALUE विभाजन (पिछले एक) के REORGANIZE का उपयोग करते हुए, यह नई फाइलें बनाएगा जो ठीक हैं, इसलिए मुझे कम और कम चेतावनी मिलती है। इस बीच, यह लॉग अनुक्रम काउंटर को बढ़ाने में मदद करता है, इसलिए मुझे फर्जी डेटा डालने की आवश्यकता नहीं है। मैं यह एक मास्टर सर्वर btw पर हो रहा है ...
तो यह:
ALTER TABLE Events DROP PARTITION p1530 , p1535 , p1540 , p1545 ,
p1550, p1555 , p1560 , p1565 , p1570 , p1575 , p1580 , p1585 , p1590 ,
p1595 , p1600 , p1605 , p1610 , p1615 , p1620 , p1625 , p1630 , p1635 ,
p1640 , p1645 , p1650 , p1655 , p1660 , p1665 , p1670 , p1675 , p1680 ,
p1685 , p1690 , p1695 , p1700 , p1705 , p1710 , p1715 , p1720 , p1725 ,
p1730 , p1735 , p1740 , p1745 , p1750 , p1755 , p1760 , p1765 , p1770 ,
p1775 , p1780 , p1785 , p1790 , p1795 , p1800 , p1805 , p1810 , p1815 ,
p1820 , p1825 , p1830 , p1835 , p1840;
और इस:
ALTER table Events REORGANIZE PARTITION p3000 INTO (
PARTITION p3500 VALUES LESS THAN (TO_DAYS('2013-01-01')),
PARTITION p3510 VALUES LESS THAN (TO_DAYS('2013-01-04')),
PARTITION p3520 VALUES LESS THAN (TO_DAYS('2013-01-07')),
PARTITION p3530 VALUES LESS THAN (TO_DAYS('2013-01-10'))
...
PARTITION p4740 VALUES LESS THAN (TO_DAYS('2014-01-08')),
PARTITION p9000 VALUES LESS THAN MAXVALUE)
यह प्रभावी रूप से परिवर्तन में प्रत्येक विभाजन को छोड़ देगा और उसमें जो कुछ था उसकी सामग्री की एक अस्थायी प्रतिलिपि के साथ फिर से बनाएगा। यदि आप चाहें तो आप इसे प्रति तालिका कर सकते हैं, मेरा आवेदन इसके लिए अनुमति देता है, इसलिए सिंक किए गए बैकअप आदि के बारे में चिंता करने की कोई आवश्यकता नहीं है।
अब तालिका के बाकी हिस्सों के लिए, क्योंकि मैंने इस प्रक्रिया में सभी विभाजनों को नहीं छुआ है, कुछ लॉग अनुक्रम चेतावनी के साथ छोड़ दिए जाएंगे, उन लोगों के लिए जो टूट गए हैं और इस पुनर्गठित कार्रवाई द्वारा कवर किए गए हैं जो मैं संभवतः इसे चलाऊंगा:
ALTER TABLE Events REBUILD PARTITION p0, p1;
या वो
ALTER TABLE Events OPTIMIZE PARTITION p0, p1;
इसलिए, मुझे यह सोचकर मिला, आप इसे सादे वेनिला तालिकाओं के साथ कर सकते हैं, हैश द्वारा अस्थायी जोड़ विभाजन और बाद में इसे हटा दें (या उन्हें रखें, मैं विभाजन की जोरदार सिफारिश कर सकता हूं)।
मैं mariadb का उपयोग कर रहा हूँ, फिर भी mysql नहीं (तो XtraDB)
शायद इससे किसी को मदद मिले। मैं अभी भी इसे चला रहा हूं, अब तक बहुत अच्छा है। बदलते हुए इंजन का काम भी ऐसा लगता है, इसलिए मैं इसे MyIsam और उन्हें वापस InnoDB के बीच लाता हूं।
यह काफी तार्किक है, यदि आप इंजन बदलते हैं, तो तालिका निर्दोष से गायब हो जाती है, इसलिए यह अब समस्या नहीं होगी।
ALTER TABLE Events ENGINE=MyISAM;
ALTER TABLE Events ENGINE=InnoDB;
यहाँ काम करने लगता है। मैं विभाजित तालिकाओं पर कुछ बातों की पुष्टि कर सकता हूं:
- ALTER TABLE xyz Engine = InnoDB बहुत धीमा है, Aria (mariadb) से दो बार तेज है, लेकिन सामान्य रूप से लॉग अनुक्रम काउंटर को बढ़ाने का एक धीमा तरीका है
- सारणी सारणी REBUILD विभाजन सभी तालिकाओं को 'ठीक' करने और काउंटर को बढ़ाने में मदद करने का सबसे तेज़ तरीका है
- अन्य सारणी विश्लेषण के भाग के लिए सभी पूर्व की तुलना में धीमी है और विभाजन को फिर से लिखने के लिए ठीक नहीं है। REBUILD एक अस्थायी तालिका स्कीमा को फिर से लिखने का आश्वासन देता है।
मैंने पिछले वाले को कई तालिकाओं पर इस्तेमाल किया। चेतावनी तब होती है जब वह फ़ाइलों को खोलने की कोशिश कर रहा होता है और हर विभाजन परिभाषा के लिए एक होता है जो काउंटर मुद्दों के साथ खुलता है। लगभग आखिरी टेबल के लिए आज काउंटर पर लुढ़का। मुझे लगता है कि एक बार यह सब संसाधित हो जाने के बाद बाइनरी लॉग को फ्लश करने की आवश्यकता होती है।
अद्यतन : मैं कुछ चीजों को समाप्त कर सकता हूं अब मैं इस समस्या को हल करने में कामयाब रहा।
- मेरी दुर्घटना आरिया प्रारूप (मारियाबीडी) में एक टेबल पर विभाजन को पुनर्गठित करने के कारण हुई थी।
- (मेरे लिए) विभाजन का पुनर्निर्माण करते हुए सबसे अच्छा और सबसे तेजी से काम किया ताकि अनुक्रम का मुकाबला किया जा सके। इंजन को बदलना धीमा है और आपको इसे प्रभावित करने के लिए दो बार करने की आवश्यकता है। innoDB में परिवर्तन करना काफी धीमा है MyIsam या Aria के लिए।
- मैंने मारबाडी 5.3 को अपग्रेड किया और 5.5 को नहीं (:: 5.2) किया और यह ठीक काम करता है। मुझे लगता है कि इस संयोजन का उपयोग करने के लिए 5.5, (और पुष्ट बग) में विभाजन के साथ बहुत अधिक समस्याएं हैं।
- लॉग अनुक्रम काउंटर को रीसेट करने के लिए वास्तव में एक बेहतर तरीका होना चाहिए।