Nhật ký nhị phân mysql làm cho đĩa đầy


7

Đột nhiên, tôi đã gỡ trang web của mình xuống (drupal 6.19) và không thể khởi động mysql (quá nhiều bảng bị hỏng). bằng cách kiểm tra df -h , tôi thấy rằng phân vùng MySQL đã đầy do các tệp nhật ký nhị phân rất lớn (tôi giữ nhật ký nhị phân chỉ trong một ngày, expire_logs_days = 1 ); bằng cách kiểm tra mysqlbinlog cho một trong các bản ghi bin tôi phát hiện ra rằng hầu hết các mục nhập dành cho các bảng bộ đệm (cache_form, boost_cache, boost_cache_relationships, cache_content, v.v.) và cho bảng phiên; một số dữ liệu được lặp đi lặp lại nhiều lần.
Nhân tiện, tôi đã xem ls -lh và các tệp bin-log đã lớn hơn theo cấp số nhân (cứ sau một hoặc hai phút tôi lại nhận được tệp binlog mới với kích thước tệp 100M !!)

Bạn có bất cứ ý tưởng về những gì gây ra điều này? Làm thế nào tôi có thể khắc phục vấn đề này?


Tôi cập nhật câu trả lời của tôi. Cảm ơn bạn đã chỉ ra rằng đó là những bảng chứ không phải DB.
RolandoMySQLDBA

Đã 1 năm rồi, bạn đã giải quyết nó như thế nào?
confiq

Câu trả lời:


6

Tôi đoán một cải tiến rõ ràng sẽ là sử dụng một phụ trợ bộ đệm khác.

Nếu bạn có một máy chủ duy nhất và đủ bộ nhớ, bạn có thể sử dụng phụ trợ APC (D6: http://drupal.org/project/cacherouter , D7: http://drupal.org/project/apc ) để có nhiều bộ nhớ cache thường được sử dụng trực tiếp trong bộ nhớ chia sẻ. Đó có lẽ là giải pháp bộ nhớ cache nhanh nhất bạn có thể nhận được.

Một cách khác là Memcached , điều này đặc biệt thú vị nếu bạn có nhiều máy chủ nên chia sẻ bộ đệm.

Lưu ý rằng bạn không thể di chuyển cache_form vì có chứa thông tin về các biểu mẫu hiện đang hiển thị và không thực sự là bộ đệm vì nó chứa thông tin duy nhất, không chỉ là những thứ tổng hợp như những thứ khác, luôn có thể bị xóa. Ngoài ra, một số lưu trữ khác, đặc biệt là cache_update, bạn có thể muốn giữ lại trong cơ sở dữ liệu, bởi vì đó không nên xóa như phần còn lại vì nó có chứa thông tin về bản cập nhật thông tin của các module đã qua sử dụng của bạn, cái gì mà không làm thay đổi điều đó thường xuyên và lon rất chậm để tìm nạp lại nếu bạn có nhiều trong số họ.

Bạn cũng có thể di chuyển thông tin phiên ra khỏi cơ sở dữ liệu, ví dụ bạn có thể đặt nó trong MongoDB và có thể có những thông tin khác.


2

Bạn đã kiểm tra ngày của nhật ký bin của bạn? cài đặt expire_logs_days không phải là "tự động ma thuật". Nó chỉ có hiệu lực khi khởi động lại mysql hoặc khi thực hiện lệnh flush_logshoặc khi đạt được max_binlog_size .

Sau đó, mysql sẽ xoay tệp nhật ký hiện tại (tạo tệp mới) và xóa các tệp cũ hơn 1 ngày (trong trường hợp của bạn)

Hãy thử thiết lập cài đặt cuối cùng này trong my.cnf của bạn và xem nó có hoạt động kết hợp với expire_log_days không .


tất cả chúng được tạo ra trong cùng một ngày và bằng cách xem ls -lh, các tệp bin-log đã lớn hơn theo cấp số nhân !!. tôi đã nhận được tệp mới với 100 triệu cứ sau 1 hoặc 2 phút
Alaa
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.