Máy chủ MySQL tạo một số nhật ký có thể giúp bạn giám sát các hoạt động của máy chủ. Tuy nhiên, khi các bản ghi này được kích hoạt, chúng có thể tăng kích thước và bắt đầu chiếm quá nhiều dung lượng đĩa. Đây là lý do tại sao điều quan trọng là phải có một cách tự động lưu trữ và bảo quản các tệp nhật ký MySQL trong một khoảng thời gian nhất định, cũng như xóa các tệp cũ. Trong bài đăng trên blog này, chúng tôi mô tả một số phương pháp hay nhất để thiết lập và quản lý nhật ký lỗi MySQL, nhật ký chung và nhật ký truy vấn chậm cho các triển khai MySQL của bạn.
Thiết lập ghi nhật ký máy chủ MySQL
Hãy xem cách thiết lập 3 loại nhật ký sau:
Nhật ký Lỗi
Ghi lại tất cả các vấn đề gặp phải trong quá trình khởi động, chạy hoặc dừng mysqld. Nhật ký này có thể được kích hoạt bằng cách có tùy chọn sau trong tệp /etc/my.cnf:
- log_error =/ var / log / mysql / mysqld.log
Nhật ký truy vấn chung
Ghi nhật ký các kết nối máy khách đã thiết lập và các câu lệnh nhận được từ máy khách. Nhật ký này có thể được kích hoạt bằng cách có tùy chọn sau trong tệp /etc/my.cnf:
- general_log =BẬT
- general_log_file =/ var / log / mysql / general.log
Nhật ký truy vấn chậm
Ghi nhật ký các truy vấn mất hơn long_query_time giây để thực thi. Nhật ký này có thể được kích hoạt bằng tùy chọn sau trong tệp /etc/my.cnf:
- slow_query_log =BẬT
- slow_query_log_file =/ var / log / mysql / mysql-slowquery.log
Thiết lập tiêu chí cho việc xoay vòng nhật ký
Ví dụ:hãy có một số tiêu chí để quản lý nhật ký truy vấn MySQL chung. Chúng ta có thể đưa ra một bộ tiêu chí phù hợp để quản lý nhật ký bằng cách hỏi những câu hỏi sau:
Hỏi:Kích thước tối đa mà tệp nhật ký có thể phát triển là bao nhiêu?
Đ:Giả sử nó có thể tăng lên đến 300 MB sau đó cần được xoay và nén.
Hỏi:Tần suất bạn muốn xoay tệp nhật ký là bao nhiêu?
Đ:Có thể nói rằng chúng tôi muốn nhật ký được xoay vòng hàng ngày.
Hỏi:Bạn muốn giữ lại bao nhiêu tệp nhật ký cũ?
Đáp:Chúng tôi muốn giữ lại 30 tệp nhật ký cuối cùng.
Dựa trên các tiêu chí trên, dung lượng đĩa tổng thể cần thiết để quản lý nhật ký truy vấn chung là khoảng 1,2 GB. Giả sử tỷ lệ nén 90% - chúng tôi sẽ có 30 tệp nhật ký nén có kích thước 30 MB mỗi tệp và tệp nhật ký trực tiếp khoảng 300 MB.
Quản lý Nhật ký Máy chủ MySQL:Xoay, Nén, Giữ lại &Xóa Nhấp để Tweet
Quản lý nhật ký bằng Tiện ích logrotate của Linux
logrotate là một tiện ích Linux giúp quản lý hiệu quả các tệp nhật ký và cung cấp các tùy chọn để tự động xoay, nén và xóa các tệp nhật ký. Các tiêu chí được thiết lập ở trên có thể được định cấu hình cho tiện ích logrotate bằng cách tạo tệp cấu hình trong thư mục /etc/logrotate.d.
Hãy gọi tệp cấu hình này là mysqlgeneral và nội dung của tệp sẽ là:
/var/log/mysql/general.log{
compress
dateext
maxsize 300M
copytruncate
maxage 365
dateformat -%Y%m%d%s
daily
rotate 30
notifempty
}
Với các tùy chọn trên cho logrotate, nhật ký truy vấn chung sẽ được xoay vòng hàng ngày hoặc khi kích thước tệp nhật ký vượt quá 300 MB. Các nhật ký cũ được nén và 30 tệp như vậy sẽ được giữ nguyên. Xoay nhật ký sẽ bị bỏ qua nếu tệp nhật ký trống do cài đặt "notifempty".
Tùy chọn ‘copytruncate’ là để đảm bảo rằng tệp nhật ký hiện tại không bao giờ bị xóa trong quá trình xoay và chỉ nội dung của nó bị cắt bớt. Điều này rất quan trọng vì một số ứng dụng mong muốn rằng tệp nhật ký luôn có sẵn và không thể xóa nhật ký mà không dừng ứng dụng trước.
Bây giờ cấu hình xoay vòng nhật ký được đặt cho nhật ký truy vấn chung, tiện ích logrotate phải được chạy để cấu hình trên được thực thi. Điều này thường được thực hiện thông qua một công việc cron. Chúng tôi có thể đặt nó chạy hàng giờ bằng cách đặt tập lệnh logrotate vào thư mục /etc/cron.hourly:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
Vì vậy, với một vài bước đơn giản, chúng tôi đã thiết lập xoay vòng nhật ký cho nhật ký chung MySQL dựa trên tiêu chí của chúng tôi. Cách tiếp cận tương tự cũng có thể được thực hiện đối với nhật ký lỗi MySQL và nhật ký truy vấn chậm. Xem các bài đăng khác này để tìm hiểu thêm về cách tối ưu hóa triển khai MySQL của bạn:
- Tính kích thước vùng đệm InnoDB cho Máy chủ MySQL của bạn
- Hướng dẫn sử dụng MySQL - Định cấu hình và quản lý SSL trên máy chủ MySQL của bạn
- Giải thích về khung tính khả dụng cao của MySQL - Phần I:Giới thiệu