Mysqld sẽ ghi lỗi vào var log nhật ký lỗi mysql

Tệp nhật ký đóng một vai trò quan trọng trong quá trình khắc phục sự cố của bất kỳ ứng dụng nào. Nó cũng hữu ích để tìm thông tin chi tiết về ứng dụng đang chạy. Bài viết này sẽ hướng dẫn bạn cách kích hoạt các loại nhật ký khác nhau trong máy chủ MySQL. Ngoài ra, bạn sẽ hiểu cách thay đổi vị trí tệp nhật ký trong máy chủ MySQL

Quảng cáo

Có 3 loại tệp nhật ký chủ yếu trong MySQL như sau

  • Nhật ký lỗi - Phần này chứa tất cả thông tin về các lỗi do máy chủ MySQL tạo ra. Điều này giúp gỡ lỗi mọi sự cố xảy ra với dịch vụ hoặc cơ sở dữ liệu MySQL
  • Nhật ký chung - Phần này chứa tất cả các nhật ký chung về hoạt động của MySQL như truy vấn, kết nối người dùng hoặc ngắt kết nối, v.v. Nó giúp tìm những gì đang xảy ra trên máy chủ MySQL
  • Nhật ký truy vấn chậm – Phần này chứa các câu lệnh SQL “chậm”, Tất cả các truy vấn mất nhiều thời gian hơn dự kiến ​​dẫn đến hiệu suất ứng dụng đó giảm xuống

Lỗi đăng nhập MySQL

Để bật nhật ký lỗi MySQL hoặc thay đổi vị trí nhật ký lỗi MySQL. Chỉnh sửa tệp cấu hình MySQL và cập nhật cài đặt sau trong [mysqld] theo yêu cầu của bạn. Tệp này chứa lỗi được tạo trong máy chủ MySQL

 [mysqld]
 log_error = /var/log/mysql/error.log

Đăng nhập chung vào MySQL

Để bật nhật ký chung trong MySQL hoặc thay đổi vị trí của tệp nhật ký chung, hãy chỉnh sửa tệp cấu hình và thực hiện các thay đổi sau. Bỏ ghi chú các dòng sau để bật nhật ký chung và thay đổi đường dẫn tệp nhật ký để tạo nhật ký trên thư mục khác. Tệp này chứa tất cả nhật ký chung của máy chủ mysql chẳng hạn. truy vấn, người dùng kết nối hoặc ngắt kết nối, v.v.

 general_log_file   = /var/log/mysql/mysql.log
 general_log        = 1

Đăng nhập truy vấn chậm trong MySQL

Để bật hoặc thay đổi đường dẫn tệp của nhật ký truy vấn chậm MySQL. Chỉnh sửa tệp cấu hình MySQL và bỏ ghi chú hoặc thêm dòng sau vào phần [mysqld]. Tệp này chứa nhật ký của những truy vấn cần nhiều thời gian hơn để hoàn thành. Truy vấn nào mất nhiều thời gian hơn được xác định là long_query_time được ghi lại

Theo mặc định, các bản ghi được đặt trong thư mục dữ liệu /pathname/mysql/data. Tên nhật ký mặc định là tên của hệ thống máy chủ, theo sau là mã định danh nhật ký, chẳng hạn như -bin

Để tạo các tệp nhật ký có tên cơ sở cụ thể (ví dụ: đường dẫn và tên nhật ký), hãy chỉ định tên cơ sở theo sau từ khóa nhật ký như trong ví dụ này.

[mysqld]
log-bin=/yourdirectory/yourbinlog
log=/yourdirectory/yourgenerallog
log-error=/yourdirectory/yourerrorlog
log-slow-queries=/yourdirectory/yourslowquerylog

  • Dừng và khởi động máy chủ MySQL để kích hoạt các thay đổi đối với /etc/my. tập tin tùy chọn cnf.
  • Khi sử dụng tệp nhật ký lỗi, hãy nhớ rằng tệp nhật ký lỗi cũng cung cấp các loại thông báo không phải lỗi, chẳng hạn như trong ví dụ này.

    wp/zfile cat /usr/mysql/transformerlogs/TPFCNETC-err.err
    CSMP0097I 11.44.43 CPU-C SS-WP1 IS-01
    CSMP0099I 09.44.43 010010-C WP/ZFILE CAT /USR/MYSQL/TRANSFORMERLOGS/TPFCNETC-ERR.ERR
    CSMP0097I 11.44.45 CPU-C SS-WP   SS-WP1   IS-01
    FILE0001I 09.44.45 START OF DISPLAY FROM cat /usr/mysql/transformerlogs/TPFCENTC-e
    070525  8:29:42  InnoDB: Started; log sequence number 0 43655
    070525  8:29:44  [Note] /usr/libexec/mysqld: ready for connections.      Version:
    '5.0.27-log'  socket:  ''  port: 3307  Source distribution
    070525  9:47:47  [Note] /usr/libexec/mysqld: Normal shutdown  

    Chúng tôi chưa thấy một phần mềm nào chạy hoàn hảo, không có bất kỳ sự cố nào. MySQL cũng không ngoại lệ. Đó không phải là lỗi của phần mềm – chúng ta cần làm rõ về điều đó. Chúng tôi sử dụng MySQL ở những nơi khác nhau, trên phần cứng khác nhau và trong các môi trường khác nhau. Nó cũng có cấu hình cao. Tất cả những tính năng đó làm cho nó trở thành sản phẩm tuyệt vời nhưng chúng có giá – đôi khi một số cài đặt sẽ không hoạt động chính xác trong một số điều kiện nhất định. Cũng khá dễ mắc những lỗi đơn giản của con người như lỗi chính tả trong cấu hình MySQL. May mắn thay, MySQL cung cấp cho chúng tôi phương tiện để hiểu điều gì sai thông qua nhật ký lỗi. Trong blog này, chúng ta sẽ xem cách đọc thông tin trong nhật ký lỗi

    Đây là phần thứ mười lăm trong loạt blog 'Trở thành một MySQL DBA'. Các bài viết trước của chúng tôi trong loạt bài về DBA bao gồm

    • Tối ưu hóa Gợi ý cho các truy vấn nhanh hơn,
    • Sử dụng EXPLAIN để cải thiện Truy vấn SQL,
    • Lập chỉ mục cơ sở dữ liệu,
    • Deep Dive pt-truy vấn-tiêu hóa,
    • Phân tích khối lượng công việc SQL với pt-query-digest,
    • Quá trình điều chỉnh truy vấn,
    • Điều chỉnh cấu hình,
    • Di chuyển trực tiếp bằng Bản sao MySQL,
    • Nâng cấp cơ sở dữ liệu,
    • Thay đổi cấu trúc liên kết sao chép,
    • Thay đổi lược đồ,
    • Tính sẵn sàng cao,
    • Phục hồi dữ liệu đã lưu,
    • Giám sát & Xu hướng

    Đăng nhập lỗi trên MySQL – khởi động và tắt sạch

    Nhật ký lỗi MySQL có thể chứa nhiều thông tin về các sự cố khác nhau mà bạn có thể gặp phải. Hãy bắt đầu với việc kiểm tra xem khởi đầu 'sạch sẽ' của MySQL trông như thế nào. Nó sẽ giúp bạn dễ dàng tìm thấy bất kỳ sự bất thường nào sau này

    Lúc đầu, tất cả các plugin (và công cụ lưu trữ, hoạt động như các plugin trong MySQL 5. 6) được bắt đầu. Nếu có gì đó không đúng, bạn sẽ thấy lỗi ở giai đoạn này

    2015-10-26 19:35:20 13762 [Note] Plugin 'FEDERATED' is disabled.

    Tiếp theo chúng ta có thể thấy một phần quan trọng liên quan đến khởi tạo InnoDB

    2015-10-26 19:35:20 13762 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-26 19:35:20 13762 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-26 19:35:20 13762 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-26 19:35:20 13762 [Note] InnoDB: Memory barrier is not used
    2015-10-26 19:35:20 13762 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using Linux native AIO
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-26 19:35:20 13762 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-26 19:35:21 13762 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-26 19:35:21 13762 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-26 19:35:21 13762 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-26 19:35:21 13762 [Note] InnoDB: Waiting for purge to start
    2015-10-26 19:35:21 13762 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 710963181

    Trong giai đoạn tiếp theo, các plugin xác thực được bắt đầu (nếu chúng được định cấu hình đúng)

    2015-10-26 19:35:21 13762 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work.
    2015-10-26 19:35:21 13762 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.

    Cuối cùng, bạn sẽ thấy thông tin về việc ràng buộc MySQL với IP và cổng đã định cấu hình. Bộ lập lịch sự kiện cũng được khởi tạo. Cuối cùng, bạn sẽ thấy thông báo 'sẵn sàng kết nối' cho biết MySQL đã khởi động chính xác

    2015-10-26 19:35:21 13762 [Note] Server hostname (bind-address): '*'; port: 33306
    2015-10-26 19:35:21 13762 [Note] IPv6 is available.
    2015-10-26 19:35:21 13762 [Note]   - '::' resolves to '::';
    2015-10-26 19:35:21 13762 [Note] Server socket created on IP: '::'.
    2015-10-26 19:35:21 13762 [Warning] 'proxies_priv' entry '@ [email protected]' ignored in --skip-name-resolve mode.
    2015-10-26 19:35:21 13762 [Note] Event Scheduler: Loaded 2 events
    2015-10-26 19:35:21 13762 [Note] /usr/sbin/mysqld: ready for connections.
    Version: '5.6.26-74.0'  socket: '/var/run/mysqld/mysqld.sock'  port: 33306  Percona Server (GPL), Release 74.0, Revision 32f8dfd

    Làm thế nào để quá trình tắt máy trông như thế nào?

    ________số 8_______

    Dòng này rất quan trọng – MySQL có thể bị dừng theo nhiều cách – người dùng có thể sử dụng tập lệnh init, có thể sử dụng ‘mysqladmin’ để thực thi lệnh SHUTDOWN, cũng có thể gửi SIGTERM tới MySQL để bắt đầu tắt cơ sở dữ liệu. Đôi khi bạn sẽ điều tra lý do tại sao phiên bản MySQL đã dừng - dòng này luôn là dấu hiệu cho thấy ai đó (hoặc thứ gì đó) đã kích hoạt tắt sạch. Không có sự cố nào xảy ra, MySQL cũng không bị giết

    2015-10-26 19:35:13 12955 [Note] Giving 12 client threads a chance to die gracefully
    2015-10-26 19:35:13 12955 [Note] Event Scheduler: Purging the queue. 2 events
    2015-10-26 19:35:13 12955 [Note] Shutting down slave threads
    2015-10-26 19:35:15 12955 [Note] Forcefully disconnecting 6 remaining clients
    2015-10-26 19:35:15 12955 [Warning] /usr/sbin/mysqld: Forcing close of thread 37  user: 'cmon'
    2015-10-26 19:35:15 12955 [Warning] /usr/sbin/mysqld: Forcing close of thread 53  user: 'cmon'
    2015-10-26 19:35:15 12955 [Warning] /usr/sbin/mysqld: Forcing close of thread 38  user: 'cmon'
    2015-10-26 19:35:15 12955 [Warning] /usr/sbin/mysqld: Forcing close of thread 39  user: 'cmon'
    2015-10-26 19:35:15 12955 [Warning] /usr/sbin/mysqld: Forcing close of thread 44  user: 'cmon'
    2015-10-26 19:35:15 12955 [Warning] /usr/sbin/mysqld: Forcing close of thread 47  user: 'cmon'

    Ở trên, MySQL đang đóng các kết nối còn lại – nó cho phép chúng tự kết thúc nhưng nếu chúng không đóng, chúng sẽ bị chấm dứt mạnh mẽ

    2015-10-26 19:35:15 12955 [Note] Binlog end
    2015-10-26 19:35:15 12955 [Note] Shutting down plugin 'partition'
    2015-10-26 19:35:15 12955 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
    2015-10-26 19:35:15 12955 [Note] Shutting down plugin 'ARCHIVE'
    ...

    Ở đây MySQL đang tắt tất cả các plugin đã được bật trong cấu hình của nó. Có rất nhiều trong số chúng nên chúng tôi đã xóa một số đầu ra để hiển thị tốt hơn

    2015-10-26 19:35:15 12955 [Note] Shutting down plugin 'InnoDB'
    2015-10-26 19:35:15 12955 [Note] InnoDB: FTS optimize thread exiting.
    2015-10-26 19:35:15 12955 [Note] InnoDB: Starting shutdown...
    2015-10-26 19:35:17 12955 [Note] InnoDB: Shutdown completed; log sequence number 710963181

    Một trong số đó là InnoDB – bước này có thể mất một chút thời gian vì việc tắt InnoDB hoàn toàn có thể mất một chút thời gian trên một máy chủ bận rộn, ngay cả khi đã bật tắt nhanh InnoDB (và đây là cài đặt mặc định)

    2015-10-26 19:35:17 12955 [Note] Shutting down plugin 'MyISAM'
    2015-10-26 19:35:17 12955 [Note] Shutting down plugin 'MRG_MYISAM'
    2015-10-26 19:35:17 12955 [Note] Shutting down plugin 'CSV'
    2015-10-26 19:35:17 12955 [Note] Shutting down plugin 'MEMORY'
    2015-10-26 19:35:17 12955 [Note] Shutting down plugin 'sha256_password'
    2015-10-26 19:35:17 12955 [Note] Shutting down plugin 'mysql_old_password'
    2015-10-26 19:35:17 12955 [Note] Shutting down plugin 'mysql_native_password'
    2015-10-26 19:35:17 12955 [Note] Shutting down plugin 'binlog'
    2015-10-26 19:35:17 12955 [Note] /usr/sbin/mysqld: Shutdown complete

    Quá trình tắt máy kết thúc với thông báo 'Shutdown complete'

    Lỗi cấu hình

    Hãy bắt đầu với một vấn đề cơ bản – lỗi cấu hình. Nó thực sự là một vấn đề phổ biến. Đôi khi chúng tôi đánh máy sai tên biến, trong khi chỉnh sửa. cnf. MySQL phân tích cú pháp các tệp cấu hình của nó khi khởi động. Nếu có gì đó không ổn, nó sẽ từ chối chạy. Hãy xem xét một số ví dụ

    2015-10-27 11:20:05 18858 [Note] Plugin 'FEDERATED' is disabled.
    2015-10-27 11:20:05 18858 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-27 11:20:05 18858 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-27 11:20:05 18858 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-27 11:20:05 18858 [Note] InnoDB: Memory barrier is not used
    2015-10-27 11:20:05 18858 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-27 11:20:05 18858 [Note] InnoDB: Using Linux native AIO
    2015-10-27 11:20:05 18858 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-27 11:20:05 18858 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-27 11:20:05 18858 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-27 11:20:05 18858 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-27 11:20:05 18858 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-27 11:20:05 18858 [Note] InnoDB: Waiting for purge to start
    2015-10-27 11:20:06 18858 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 773268083
    2015-10-27 11:20:06 18858 [ERROR] /usr/sbin/mysqld: unknown variable '--max-connections=512'
    2015-10-27 11:20:06 18858 [ERROR] Aborting

    Như bạn có thể thấy ở phần trên, ở đây chúng ta có một lỗi sao chép-dán rõ ràng liên quan đến biến max_connections. MySQL không chấp nhận tiền tố '–' trong tôi. cnf vì vậy nếu bạn đang sao chép cài đặt từ đầu ra 'ps' hoặc từ tài liệu MySQL, hãy ghi nhớ điều đó. Có nhiều thứ có thể sai nhưng điều quan trọng là lỗi 'biến không xác định' luôn chỉ cho bạn. cnf và một số lỗi mà MySQL không thể hiểu được

    Một vấn đề khác có thể liên quan đến cấu hình sai. Giả sử chúng tôi đã phân bổ quá mức bộ nhớ trên máy chủ của mình. Đây là những gì bạn có thể thấy

    2015-10-26 19:35:20 13762 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-26 19:35:20 13762 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-26 19:35:20 13762 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-26 19:35:20 13762 [Note] InnoDB: Memory barrier is not used
    2015-10-26 19:35:20 13762 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using Linux native AIO
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-26 19:35:20 13762 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-26 19:35:21 13762 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-26 19:35:21 13762 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-26 19:35:21 13762 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-26 19:35:21 13762 [Note] InnoDB: Waiting for purge to start
    2015-10-26 19:35:21 13762 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 710963181
    0

    Như bạn có thể thấy rõ, chúng tôi đã cố gắng phân bổ 512G bộ nhớ, điều không thể thực hiện được trên máy chủ này. InnoDB là bắt buộc để MySQL khởi động, do đó, lỗi khi khởi tạo InnoDB đã ngăn MySQL khởi động

    lỗi quyền

    Dưới đây là ba ví dụ về ba sự cố liên quan đến lỗi cấp phép

    2015-10-26 19:35:20 13762 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-26 19:35:20 13762 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-26 19:35:20 13762 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-26 19:35:20 13762 [Note] InnoDB: Memory barrier is not used
    2015-10-26 19:35:20 13762 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using Linux native AIO
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-26 19:35:20 13762 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-26 19:35:21 13762 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-26 19:35:21 13762 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-26 19:35:21 13762 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-26 19:35:21 13762 [Note] InnoDB: Waiting for purge to start
    2015-10-26 19:35:21 13762 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 710963181
    1

    Điều này là khá tự giải thích. Như đã nêu, MySQL không thể tìm thấy tệp chỉ mục cho nhật ký nhị phân do lỗi 'quyền bị từ chối'. Đây cũng là một điểm dừng khó khăn đối với MySQL, nó phải có khả năng đọc và ghi vào nhật ký nhị phân

    2015-10-26 19:35:20 13762 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-26 19:35:20 13762 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-26 19:35:20 13762 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-26 19:35:20 13762 [Note] InnoDB: Memory barrier is not used
    2015-10-26 19:35:20 13762 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using Linux native AIO
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-26 19:35:20 13762 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-26 19:35:21 13762 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-26 19:35:21 13762 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-26 19:35:21 13762 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-26 19:35:21 13762 [Note] InnoDB: Waiting for purge to start
    2015-10-26 19:35:21 13762 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 710963181
    2

    Trên đây là một vấn đề khác về quyền, lần này vấn đề liên quan đến tệp ibdata1 – không gian bảng hệ thống dùng chung được sử dụng cho InnoDB để lưu trữ dữ liệu nội bộ của nó (từ điển InnoDB và theo mặc định là hoàn tác nhật ký). Ngay cả khi bạn sử dụng innodb_file_per_table, đây là cài đặt mặc định trong MySQL 5. 6, InnoDB vẫn yêu cầu tệp này để có thể khởi chạy

    2015-10-26 19:35:20 13762 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-26 19:35:20 13762 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-26 19:35:20 13762 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-26 19:35:20 13762 [Note] InnoDB: Memory barrier is not used
    2015-10-26 19:35:20 13762 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using Linux native AIO
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-26 19:35:20 13762 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-26 19:35:21 13762 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-26 19:35:21 13762 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-26 19:35:21 13762 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-26 19:35:21 13762 [Note] InnoDB: Waiting for purge to start
    2015-10-26 19:35:21 13762 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 710963181
    3

    Ở đây chúng tôi có một ví dụ về các vấn đề về quyền liên quan đến lược đồ hệ thống (lược đồ 'mysql'). Như bạn có thể thấy, InnoDB đã báo cáo rằng nó không có quyền truy cập để mở các bảng trong lược đồ này. Một lần nữa, đây là một vấn đề nghiêm trọng, là điểm dừng khó khăn đối với MySQL

    Lỗi hết bộ nhớ

    Một loạt sự cố thường gặp khác liên quan đến máy chủ MySQL hết bộ nhớ. Nó có thể biểu hiện theo nhiều cách khác nhau nhưng phổ biến nhất là cách này

    2015-10-26 19:35:20 13762 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-26 19:35:20 13762 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-26 19:35:20 13762 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-26 19:35:20 13762 [Note] InnoDB: Memory barrier is not used
    2015-10-26 19:35:20 13762 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using Linux native AIO
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-26 19:35:20 13762 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-26 19:35:21 13762 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-26 19:35:21 13762 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-26 19:35:21 13762 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-26 19:35:21 13762 [Note] InnoDB: Waiting for purge to start
    2015-10-26 19:35:21 13762 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 710963181
    4

    mysqld_safe là một quy trình 'thiên thần' giám sát mysqld và khởi động lại nó khi nó chết. Nó đúng với MySQL nhưng không đúng với các nút Galera gần đây – trong trường hợp này, nó sẽ không khởi động lại MySQL nhưng bạn sẽ thấy trình tự sau

    2015-10-26 19:35:20 13762 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-26 19:35:20 13762 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-26 19:35:20 13762 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-26 19:35:20 13762 [Note] InnoDB: Memory barrier is not used
    2015-10-26 19:35:20 13762 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using Linux native AIO
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-26 19:35:20 13762 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-26 19:35:21 13762 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-26 19:35:21 13762 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-26 19:35:21 13762 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-26 19:35:21 13762 [Note] InnoDB: Waiting for purge to start
    2015-10-26 19:35:21 13762 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 710963181
    5

    Một cách khác mà sự cố bộ nhớ có thể xuất hiện là thông qua các thông báo sau trong nhật ký lỗi

    2015-10-26 19:35:20 13762 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-26 19:35:20 13762 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-26 19:35:20 13762 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-26 19:35:20 13762 [Note] InnoDB: Memory barrier is not used
    2015-10-26 19:35:20 13762 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using Linux native AIO
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-26 19:35:20 13762 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-26 19:35:21 13762 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-26 19:35:21 13762 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-26 19:35:21 13762 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-26 19:35:21 13762 [Note] InnoDB: Waiting for purge to start
    2015-10-26 19:35:21 13762 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 710963181
    6

    Điều quan trọng cần lưu ý là mã lỗi có thể dễ dàng được kiểm tra bằng tiện ích 'perror'. Trong trường hợp này, nó hoàn toàn rõ ràng chính xác những gì đã xảy ra

    2015-10-26 19:35:20 13762 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-26 19:35:20 13762 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-26 19:35:20 13762 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-26 19:35:20 13762 [Note] InnoDB: Memory barrier is not used
    2015-10-26 19:35:20 13762 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using Linux native AIO
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-26 19:35:20 13762 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-26 19:35:21 13762 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-26 19:35:21 13762 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-26 19:35:21 13762 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-26 19:35:21 13762 [Note] InnoDB: Waiting for purge to start
    2015-10-26 19:35:21 13762 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 710963181
    7

    Nếu bạn nghi ngờ có vấn đề về bộ nhớ hoặc thậm chí chúng tôi nói rằng - nếu bạn gặp sự cố MySQL không mong muốn, bạn cũng có thể chạy dmesg để lấy thêm dữ liệu. Nếu bạn thấy đầu ra như bên dưới, bạn có thể chắc chắn rằng sự cố là do OOM Killer chấm dứt MySQL

    2015-10-26 19:35:20 13762 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-26 19:35:20 13762 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-26 19:35:20 13762 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-26 19:35:20 13762 [Note] InnoDB: Memory barrier is not used
    2015-10-26 19:35:20 13762 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using Linux native AIO
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-26 19:35:20 13762 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-26 19:35:21 13762 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-26 19:35:21 13762 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-26 19:35:21 13762 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-26 19:35:21 13762 [Note] InnoDB: Waiting for purge to start
    2015-10-26 19:35:21 13762 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 710963181
    8

    InnoDB gặp sự cố

    InnoDB, hầu hết thời gian, là một công cụ lưu trữ rất chắc chắn và bền bỉ. Thật không may, trong một số trường hợp, dữ liệu có thể bị hỏng. Thông thường, nó liên quan đến cấu hình sai (ví dụ: vô hiệu hóa bộ đệm ghi kép) hoặc một số loại phần cứng bị lỗi (mô-đun bộ nhớ bị lỗi, lớp I/O không ổn định). Trong những trường hợp đó, InnoDB có thể bị sập. Sự cố cũng có thể được kích hoạt bởi lỗi InnoDB. Nó không phổ biến nhưng nó xảy ra theo thời gian. Bất kể lý do xảy ra sự cố, nhật ký lỗi thường trông giống nhau. Hãy xem qua một ví dụ trực tiếp

    2015-10-26 19:35:20 13762 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2015-10-26 19:35:20 13762 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-10-26 19:35:20 13762 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2015-10-26 19:35:20 13762 [Note] InnoDB: Memory barrier is not used
    2015-10-26 19:35:20 13762 [Note] InnoDB: Compressed tables use zlib 1.2.8
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using Linux native AIO
    2015-10-26 19:35:20 13762 [Note] InnoDB: Using CPU crc32 instructions
    2015-10-26 19:35:20 13762 [Note] InnoDB: Initializing buffer pool, size = 512.0M
    2015-10-26 19:35:21 13762 [Note] InnoDB: Completed initialization of buffer pool
    2015-10-26 19:35:21 13762 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-10-26 19:35:21 13762 [Note] InnoDB: 128 rollback segment(s) are active.
    2015-10-26 19:35:21 13762 [Note] InnoDB: Waiting for purge to start
    2015-10-26 19:35:21 13762 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.26-74.0 started; log sequence number 710963181
    9

    Mã InnoDB có đầy đủ các kiểm tra về độ chính xác – các xác nhận diễn ra rất thường xuyên và nếu một trong số chúng không thành công, InnoDB cố tình làm hỏng MySQL. Lúc đầu, bạn sẽ thấy thông tin về vị trí chính xác của xác nhận không thành công. Điều này cung cấp cho bạn thông tin về chính xác những gì có thể đã xảy ra – mã nguồn MySQL có sẵn trên internet và việc tải xuống mã liên quan đến phiên bản cụ thể của bạn khá dễ dàng. Nghe có vẻ đáng sợ nhưng không phải vậy - Mã MySQL được ghi lại đúng cách và ít nhất không phải là vấn đề để tìm ra loại hoạt động nào gây ra sự cố của bạn

    2015-10-26 19:35:21 13762 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work.
    2015-10-26 19:35:21 13762 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
    0

    Ghi nhật ký InnoDB cố gắng hữu ích nhất có thể – như bạn có thể thấy, có thông tin về quy trình khôi phục InnoDB. Trong một số trường hợp, nó có thể cho phép bạn khởi động MySQL và kết xuất dữ liệu InnoDB. Nó được sử dụng như “gần như là phương sách cuối cùng” – thêm một bước nữa và bạn sẽ kết thúc việc đào các tệp InnoDB bằng trình chỉnh sửa hex

    2015-10-26 19:35:21 13762 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work.
    2015-10-26 19:35:21 13762 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
    1

    Trong bước tiếp theo, bạn sẽ thấy một số bộ đếm trạng thái được in. Nó sẽ cung cấp cho bạn một số ý tưởng về cấu hình - có thể bạn đã cấu hình MySQL để sử dụng quá nhiều tài nguyên? . Đoạn thông tin này sẽ hướng dẫn bạn qua ngăn xếp và cho bạn biết loại cuộc gọi nào đã được thực hiện khi sự cố xảy ra. Hãy kiểm tra chính xác những gì đã xảy ra trong trường hợp cụ thể này

    2015-10-26 19:35:21 13762 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work.
    2015-10-26 19:35:21 13762 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
    2

    Chúng ta có thể thấy rằng vấn đề đã được kích hoạt khi MySQL đang thực thi lệnh DELETE. Các bản ghi được đọc tuần tự và quét toàn bộ bảng được thực hiện (trình xử lý read_rnd_next). Kết hợp với thông tin từ đầu

    2015-10-26 19:35:21 13762 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work.
    2015-10-26 19:35:21 13762 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
    3

    chúng ta có thể biết sự cố đã xảy ra khi InnoDB đang thực hiện quét vùng đệm (xác nhận được kích hoạt trong phương thức btr_pcur_move_to_next_page)

    2015-10-26 19:35:21 13762 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work.
    2015-10-26 19:35:21 13762 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
    4

    Cuối cùng, chúng ta có thể thấy (đôi khi, nó không phải lúc nào cũng được in) luồng nào đã kích hoạt xác nhận. Trong trường hợp của chúng tôi, chúng tôi có thể xác nhận rằng thực sự đó là một truy vấn XÓA đã gây ra một số loại sự cố

    2015-10-26 19:35:21 13762 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work.
    2015-10-26 19:35:21 13762 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
    5

    Như chúng tôi đã nói, thông thường MySQL khá dài dòng khi nói đến nhật ký lỗi. Tuy nhiên, đôi khi, mọi thứ trở nên sai lầm đến mức MySQL không thể thực sự thu thập nhiều thông tin. Nó vẫn đưa ra một dấu hiệu khá rõ ràng rằng có điều gì đó rất không ổn (tín hiệu 11). Mời các bạn xem ví dụ thực tế sau

    2015-10-26 19:35:21 13762 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work.
    2015-10-26 19:35:21 13762 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
    6

    Như bạn có thể thấy, chúng tôi có thông tin rõ ràng rằng MySQL đã bị sập. Không có thông tin bổ sung, mặc dù. Lỗi phân đoạn cũng có thể được ghi vào thông báo chẩn đoán. Trong trường hợp cụ thể này, dmesg đã trả về

    2015-10-26 19:35:21 13762 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work.
    2015-10-26 19:35:21 13762 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
    7

    Như bạn có thể thấy, nó không nhiều, nhưng thông tin đó có thể tỏ ra rất hữu ích nếu bạn quyết định gửi lỗi cho nhà cung cấp phần mềm, có thể là Oracle, MariaDB, Percona hoặc Codership. Nó cũng có thể hữu ích trong việc tìm kiếm các lỗi liên quan đã được báo cáo

    Không phải lúc nào cũng có thể khắc phục sự cố chỉ dựa trên thông tin được ghi trong nhật ký lỗi. Tuy nhiên, đó chắc chắn là một nơi tốt để bắt đầu gỡ lỗi trong cơ sở dữ liệu của bạn. Nếu bạn đang gặp một số loại cấu hình sai đơn giản, rất phổ biến, thì thông tin bạn tìm thấy trong nhật ký lỗi sẽ đủ để xác định nguyên nhân và tìm ra giải pháp. Nếu chúng ta đang nói về sự cố nghiêm trọng của MySQL, thì mọi thứ hoàn toàn khác – rất có thể bạn sẽ không thể tự mình khắc phục sự cố (nghĩa là trừ khi bạn là nhà phát triển quen thuộc với mã MySQL). . Các báo cáo lỗi như vậy chứa rất nhiều cuộc thảo luận và các mẹo hoặc cách giải quyết – có khả năng là bạn sẽ có thể triển khai một trong số chúng. Ngay cả thông tin rằng lỗi đã cho đã được sửa trong phiên bản x. y. z rất hữu ích – bạn sẽ có thể xác minh nó và, nếu nó giải quyết được vấn đề của bạn, lập kế hoạch nâng cấp. Trong trường hợp xấu nhất, bạn nên có đủ dữ liệu để tự tạo báo cáo lỗi

    Trong bài đăng tiếp theo của loạt bài này, chúng ta sẽ thực hiện một chuyến tham quan có hướng dẫn thông qua nhật ký lỗi (và các nhật ký khác) mà bạn có thể tìm thấy trong cụm Galera của mình. Chúng tôi sẽ đề cập đến những loại vấn đề bạn có thể gặp phải và cách giải quyết chúng

    Nhật ký lỗi MySQL là gì?

    Nhật ký lỗi chứa bản ghi về thời gian khởi động và tắt mysqld . Nó cũng chứa các thông báo chẩn đoán chẳng hạn như lỗi, cảnh báo và ghi chú xảy ra trong quá trình khởi động và tắt máy chủ cũng như trong khi máy chủ đang chạy.

    Nhật ký lỗi MySQL ở đâu?

    Nhật ký lỗi, truy vấn chậm và nhị phân được bật theo mặc định nhưng nhật ký truy vấn chung không được bật. Vị trí mặc định cho mỗi bản ghi là thư mục Dữ liệu MySQL ( C. \ProgramData\MySQL\MySQL Server [số phiên bản]\Data\) và tên nhật ký mặc định dựa trên tên thiết bị của máy tính.

    Làm cách nào để kiểm tra nhật ký lỗi của MySQL?

    Trên các hệ thống Ubuntu, vị trí mặc định cho MySQL là /var/log/mysql/error. đăng nhập. Trong nhiều trường hợp, các bản ghi lỗi được đọc dễ dàng nhất với chương trình less, một tiện ích dòng lệnh cho phép bạn xem các tệp nhưng không chỉnh sửa chúng. sudo less /var/log/mysql/error .

    Làm cách nào để đặt nhật ký lỗi trong MySQL?

    Để bật tệp nhật ký, hãy làm như sau. .
    Tạo /etc/my. tệp tùy chọn cnf với các định nghĩa sau đây sẽ tự động kích hoạt các tệp nhật ký. [mysqld] nhật ký log-bin nhật ký lỗi nhật ký truy vấn chậm. .
    Dừng và khởi động máy chủ MySQL để kích hoạt các thay đổi đối với /etc/my