MySQL InnoDB sụp đổ sau khi chết


28

MySQL đã sụp đổ vào tôi sáng nay.

Ngoại trừ cơ sở dữ liệu tiêu chuẩn bao gồm MySQL, mọi thứ tôi sử dụng là InnoDB.

Tôi đã cố gắng khởi động lại daemon MySQL nhưng nó đã thất bại hai lần.

Sau đó tôi đã khởi động lại toàn bộ máy chủ và MySQL khởi động chính xác và hoạt động tốt kể từ đó.

Tệp nhật ký mysqld cho sự cố ban đầu chứa các mục sau:

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

Khi cố gắng khởi động lại daemon, tệp nhật ký mysqld chứa:

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

Sau khi máy chủ khởi động lại, tệp nhật ký mysqld chứa:

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

Tôi chưa bao giờ phải cố gắng giải mã một tệp nhật ký MySQL bị sập.

Tôi đang sử dụng phiên bản: 5.5,21-cll Máy chủ cộng đồng MySQL (GPL) của Atomicorp

Bất cứ ý tưởng về nơi tôi nên bắt đầu?

CẬP NHẬT: Từ khuyến nghị của @ Michael-sqlbot, tôi đã kéo syslog và tìm thấy điều này:

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).

Câu trả lời:


34

Tôi có tin tốt và tin xấu. Tin tốt là, hệ thống tập tin và mysql của bạn rất có thể ổn ... nhưng hãy kiểm tra / var / log / syslog hoặc tương đương để xem những gì khác đang xảy ra trên hệ thống của bạn trước 10:21:05.

Khi tin nhắn đầu tiên bạn đăng được ghi lại, máy chủ mysql của bạn đã chết.

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

Vì vậy, giả sử bạn đã không bỏ qua bất cứ điều gì trong nhật ký lỗi mysql, tôi sẽ nói rằng nó không bị sập và chết - nó thực sự đã bị giết.

Khi mysqld_safe (là trình bao bọc, không phải máy chủ) nhận ra rằng máy chủ không chạy và máy chủ đã chấm dứt một cách duyên dáng, nó đã khởi động lại nó cho bạn ...

120927 10:21:06 mysqld_safe mysqld restarted

... Sau đó, daemon máy chủ đã ghi lại một số thông báo khởi động bình thường ...

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

... nhưng khi mysqld yêu cầu hệ điều hành phân bổ 4GB bộ nhớ cho nhóm bộ đệm InnoDB ...

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

... hạt nhân nói "không."

InnoDB: mmap(4395630592 bytes) failed; errno 12

Kiểm tra nguồn kernel để chắc chắn:

#define ENOMEM      12  /* Out of memory */

Vâng. Vì vậy, mọi thông báo bên dưới dòng "fail; errno 12" nên được bỏ qua - chúng đều là tác dụng phụ của cái này.

Nhưng một lần nữa, tất cả những điều này đã xảy ra sau vụ tai nạn đầu tiên.

Dự đoán tốt nhất của tôi là tình trạng bộ nhớ cực thấp khiến hạt nhân của bạn ban đầu giết mysqld trong nỗ lực ổn định hệ thống.

Đương nhiên, bất cứ điều gì gây ra sự thiếu hụt bộ nhớ đã biến mất sau khi khởi động lại. Máy chủ mysql có thể phân bổ 4GB cho nhóm bộ đệm InnoDB và tất cả sẽ tốt cho đến khi bất cứ điều gì khiến bạn hết bộ nhớ gây ra nó một lần nữa.

Đầu tiên đoán: quá trình apache con chạy amok.


3

Điều này đã xảy ra với tôi gần đây và chủ đề này là vô giá để giúp tôi hiểu những gì đang xảy ra.

Tôi đang chạy một ngăn xếp LAMP trên Ubuntu 14.04 với Ram 1GB. Máy chủ của tôi liên tục gặp sự cố do lưu lượng truy cập web tăng đột biến. Đối với tôi, việc thay đổi tập tin cấu hình mysql chỉ kéo dài thời gian tôi gặp phải một sự cố ngẫu nhiên khác. Để kiểm tra và sửa lỗi này, cuối cùng tôi đã sử dụng công cụ ab của Apache:

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

10 đồng thời (-c) là ổn, cứ tăng dần cho đến khi tôi đạt 30 - bam - crash. Tôi đã lùi lại cho đến khi tôi tìm thấy một số an toàn và sau đó tôi đã điều chỉnh chỉ thị ServerLimit của Apache:

Máy chủ 20

Sau đó tôi có thể thay đổi -c thành bất kỳ số nào tôi muốn và tôi chưa gặp phải một vụ tai nạn nào khác.

Hy vọng rằng đó là hữu ích cho bất cứ ai gặp vấn đề tương tự.


Cảm ơn bạn rất nhiều! Tôi đã xé tóc với MySQL. Khi tôi thấy quá trình này có vẻ khả thi cho kịch bản của tôi. Tôi đã thử nó, và nó hoạt động chính xác như bạn mô tả trong thử nghiệm!
zkarj

1

Tôi đã gặp vấn đề tương tự như được đăng ban đầu cộng với các lỗi tham nhũng InnoDB định kỳ theo các khoảng thời gian ngẫu nhiên sau khi Mysql_safe bí ẩn khởi động lại.

Tôi thường có thể khởi động lại Mysql bằng cách dừng Apache trước.

Sau khi đọc bài đăng này, tôi đã tìm trong nhật ký nhật ký hệ thống của mình và tôi đã tìm thấy: kernel: Hết bộ nhớ: Kill process 19468 (mysqld) đạt 256 điểm hoặc hy sinh đứa trẻ Với cùng dấu thời gian khi mys mys bí ẩn gặp sự cố.

Tôi cũng kết hợp nó với các đợt lưu lượng truy cập và các tiến trình httpd (apache). Tôi đã giảm kích thước nhóm innoDB, tăng kích thước hoán đổi một chút và giới hạn số lượng tối đa các quy trình apache chỉ trong trường hợp.


0

khi bạn có

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

cố gắng phát hiện quá trình ăn bộ nhớ của bạn và trao đổi:

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

sau đó giết hết chúng:

ps -ef | grep eatingprocess |  grep -v grep  |  awk '{print $2}' | xargs kill -9
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.