Làm thế nào để bạn điều chỉnh MySQL cho một khối lượng công việc nặng của InnoDB?


39

Giả sử hệ thống OLTP sản xuất với các bảng chủ yếu là InnoDB

  • Các triệu chứng phổ biến của một hệ thống bị nhầm lẫn / cấu hình sai là gì?
  • Thông số cấu hình nào bạn thường thay đổi nhất từ ​​mặc định của chúng?
  • Làm thế nào để bạn phát hiện các tắc nghẽn tiềm năng trước khi có một vấn đề?
  • Làm thế nào để bạn nhận ra và khắc phục sự cố hoạt động?

Bất kỳ giai thoại chi tiết các statusbiến và chẩn đoán cụ thể sẽ được đánh giá cao.


2
Câu hỏi này là rất rộng. Bạn có thể chia nó thành 4 câu hỏi không? (Và ngay cả câu hỏi gạch đầu dòng của bạn là vô cùng rộng, bạn có thể nhanh chóng chúng với những vấn đề cụ thể của bạn.?)
Brian Ballsun-Stanton

Câu trả lời:


16

Đây là một bài viết hay về điều chỉnh InnoDB từ Jenny Chen của Sun - cô ấy viết blog rất nhiều về MySQL, một số trong đó là dành riêng cho Solaris (ví dụ: sử dụng DTrace ) nhưng toàn bộ blog có đầy đủ các mẩu tin thú vị.


4
Jenny Chen là ai?
Pacerier

19

Thật thú vị, trong MySQL 5.5, giờ đây bạn có thể có nhiều nhóm bộ đệm innodb.

Các thông số bạn quan tâm là

Trong khoảng một tháng, tôi dự định sẽ thực hiện 112 vùng đệm innodb cho một khách hàng. Tôi sẽ cho bạn biết làm thế nào nó đi.

CẬP NHẬT 2011 / 02-27 21:57 EDT

Tôi đã tìm ra giá trị tối đa cho innodb_buffer_pool_instances là 64 Tôi quyết định định cấu hình 144 GB, vì vậy tôi đặt innodb_buffer_pool_instances thành 18 và innodb_buffer_pool_size thành 8. Tôi hiện đang tải máy chủ với 450 GB

CẬP NHẬT 2011-04-28 13:44 EDT

Tôi đã thử nhiều bể đệm InnoDB. Có quá nhiều khóa ren và ganh đua. Tôi đã thay đổi thành một Bộ đệm 162 GB duy nhất + cài đặt read_io_threads và write_io_threads thành 64 (giá trị tối đa). Cách này làm việc tốt hơn.

CẬP NHẬT 2012/07/03 17:27 EDT

Tôi đã học được điều gì đó tuyệt vời về MySQL. Nếu bạn phân bổ một Bộ đệm InnoDB nguyên khối duy nhất lớn hơn Tổng số được cài đặt được chia theo số lượng CPU vật lý , bạn sẽ kích hoạt HĐH để hoán đổi bộ nhớ trong khoảng thời gian thông thường do Nhóm bộ đệm InnoDB đầy đủ. Tùy chọn của MySQL 5.5 được gọi là innodb_buffer_pool_instances có thể được sử dụng để phân tách nhóm bộ đệm. Hôm qua, tôi đã thực hiện đúng điều này cho khách hàng mà tôi đã đề cập trong câu trả lời của tôi năm ngoái. Tôi vẫn còn 162GB cho Bộ đệm của khách hàng. Tôi đã đặt tùy chọn innodb_buffer_pool_instances của máy chủ thành 2 vì mỗi Máy chủ DB là hexacore kép. Tôi đã nghĩ đến việc đặt nó thành 12 nhưng sau đó một đồng nghiệp đã cho tôi xem một blog từ Jeremy Cole trên MySQL và Swappiness. Sau khi đọc nó, tôi đưa nó vào thực tế ngay lập tức cho khách hàng của tôi. Tôi đã chạy lệnh này

numactl --hardware

Tôi thấy một bản đồ 192GB RAM máy chủ là 96GB cho mỗi lõi vật lý. Do đó, tôi đặt innodb_buffer_pool_instances thành 2. Mọi thứ hiện đang tốt. Tôi sẽ cập nhật câu trả lời của mình để xem điều này ảnh hưởng đến việc hoán đổi bộ nhớ trong 2 lần tiếp theo.


xin chào @RolandoMySQLDBA, từ blog của jeremy Tôi không thể tìm thấy bất kỳ kết nối hoặc kết luận nào đặt thể hiện innodb bằng với số lượng CPU vật lý sẽ giải quyết vấn đề thay đổi. Có phải nhiều phiên bản innodb sẽ tự động cân bằng giữa các nút bộ nhớ mà không đặt numactl --interleave = all, xóa bộ đệm của Linux hoặc buộc HĐH phân bổ nhóm bộ đệm của InnoDB không?
Ôn Ren

@Rolando, ram đẹp 100 GB. Đó là khách hàng nào?
Pacerier

Tôi nghĩ rằng "các trường hợp" đã được triển khai như vậy: (số khối) MOD (num dụ) -> (trường hợp nào để đặt khối vào). Điều đó không có gì để làm với NUMA.
Rick James


4

Trước tiên hãy tăng Kích thước nhóm bộ đệm InnoDB mặc định trong my.cnf (tôi tin rằng nó mặc định là 8MB)

Có lẽ bạn nên đặt mức này thành 75% kích thước RAM (nói chung)


-1

Thông số cấu hình nào bạn thường thay đổi nhất từ ​​mặc định của chúng?

cấu hình bộ nhớ


Bạn có thể cung cấp một câu trả lời giải thích nhiều hơn? Những gì về họ làm bạn thay đổi? Tại sao bạn thực hiện những thay đổi đó? Quan sát dự kiến ​​của bạn sau khi thay đổi nói là gì? Làm thế nào để bạn biết những gì để thay đổi chúng để?
jcolebrand

Cấu hình mysql được chuẩn bị sẵn sàng để thiết lập nhanh các bảng myisam (vì hầu hết người dùng sử dụng theo cách đó), bên cạnh đó để có máy chủ được tối ưu hóa tốt, bạn nên chọn công cụ "chính" để sử dụng (innodb hoặc mysql) vì nó thực sự khá khó có thể cấu hình cơ sở dữ liệu cho hiệu suất
vượt trội
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.