MySQL InnoDB दुर्घटना पोस्टमार्टम


28

MySQL आज सुबह मुझ पर दुर्घटनाग्रस्त हो गई।

मानक के अपवाद के साथ MySQL डेटाबेस शामिल मैं सब कुछ का उपयोग करें InnoDB है।

मैंने MySQL डेमॉन को पुनः आरंभ करने का प्रयास किया लेकिन यह दो बार विफल रहा।

मैंने फिर पूरे सर्वर को फिर से शुरू किया और MySQL सही तरीके से शुरू किया और तब से अच्छा काम कर रहा है।

प्रारंभिक दुर्घटना के लिए mysqld लॉग फ़ाइल में निम्नलिखित शामिल हैं:

120927 10:21:05 mysqld_safe Number of processes running now: 0
120927 10:21:06 mysqld_safe mysqld restarted
120927 10:21:12 [Note] Plugin 'FEDERATED' is disabled.
120927 10:21:12 InnoDB: The InnoDB memory heap is disabled
120927 10:21:12 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120927 10:21:12 InnoDB: Compressed tables use zlib 1.2.3
120927 10:21:12 InnoDB: Using Linux native AIO
120927 10:21:13 InnoDB: Initializing buffer pool, size = 4.0G
InnoDB: mmap(4395630592 bytes) failed; errno 12
120927 10:21:13 InnoDB: Completed initialization of buffer pool
120927 10:21:13 InnoDB: Fatal error: cannot allocate memory for the buffer pool
120927 10:21:13 [ERROR] Plugin 'InnoDB' init function returned error.
120927 10:21:13 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
120927 10:21:13 [ERROR] Unknown/unsupported storage engine: InnoDB
120927 10:21:13 [ERROR] Aborting

120927 10:21:13 [Note] /usr/libexec/mysqld: Shutdown complete

120927 10:21:13 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

जब डेमॉन को पुनः आरंभ करने की कोशिश की जा रही है तो mysqld लॉग फाइल में शामिल है:

120927 10:43:44 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120927 10:43:44 [Note] Plugin 'FEDERATED' is disabled.
120927 10:43:44 InnoDB: The InnoDB memory heap is disabled
120927 10:43:44 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120927 10:43:44 InnoDB: Compressed tables use zlib 1.2.3
120927 10:43:44 InnoDB: Using Linux native AIO
120927 10:43:44 InnoDB: Initializing buffer pool, size = 4.0G
InnoDB: mmap(4395630592 bytes) failed; errno 12
120927 10:43:44 InnoDB: Completed initialization of buffer pool
120927 10:43:44 InnoDB: Fatal error: cannot allocate memory for the buffer pool
120927 10:43:44 [ERROR] Plugin 'InnoDB' init function returned error.
120927 10:43:44 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
120927 10:43:44 [ERROR] Unknown/unsupported storage engine: InnoDB
120927 10:43:44 [ERROR] Aborting

120927 10:43:44 [Note] /usr/libexec/mysqld: Shutdown complete

120927 10:43:44 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

सर्वर के पुनरारंभ होने के बाद mysqld लॉग फाइल में शामिल है:

120927 10:46:11 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120927 10:46:11 [Note] Plugin 'FEDERATED' is disabled.
120927 10:46:11 InnoDB: The InnoDB memory heap is disabled
120927 10:46:11 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120927 10:46:11 InnoDB: Compressed tables use zlib 1.2.3
120927 10:46:11 InnoDB: Using Linux native AIO
120927 10:46:11 InnoDB: Initializing buffer pool, size = 4.0G
120927 10:46:11 InnoDB: Completed initialization of buffer pool
120927 10:46:12 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
120927 10:46:12  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
120927 10:46:15  InnoDB: Waiting for the background threads to start
120927 10:46:16 InnoDB: 1.1.8 started; log sequence number 57665645675
120927 10:46:16 [Note] Event Scheduler: Loaded 0 events
120927 10:46:16 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.21-cll'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL) by Atomicorp

मुझे कभी भी क्रैश MySQL लॉग फाइल को डिक्रिप्ट करने की कोशिश नहीं करनी पड़ी।

मैं Atomicorp द्वारा संस्करण: 5.5.21-cll MySQL सामुदायिक सर्वर (GPL) का उपयोग कर रहा हूं

कोई भी विचार जहां मुझे शुरू करना चाहिए?

अद्यतन: @ माइकल- sqlbot की सिफारिश से, मैंने syslog को खींच लिया और यह पाया:

Sep 27 10:20:58 ip-97-74-197-181 kernel: pcscd invoked oom-killer: gfp_mask=0xd0, order=0, oomkilladj=0
Sep 27 10:21:00 ip-97-74-197-181 kernel:
Sep 27 10:21:00 ip-97-74-197-181 kernel: Call Trace:
Sep 27 10:21:00 ip-97-74-197-181 kernel:  [<ffffffff800c9f35>] out_of_memory+0x8e/0x2f3
Sep 27 10:21:00 ip-97-74-197-181 kernel:  [<ffffffff8002dfc7>] __wake_up+0x38/0x4f
Sep 27 10:21:00 ip-97-74-197-181 kernel:  [<ffffffff8000f67d>] __alloc_pages+0x27f/0x308
Sep 27 10:21:00 ip-97-74-197-181 kernel:  [<ffffffff80017a84>] cache_grow+0x139/0x3c7
Sep 27 10:21:00 ip-97-74-197-181 kernel:  [<ffffffff8005be28>] cache_alloc_refill+0x138/0x188
Sep 27 10:21:00 ip-97-74-197-181 kernel:  [<ffffffff8000ad2e>] kmem_cache_alloc+0x6c/0x76
Sep 27 10:21:00 ip-97-74-197-181 kernel:  [<ffffffff80012877>] getname+0x25/0x1c2
Sep 27 10:21:00 ip-97-74-197-181 kernel:  [<ffffffff8001a04b>] do_sys_open+0x17/0xbe
Sep 27 10:21:00 ip-97-74-197-181 kernel:  [<ffffffff8005d28d>] tracesys+0xd5/0xe0
Sep 27 10:21:00 ip-97-74-197-181 kernel:
Sep 27 10:21:11 ip-97-74-197-181 kernel: Mem-info:
Sep 27 10:21:20 ip-97-74-197-181 kernel: Node 0 DMA per-cpu:
Sep 27 10:21:27 ip-97-74-197-181 kernel: cpu 0 hot: high 0, batch 1 used:0
Sep 27 10:21:38 ip-97-74-197-181 kernel: cpu 0 cold: high 0, batch 1 used:0
Sep 27 10:21:49 ip-97-74-197-181 kernel: cpu 1 hot: high 0, batch 1 used:0
Sep 27 10:21:49 ip-97-74-197-181 kernel: cpu 1 cold: high 0, batch 1 used:0
Sep 27 10:21:49 ip-97-74-197-181 kernel: cpu 2 hot: high 0, batch 1 used:0
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 2 cold: high 0, batch 1 used:0
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 hot: high 0, batch 1 used:0
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 cold: high 0, batch 1 used:0
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 DMA32 per-cpu:
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 0 hot: high 186, batch 31 used:60
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 0 cold: high 62, batch 15 used:57
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 1 hot: high 186, batch 31 used:139
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 1 cold: high 62, batch 15 used:61
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 2 hot: high 186, batch 31 used:47
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 2 cold: high 62, batch 15 used:57
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 hot: high 186, batch 31 used:52
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 cold: high 62, batch 15 used:53
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 Normal per-cpu:
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 0 hot: high 186, batch 31 used:29
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 0 cold: high 62, batch 15 used:17
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 1 hot: high 186, batch 31 used:178
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 1 cold: high 62, batch 15 used:52
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 2 hot: high 186, batch 31 used:22
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 2 cold: high 62, batch 15 used:59
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 hot: high 186, batch 31 used:71
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 cold: high 62, batch 15 used:54
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 HighMem per-cpu: empty
Sep 27 10:21:52 ip-97-74-197-181 kernel: Free pages:       41728kB (0kB HighMem)
Sep 27 10:21:52 ip-97-74-197-181 kernel: Active:1031140 inactive:970428 dirty:0 writeback:0 unstable:0 free:10432 slab:4277 mapped-file:801 mapped-anon:1993003 pagetables:11636
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 DMA free:10096kB min:12kB low:12kB high:16kB active:0kB inactive:0kB present:9700kB pages_scanned:0 all_unreclaimable? yes
Sep 27 10:21:52 ip-97-74-197-181 kernel: lowmem_reserve[]: 0 2965 8015 8015
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 DMA32 free:24424kB min:4236kB low:5292kB high:6352kB active:1544164kB inactive:1428756kB present:3037024kB pages_scanned:7185900 all_unreclaimable? yes
Sep 27 10:21:52 ip-97-74-197-181 kernel: lowmem_reserve[]: 0 0 5050 5050
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 Normal free:7208kB min:7212kB low:9012kB high:10816kB active:2580172kB inactive:2453052kB present:5171200kB pages_scanned:12935183 all_unreclaimable? yes
Sep 27 10:21:52 ip-97-74-197-181 kernel: lowmem_reserve[]: 0 0 0 0
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
Sep 27 10:21:52 ip-97-74-197-181 kernel: lowmem_reserve[]: 0 0 0 0
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 DMA: 6*4kB 3*8kB 4*16kB 4*32kB 4*64kB 5*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 2*4096kB = 10096kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 DMA32: 24*4kB 3*8kB 1*16kB 1*32kB 1*64kB 3*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 5*4096kB = 24424kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 Normal: 0*4kB 13*8kB 8*16kB 0*32kB 19*64kB 1*128kB 2*256kB 0*512kB 1*1024kB 0*2048kB 1*4096kB = 7208kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 HighMem: empty
Sep 27 10:21:52 ip-97-74-197-181 kernel: 9391 pagecache pages
Sep 27 10:21:52 ip-97-74-197-181 kernel: Swap cache: add 5745145, delete 5744809, find 81873079/82270945, race 0+63
Sep 27 10:21:52 ip-97-74-197-181 kernel: Free swap  = 0kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Total swap = 2096472kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Free swap:            0kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: 2359296 pages of RAM
Sep 27 10:21:52 ip-97-74-197-181 kernel: 324458 reserved pages
Sep 27 10:21:52 ip-97-74-197-181 kernel: 21388 pages shared
Sep 27 10:21:52 ip-97-74-197-181 kernel: 336 pages swap cached
Sep 27 10:21:52 ip-97-74-197-181 kernel: Out of memory: Killed process 3044, UID 27, (mysqld).

जवाबों:


34

मेरे पास अच्छी खबर भी और बुरी खबर भी है। अच्छी खबर यह है, आपके फाइलसिस्टम और mysql की संभावना सबसे ज्यादा ठीक है ... लेकिन 10:21:05 से पहले आपके सिस्टम पर और क्या हो रहा है यह देखने के लिए जाँच / var / log / syslog या समतुल्य।

जब आपके द्वारा पोस्ट किया गया पहला संदेश लॉग किया गया था, तो आपका mysql सर्वर पहले ही मर चुका था ।

120927 10:21:05 mysqld_safe Number of processes running now: 0

इसलिए, यह मानते हुए कि आपने mysql त्रुटि लॉग में कुछ भी अनदेखा नहीं किया है, मैं यह कहने जा रहा हूं कि यह दुर्घटनाग्रस्त नहीं हुआ और मर गया - यह वास्तव में मारा गया था।

जब mysqld_safe (जो कि एक रैपर है, सर्वर नहीं है) को एहसास हुआ कि सर्वर नहीं चल रहा है, और यह कि सर्वर ने शालीनतापूर्वक समाप्त नहीं किया था, उसने इसे आपके लिए पुनः आरंभ किया ...

120927 10:21:06 mysqld_safe mysqld restarted

... तो सर्वर डेमन ने कुछ सामान्य स्टार्टअप संदेश लॉग किए ...

120927 10:21:12 [Note] Plugin 'FEDERATED' is disabled.
120927 10:21:12 InnoDB: The InnoDB memory heap is disabled
120927 10:21:12 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120927 10:21:12 InnoDB: Compressed tables use zlib 1.2.3
120927 10:21:12 InnoDB: Using Linux native AIO

... लेकिन जब mysqld ने ऑपरेटिंग सिस्टम को InnoDB बफर पूल के लिए 4GB मेमोरी आवंटित करने के लिए कहा ...

120927 10:21:13 InnoDB: Initializing buffer pool, size = 4.0G

... कर्नेल ने कहा "नहीं।"

InnoDB: mmap(4395630592 bytes) failed; errno 12

सुनिश्चित करने के लिए कर्नेल स्रोत की जाँच करना:

#define ENOMEM      12  /* Out of memory */

हाँ। इसलिए, "विफल; गलत 12" लाइन के नीचे के प्रत्येक संदेश की अवहेलना की जानी चाहिए - वे इस एक के सभी दुष्प्रभाव हैं।

लेकिन फिर, इन सभी चीजों के बाद हुआ पहली दुर्घटना के ।

मेरा सबसे अच्छा अनुमान है कि एक चरम कम स्मृति स्थिति ने आपके कर्नेल को मूल रूप से सिस्टम को स्थिर करने के प्रयास में mysqld को मार दिया।

स्वाभाविक रूप से, रिबूट के बाद जो भी स्मृति की कमी का कारण था। Mysql सर्वर InnoDB बफर पूल के लिए 4GB आवंटित करने में सक्षम था, और सभी तब तक अच्छा होना चाहिए जब तक कि जो कुछ भी आपको स्मृति से बाहर चलाने का कारण बनता है वह फिर से इसका कारण बनता है।

पहला अनुमान: अपाचे बच्चे प्रक्रियाएं एमोक चलती हैं।


3

यह हाल ही में मेरे साथ हुआ और मुझे यह समझने में मदद करने के लिए यह सूत्र अमूल्य है।

मैं Ubuntu 14.04 पर 1GB राम के साथ एक LAMP स्टैक चला रहा हूं। वेब ट्रैफ़िक स्पाइक्स के कारण मेरा सर्वर क्रैश होता रहा। मेरे लिए, mysql कॉन्फ़िग फ़ाइल के साथ फ़िडलिंग ने केवल उस समय की मात्रा को बढ़ाया है जिसे मैं एक और यादृच्छिक दुर्घटना का अनुभव करूँगा। इसे जांचने और ठीक करने के लिए, मैंने अंततः अपाचे के एब टूल का उपयोग किया:

ab -n 100 -c 10 http://gastonia.com/

10 समसामयिक (-c) ठीक था, इतना बढ़ा कि जब तक मैंने 30 - bam - क्रैश नहीं मारा। जब तक मैं सुरक्षित था एक नंबर नहीं मिला, और तब मैंने Apache के ServerLimit निर्देश को समायोजित किया:

ServerLimit 20

उसके बाद मैं अपने इच्छित किसी भी नंबर पर -c बदल सकता था, और मुझे अभी तक एक और दुर्घटना का अनुभव होना चाहिए।

उम्मीद है कि किसी को भी एक ही समस्या का अनुभव करने के लिए उपयोगी है।


आपको बहुत - बहुत धन्यवाद! मैं MySQL के साथ अपने बालों को फाड़ रहा था। जब मैंने इस प्रक्रिया को देखा तो यह मेरे परिदृश्य के लिए संभव था। मैंने इसे आजमाया, और जैसा आपने परीक्षण में वर्णित किया है, वैसा ही काम किया है!
zkarj

1

मैं एक ही समस्या के रूप में मूल रूप से पोस्ट किया गया है और साथ ही रहस्यमय Mysql_safe पुनरारंभ के बाद यादृच्छिक अंतराल पर InnoDB भ्रष्टाचार आवर्ती।

मैं आमतौर पर पहले अपाचे को रोककर मैसकरल को फिर से शुरू करने में सक्षम था।

इस पोस्ट को पढ़ने के बाद मैंने अपने syslog लॉग में देखा और मैंने पाया: कर्नेल: मेमोरी से बाहर: प्रक्रिया को मार डालो 19468 (mysqld) स्कोर 256 या बलिदान बच्चे रहस्यमय मैस्केल दुर्घटनाओं के समान टाइमस्टैम्प के साथ।

मैंने इसे ट्रैफ़िक के फटने और httpd (अपाचे) प्रक्रियाओं के ढेर से भी मिलान किया। मैंने innoDB पूल आकार को कम किया, स्वैप आकार में थोड़ी वृद्धि की और केवल मामले में एपाचे प्रक्रियाओं की अधिकतम संख्या को कैप किया।


0

जब तुम मिल गए

Sep 27 10:21:52 ip-97-74-197-181 kernel: Swap cache: add 5745145, delete 5744809, find 81873079/82270945, race 0+63
Sep 27 10:21:52 ip-97-74-197-181 kernel: Free swap  = 0kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Total swap = 2096472kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Free swap:            0kB

यह पता लगाने की कोशिश करें कि आपकी मेमोरी और स्वैप खाने की प्रक्रियाएँ क्या हैं:

for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less

फिर उन्हें सभी को मार डालो:

ps -ef | grep eatingprocess |  grep -v grep  |  awk '{print $2}' | xargs kill -9
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.