उत्पादन में आपके साथ सबसे खराब डेटाबेस दुर्घटना क्या है?

उदाहरण के लिए: ग्राहक तालिका की सभी पंक्तियों को अपडेट करना क्योंकि आप कहां से जोड़ना भूल गए हैं।

  1. यह कैसा महसूस कर रहा था, इसे महसूस कर रहा था और इसे अपने सहकर्मियों या ग्राहकों को रिपोर्ट कर रहा था?
  2. क्या सबक सीखे गए थे?
0
ro fr bn

16 उत्तर

हम ओरेकल क्लस्टर पर एक बस्टेड नोड को ठीक करने की कोशिश कर रहे थे।

स्टोरेज प्रबंधन मॉड्यूल में समस्याएं थीं, इसलिए हमने किसी अन्य नोड से कॉन्फ़िगरेशन को पुन: इंस्टॉल करने और कॉपी करने के इरादे से अन-इंस्टॉल बटन पर क्लिक किया।

हम्म, यह पूरे क्लस्टर पर लागू अन-इंस्टॉल बटन दिखाता है, इसलिए यह सिस्टम में सभी नोड्स से स्टोरेज प्रबंधन मॉड्यूल को हर्ष से हटा देता है।

उत्पादन क्लस्टर में हर नोड को दुर्घटनाग्रस्त करने के कारण। और चूंकि किसी भी नोड्स में स्टोरेज मैनेजर नहीं था, इसलिए वे नहीं आएंगे!

यहां बैकअप के बारे में एक दिलचस्प तथ्य है ... सबसे पुराना बैकअप ऑफ़-साइट घुमाया जाता है, और आप जानते हैं कि डेटाबेस पर आपकी सबसे पुरानी फाइलें क्या हैं? सिस्टम स्थापित होने पर स्थापित कॉन्फ़िगरेशन फ़ाइलें।

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

0
जोड़ा
update Customers set ModifyUser = 'Terrapin'

मैं कहां भूल गया - जहां निर्दोष है, लेकिन 5000+ ग्राहकों के साथ एक टेबल पर, मेरा नाम कुछ समय के लिए प्रत्येक रिकॉर्ड पर होगा ...

सबक सीखा: लेनदेन प्रतिबद्धता और रोलबैक का उपयोग करें!

0
जोड़ा

तालिका को छोटा करें T_DAT_STORE

T_DAT_STORE उस विभाग की तथ्य तालिका थी जिसमें मैं काम करता हूं। मुझे लगता है कि मैं विकास डेटाबेस से जुड़ा था। सौभाग्य से, हमारे पास दैनिक बैकअप है, जिसका उपयोग उस दिन तक नहीं किया गया है, और डेटा छह घंटों में बहाल किया गया था।

तब से मैं एक छंटनी से पहले सब कुछ संशोधित करता हूं, और समय-समय पर मैं बैकअप जांचने के लिए केवल मामूली तालिकाओं की बैकअप बहाली के लिए पूछता हूं (बैकअप मेरे विभाग द्वारा नहीं किया जाता है)

0
जोड़ा

एक जूनियर डीबीए करना था:

delete from [table] where [condition]

इसके बजाय उन्होंने टाइप किया:

delete [table] where [condition]

जो वैध टी-एसक्यूएल है लेकिन मूल रूप से जहां [शर्त] बिट पूरी तरह से अनदेखा करता है (कम से कम यह एमएसएसएलएल 2000/97 पर वापस आया - मैं भूल जाता हूं) और पूरी तालिका को मिटा देता है।

वह मजेदार था :-/

0
जोड़ा
निश्चित रूप से SQL Server 2000 पर नहीं। कोई SQL Server 97 नहीं है - पूर्ववर्ती SQL सर्वर 7 था।
जोड़ा लेखक splattne, स्रोत

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

टी-एसक्यूएल में @ कीथ नहीं है एक DELETE के लिए वैकल्पिक कीवर्ड से? उन दोनों बयान बिल्कुल वही काम करते हैं ...

0
जोड़ा

मेरे साथ हुई सबसे बुरी चीज यह थी कि एक उत्पादन सर्वर एचडी में सभी जगहों का उपभोग करता है। मैं SQL सर्वर का उपयोग कर रहा था इसलिए मैं डेटाबेस फ़ाइलों को देखता हूं और देखता हूं कि लॉग लगभग 10 जीबी था इसलिए मैं एक लॉग फ़ाइल को ट्रंक करना चाहता हूं, तो मैं हमेशा ऐसा करने का फैसला करता हूं। मैंने लॉग फ़ाइल को हटाएं और फिर फिर से संलग्न करें। खैर मुझे एहसास है कि अगर लॉग फ़ाइल ठीक से बंद नहीं है तो यह प्रक्रिया काम नहीं करती है। इसलिए मैं एक एमडीएफ फ़ाइल और कोई लॉग फ़ाइल के साथ समाप्त होता है। शुक्र है कि मैं माइक्रोसॉफ्ट साइट पर गया, मुझे डेटाबेस को रिकवरी के रूप में बहाल करने और दूसरे डेटाबेस में जाने का एक तरीका मिलता है।

0
जोड़ा

ग्राहक तालिका की सभी पंक्तियों को अपडेट करना क्योंकि आप कहां से खंड जोड़ना भूल गए हैं।

वह बिल्कुल मैंने किया था: | । मैंने सभी उपयोगकर्ताओं के लिए एक कंसोल स्ट्रिंग में पासवर्ड कॉलम अपडेट किया था जिसे मैंने कंसोल पर टाइप किया था। इसका सबसे बुरा हिस्सा था कि मैं उत्पादन सर्वर तक पहुंच रहा था और जब मैंने ऐसा किया तो मैं कुछ प्रश्नों की जांच कर रहा था। तब मेरे वरिष्ठों को पुराने बैकअप को वापस करना पड़ा और कुछ वास्तव में असंतुष्ट ग्राहकों से कुछ कॉल करना पड़ा। एक और समय है जब मैंने डिलीट स्टेटमेंट का उपयोग किया था, जिसे मैं भी बात नहीं करना चाहता ;-)

0
जोड़ा

लगभग 7 साल पहले, मैं देर से काम करने के बाद ग्राहक के डीबी के लिए एक परिवर्तन स्क्रिप्ट उत्पन्न कर रहा था। मैंने केवल संग्रहित प्रक्रियाओं को बदल दिया था, लेकिन जब मैंने एसक्यूएल उत्पन्न किया था तो मेरे पास "स्क्रिप्ट निर्भर ऑब्जेक्ट्स" की जांच की गई थी। मैंने इसे अपनी स्थानीय मशीन पर चलाया और सभी अच्छी तरह से काम करने लगे। मैंने इसे क्लाइंट के सर्वर पर चलाया और लिपि सफल हुई।

तब मैंने वेबसाइट लोड की और साइट खाली थी। मेरे डरावनी होने के लिए, "स्क्रिप्ट आश्रित ऑब्जेक्ट्स" सेटिंग ने मेरी संग्रहित प्रक्रियाओं को छूने वाली प्रत्येक तालिका के लिए ड्रॉप तालिका किया था।

मैंने तुरंत लीड देव और बॉस को बताया कि उन्हें क्या पता चल रहा है और पूछ रहा है कि डीबी का नवीनतम बैकअप कहां स्थित हो सकता है। 2 अन्य देवताओं में कॉन्फरेंस किया गया था और निष्कर्ष हम आया था कि कोई बैकअप सिस्टम भी नहीं था और कोई डेटा बहाल नहीं किया जा सका। ग्राहक ने अपनी पूरी वेबसाइट की सामग्री खो दी और मैं मूल कारण था। नतीजा हमारे ग्राहक को दिया गया $ 5000 क्रेडिट था।

मेरे लिए यह एक अच्छा सबक था, और अब मैं किसी भी बदलाव स्क्रिप्ट चलाने और पहले डीबी का बैक अप लेने के बारे में सतर्क हूं। मैं अभी भी एक ही कंपनी के साथ हूं, और जब भी चुटकुले बैकअप या डेटाबेस स्क्रिप्ट के बारे में आते हैं तो कोई हमेशा प्रसिद्ध "ड्रॉप टेबल" घटना लाता है।

0
जोड़ा

मैंने पाया कि मुझे ओरेकल रीडो लॉग फाइलों को समझ में नहीं आया (शब्दावली? यह बहुत समय पहले था) और एक सप्ताह का व्यापार डेटा खो गया, जिसे पेपर टिकटों से मैन्युअल रूप से फिर से चाब किया जाना था।

वहां था चांदी की अस्तर - सप्ताहांत के दौरान मैंने इनपुटिंग बिताई, मैंने अपनी व्यापार इनपुट स्क्रीन की उपयोगिता के बारे में बहुत कुछ सीखा, जो उसके बाद नाटकीय रूप से सुधार हुआ।

0
जोड़ा

मैंने वही किया जो आपने सुझाया था। मैंने ग्राहक तालिकाओं वाली एक तालिका में सभी पंक्तियों को अपडेट किया क्योंकि मैं अंत में "आईडी आईडी = 5" जोड़ना भूल गया था। वह एक ग़लती थी।

लेकिन मैं स्मार्ट और पागल था। मुझे पता था कि मैं एक दिन खराब हो जाऊंगा। मैंने "प्रारंभ लेनदेन" जारी किया था। मैंने रोलबैक जारी किया और फिर तालिका की जांच ठीक थी।

यह नहीं था।

उत्पादन में सीखा सबक: इस तथ्य के बावजूद हम कई कारणों से MySQL में InnoDB टेबल का उपयोग करना पसंद करते हैं ... सुनिश्चित करें कि आपने कुछ माईसाम टेबलों में से एक नहीं ढूंढ पाया है जो लेनदेन का सम्मान नहीं करते हैं और आप रोल नहीं कर सकते पीठ पर। किसी भी परिस्थिति में MySQL पर भरोसा न करें, और आदत से "प्रारंभ लेनदेन" जारी करना एक अच्छी बात है। यहां तक ​​कि सबसे बुरी स्थिति परिदृश्य में भी (यहां क्या हुआ) उसने कुछ भी नुकसान नहीं पहुंचाया और यह मुझे InnoDB तालिकाओं पर संरक्षित करता।

मुझे बैकअप से टेबल को पुनर्स्थापित करना पड़ा। सौभाग्य से हमारे पास रात के बैकअप हैं, डेटा लगभग कभी नहीं बदलता है, और तालिका कुछ दर्जन पंक्तियां होती है, इसलिए यह तत्काल के पास थी। संदर्भ के लिए, कोई भी नहीं जानता था कि हमारे पास अभी भी गैर-इनो डीबी टेबल थे, हमने सोचा कि हमने उन्हें बहुत पहले बदल दिया था। किसी ने मुझे इस गोचा के लिए देखने के लिए कहा, कोई भी नहीं जानता था कि यह वहां था। मेरे मालिक ने वही सटीक चीज की होगी (अगर वह कहां क्लॉज टाइप करने से पहले बहुत जल्दी प्रवेश करता था)।

0
जोड़ा

मैंने सोचा कि मैं परीक्षण डीबी (जो स्पष्ट रूप से मामला नहीं था) में काम कर रहा था, इसलिए जब मैंने 'परीक्षण' समाप्त किया, तो मैं मानक परीक्षण डेटा पर वापस सभी डेटा को रीसेट करने के लिए एक स्क्रिप्ट चलाता हूं। .. आउच!
सौभाग्य से यह उस डेटाबेस पर हुआ जिसमें बैकअप था, इसलिए पता लगाने के बाद मैंने कुछ गलत किया, हम आसानी से मूल डेटाबेस वापस ला सकते हैं।

हालांकि इस घटना ने कंपनी को पढ़ाया था जिसे मैंने realy उत्पादन और परीक्षण पर्यावरण को अलग करने के लिए काम किया था।

0
जोड़ा

मैं एक बार अद्यतन कर्सर लिखने में कामयाब रहा जो कभी बाहर नहीं निकला। 2 एम + पंक्ति तालिका पर। लॉक बस इस 16-कोर, 8 जीबी रैम (2002 में!) बॉक्स तक बढ़े और बढ़े, वास्तव में एक ठहराव (नीली स्क्रीन विविधता) के लिए जमीन।

0
जोड़ा

मुझे लगता है कि मेरी सबसे बुरी गलती थी

truncate table Customers
truncate table Transactions

मैंने नहीं देखा कि एमएसएसएलएल सर्वर जिस पर लॉग इन किया गया था, मैं अपनी स्थानीय प्रतिलिपि को साफ़ करना चाहता था ... परिचित "ओएच एस ** टी" जब इसे हटाने के लिए लगभग आधे सेकेंड से काफी समय लग रहा था, तो मेरे मालिक ने देखा कि मैं गया दृढ़ता से सफेद, और पूछा कि मैंने अभी क्या किया। लगभग आधा मिनट बाद, हमारी साइट मॉनीटर पागल हो गई और साइट को नीचे कहने के लिए हमें ईमेल करना शुरू कर दिया।

सबक सीखा? पूर्ण रूप से आवश्यक डीबी से अधिक लंबे समय तक रहने के लिए कनेक्शन को कभी भी न रखें।

बैकअप से डेटा को बहाल करने के लिए केवल 4 बजे तक ही था! मेरे मालिक ने मेरे लिए खेद व्यक्त किया, और मुझे रात का खाना खरीदा ...

0
जोड़ा
हाँ, मैंने पहले यह लगभग किया है। जितनी जल्दी हो सके रहने के लिए निश्चित रूप से हमेशा बंद कनेक्शन।
जोड़ा लेखक alexmac, स्रोत
जब मैंने इसे पढ़ा तो मैंने पहली बार लाइव डेटाबेस सर्वर के लिए अपना खुला एसएसएमएस कनेक्शन बंद कर दिया था ...
जोड़ा लेखक Moo, स्रोत

मैं एक छोटी ई-कॉमर्स कंपनी के लिए काम करता हूं, वहां 2 डेवलपर्स और डीबीए हैं, मैं डेवलपर्स में से एक हूं। मैं आमतौर पर फ्लाई पर उत्पादन डेटा अपडेट करने की आदत में नहीं हूं, अगर हमने उन प्रक्रियाओं को संग्रहीत किया है जिन्हें हमने बदल दिया है, तो हम उन्हें स्रोत नियंत्रण के माध्यम से डालते हैं और आधिकारिक तौर पर तैनाती नियमित सेटअप करते हैं।

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

update facilities set address1 = '123 Fake Street'
    where facilityid in (1, 2, 3)

ऐसा कुछ। इसे परीक्षण में चलाएं, 3 पंक्तियां अपडेट की गईं। इसे क्लिपबोर्ड पर कॉपी किया गया, इसे हमारे उत्पादन एसक्यूएल बॉक्स पर टर्मिनल सेवाओं में चिपकाया, इसे चलाया, डरावनी में देखा क्योंकि इसमें 100 सेकंड पंक्तियों को निष्पादित करने और अपडेट करने में 5 सेकंड लग गए। किसी भी तरह मैंने पहली पंक्ति की प्रतिलिपि बनाई, न कि दूसरी, और मैं CTRL + V , CTRL + ई के रूप में ध्यान नहीं दे रहा था 'घ।

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

सीखा सबक उस चीज पर ध्यान दे रहा था जिसे आप कॉपी और पेस्ट कर रहे हैं, शायद कुछ अन्य भी।

0
जोड़ा

मुझे नियंत्रण से बाहर होने वाले सभी एसक्यूएल स्टेटमेंट्स को याद नहीं है, लेकिन मेरे पास एक सबक सीखा है - इसे लेनदेन में करें यदि आप कर सकते हैं (बड़े लॉगफाइल से सावधान रहें!)।

उत्पादन में, यदि आप कर सकते हैं, तो पुराने तरीके से आगे बढ़ें:

  1. रखरखाव विंडो का उपयोग करें
  2. बैकअप
  3. अपना परिवर्तन करें
  4. को सत्यापित
  5. कुछ गलत होने पर पुनर्स्थापित करें

सुंदर uncool, लेकिन आम तौर पर काम कर रहे हैं और इस प्रक्रिया को किसी और को अपनी रात की शिफ्ट के दौरान चलाने के लिए भी संभव है, जबकि आप अपनी अच्छी नींद प्राप्त कर रहे हैं :-)

0
जोड़ा

इसके प्रभाव के लिए कुछ:

अद्यतन ईमेल सेट संसाधित समय = शून्य, भेजा समय = शून्य

एक उत्पादन न्यूज़लेटर डेटाबेस पर, डेटाबेस में हर ईमेल भेज रहा है।

0
जोड़ा