Điểm:0

Tại sao các binlog được bật theo mặc định trong MySQL 8 và chúng sẽ tự động bị xóa?

lá cờ in

Gần đây, chúng tôi đã phát hiện ra rằng trong các cấu hình mặc định của MySQL 8, binlog.* tập tin lộn xộn trong /var/lib/mysql trên các máy Ubuntu 20.04.

tức là chúng tôi có kích thước cơ sở dữ liệu 4,2 GB và khoảng 500 MB binlog mỗi ngày.

Vì điều này, chúng tôi sắp hết dung lượng đĩa.

Chắc chắn rằng chúng tôi có thể vô hiệu hóa và xóa binlog, nhưng chúng tôi đang tự hỏi lý do của cấu hình mặc định này là gì và liệu chúng có bị xóa không (và chúng tôi chỉ cần tăng dung lượng lưu trữ trên máy của mình một chút).

Chúng tôi đoán rằng chúng không nên được giữ mãi mãi trong cấu hình mặc định vì khi đó sẽ cần có bộ nhớ inifite.

lá cờ ua
Thuộc về dba.stackexchange.com
Điểm:1
lá cờ ua

định cấu hình binlog_expire_logs_seconds. 86400 sẽ nói để làm sạch các bản ghi mỗi ngày. Tôi muốn kéo dài nó đến một hoặc hai tuần.

Trong khi đó, kiểm tra max_binlog_size. Nếu bạn muốn thanh lọc các binlog hàng ngày và bạn đang tạo ra 5MB/ngày, thì tôi khuyên bạn nên đặt mức này thành 100M.

Việc thanh lọc sau một ngày và 100M sẽ giữ mức sử dụng đĩa trong khoảng từ 500 đến 600M (hoặc có thể là 500M và 1100M, tôi không biết thuật toán chính xác).

500M mỗi ngày có vẻ như rất nhiều. Bạn có thường xuyên cập nhật từng hàng trong một bảng lớn không? Hay cái gì khác?

A đồng ý rằng cấu hình mặc định có thể không phải là tốt nhất. Có một số tình huống mặc định cần xem xét và quá trình cài đặt không hỏi bạn muốn gì:

  • Sao chép (cần binlog cho điều đó). 'Hết hạn' có thể đã được mặc định.
  • Muốn 'phục hồi tại thời điểm'. Một lần nữa, cần binlog, nhưng mặc định tốt là gì?
  • Không cần binlog.
  • khác?
lá cờ in
Vì vậy, trong cài đặt mặc định của Ubuntu, binlog sẽ được lưu giữ mãi mãi?
lá cờ ua
@Alex - Tôi nghĩ vậy, nhưng tôi không có bất kỳ bằng chứng nào để chứng minh điều đó. Các dịch vụ đám mây có khả năng thêm một cài đặt như vậy.
Điểm:1
lá cờ cn

giới thiệu

Đây thực sự là một thay đổi ngược dòng. Một số bản phân phối có thể thay đổi lại cài đặt, nhưng có khả năng là hầu hết sẽ chỉ đi ngược dòng.

Cơ sở mã được lưu trữ trên https://github.com/mysql/mysql-server Tệp thực tế nơi ghi nhật ký nhị phân được BẬT mặc định, là sql/sys_vars.cc

Tìm hiểu kỹ những lời đổ lỗi, cuối cùng tôi đã xác định được cam kết đã thay đổi mặc định: https://github.com/mysql/mysql-server/commit/9fa9504e5aaf68661aef2d735cecbd3c58eb7790

Nó đề cập đến một Mục nhật ký công việc cho nhóm mysql: #10470. Bạn có thể tra cứu chúng ở đây: https://dev.mysql.com/worklog/

Các phần cơ sở lý luận của mục Worklog đó cung cấp điều này:

cơ sở lý luận

Gần như tất cả các cài đặt sản xuất đều có nhật ký nhị phân được bật khi nó được sử dụng để sao chép và phục hồi tại thời điểm.

Do đó, chúng ta nên bật nó theo mặc định vì những lý do sau:

  1. Chúng tôi loại bỏ một bước cấu hình cho người dùng. 1A. Kích hoạt nó sau này yêu cầu khởi động lại mysqld.
  2. Chúng tôi nhận được nhiều thử nghiệm nội bộ giống như sản xuất hơn của máy chủ.
  3. Chúng ta có thể biết rõ hơn và đối mặt với tác động hiệu suất của nhật ký nhị phân

hết hạn

Trong mysql 8.0, thời hạn mặc định cho logfiles là 30 ngày, bị chi phối bởi biến binlog_expire_logs_seconds, mặc định là 2592000 giây. Để một cuộc thanh lọc thực sự xảy ra, phải có một bản ghi được xóa. Theo tài liệu, việc xóa nhật ký tự động xảy ra khi một tệp nhật ký nhị phân bị đóng và một tệp nhật ký mới bắt đầu. Kích thước tối đa của các tệp riêng lẻ có thể được điều chỉnh bởi max_binlog_size đó là tối đa 1GB. Tuy nhiên, có một cảnh báo trước rằng các giao dịch không được chia thành các tệp nhật ký và về mặt lý thuyết, chúng có thể lên tới 4GB. Bạn cũng có thể phát hành một nhật ký tuôn ra hoặc một thanh lọc nhật ký nhị phân tuyên bố hàng ngày chính mình.

lá cờ in
Vì vậy, tôi đoán chiến lược tốt nhất sẽ là "xóa nhật ký" sau bất kỳ bản sao lưu dựa trên mysqldump thành công nào mà chúng tôi thực hiện thường xuyên.Hoặc binlog thậm chí bằng cách nào đó (một phần) có thể thay thế bản sao lưu dựa trên mysqldump không? (có lẽ tôi nên hỏi một câu hỏi mới liên quan đến điều này?)
Gerrit avatar
lá cờ cn
Chỉ cần --flush-logs bên trong dòng lệnh mysqldump có nhược điểm là thực hiện thao tác xóa này cho từng cơ sở dữ liệu trong kết xuất. Sau đó, bạn thực sự nên sử dụng nó cùng với các tùy chọn --master-data và --single-transaction, điều này cũng sẽ cung cấp cho bạn khả năng sử dụng nhật ký nhị phân để khôi phục tại thời điểm cùng với bản sao lưu đầy đủ cuối cùng. Nhưng đó chắc chắn là giá trị một câu hỏi mới.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.