Bao lâu sau khi cập nhật expire_logs_days param và khởi động lại sql thì các binlog cũ sẽ bị xóa?


16

MySQL 5.1.x | InnoDB | các cửa sổ

Thư mục dữ liệu mysql của tôi đang bắt đầu điền vào nhật ký bin.

Tôi hiện có các cài đặt sau được định cấu hình trong máy chủ mysql của Windows:

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=25

Tôi đang dự định thay đổi cài đặt expire_logs_days thành expire_logs_days=10và trả lại dịch vụ mysql. Ngay sau khi thực hiện thay đổi này, tôi có thể mong đợi các bản ghi bin cũ sẽ được xóa.

Đây có phải chỉ được thực hiện như là một phần của một nhiệm vụ theo lịch trình hàng đêm? Hay điều này nên ngay lập tức?

Câu trả lời:


29

Nó sẽ được xử lý ngay lập tức khi khởi động mysql.

Bạn không cần phải đợi khởi động lại mysql.

Đầu tiên, được đặt thành expire_logs_days10 trong /etc/my.cnf

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=10

Tiếp theo, đăng nhập vào mysql và chạy nó

PURGE BINARY LOGS BEFORE (date(now()) + interval 0 second - interval 10 day);

Lưu ý ngày và thời gian của truy vấn

mysql> select date(now()) + interval 0 second - interval 10 day;
+---------------------------------------------------+
| date(now()) + interval 0 second - interval 10 day |
+---------------------------------------------------+
| 2012-12-11 00:00:00                               |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql>

Do đó, lệnh PURGE BINARY LOGS sẽ xóa tất cả các binlog có dấu thời gian trước đó 2012-12-11 00:00:00.

Cuối cùng, chạy lệnh này

SET GLOBAL expire_logs_days = 10;

Đó là nó. Không cần khởi động lại để cài đặt expire_logs_days .

Đối với các tham số sao chép, có yêu cầu khởi động lại.


Phản ứng rực rỡ. Cảm ơn bạn. Tôi đánh giá cao các chi tiết.
Mike B

Hãy làm mới, tôi sửa một lỗi đánh máy.
RolandoMySQLDBA

1
Chỉ cần lưu ý rằng expire_logs_days hiện không được hỗ trợ trong MySQL 8.0 (theo chi tiết trong liên kết được cung cấp bởi @RolandoMyQueryDBA). Sử dụng binlog_Exire_logs_seconds thay vì đi tiếp.
John Rix
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.