Tải lại my.cnf mà không cần khởi động lại dịch vụ MySQL


26

Tôi phải cấu hình một máy chủ MySQL để hoạt động như một bản sao chính.

Tôi đã sửa đổi my.cnf để kích hoạt nhật ký nhị phân, nhưng bây giờ để tải lại cấu hình, tôi phải tải lại dịch vụ /etc/init.d/mysqld restart. Vấn đề là máy chủ nhận được một số truy vấn mỗi giây và tôi không muốn mất tất cả dữ liệu có thể đến trong khi đó.

Có cách nào để tải lại tập tin cấu hình my.cnf mà không cần khởi động lại dịch vụ không?


3
/etc/init.d/restartsẽ khởi động lại toàn bộ máy chủ. Có lẽ bạn đang nghĩ đến/etc/init.d/mysqld restart
Kevin M

Vâng, tôi đề nghị khởi động lại mysqld. Đã chỉnh sửa. Cám ơn!
David Espart

Câu trả lời:


28

MySQL Cụ thể:
Các tùy chọn trong my.cnf là các biến hệ thống . Các biến này là động (có thể thay đổi khi chạy) hoặc không động. Những cái đó là động, có thể được thay đổi trong thời gian chạy với cú pháp biến SET. Bạn có thể thấy các biến với SHOW VARIABLES;. Nhưng theo liên kết này trong hướng dẫn , tùy chọn nhật ký nhị phân không động. Vì vậy, có vẻ như bạn phải khởi động lại. Bạn có thể muốn đợi một người biết mysql tốt hơn tôi một chút để xác nhận điều này.

Daemon nói chung:
Trong Linux, /etc/init.d/ chứa các tập lệnh bắt đầu và dừng trình nền (dịch vụ). Vì đây là các tập lệnh, bạn có thể xem chúng bằng trình soạn thảo văn bản. Nhiều trong số các kịch bản này sẽ có một đối số tải lại. Nhìn vào tập lệnh mysql của tôi, tải lại như một đối số sử dụng lệnh mysqladmin. Vì vậy, hướng dẫn cho mysqladmin dưới tải lại nói:

tải lại

Reload the grant tables.

Vì vậy, có vẻ như nói chung, đây không phải là thay đổi cấu hình, mà là thay đổi về đặc quyền (Có thể là lệnh đặc quyền tuôn ra tương đương?).


2
Này, giải thích rất tốt. Dường như không có cách nào để làm điều đó mà không khởi động lại mặc dù. Nếu không ai trả lời một giải pháp hoặc một cách giải quyết, tôi sẽ chấp nhận câu hỏi của bạn. Cảm ơn bạn.
David Espart

Theo liên kết của bạn, có vẻ như SET GLOBAL binlog_format = 'STATMENT'; sẽ làm gì để lừa?
Kyle Smith

Kyle khác: Có vẻ như vậy, nhưng tôi nghĩ rằng đăng nhập nhị phân sẽ phải được kích hoạt để làm bất cứ điều gì (và có thể được thiết lập). Biến đó được giới thiệu muộn hơn phiên bản mys.x 5.0.x hiện tại của tôi nên tôi không thể kiểm tra.
Kyle Brandt

Tôi đã phải tìm kiếm cú pháp lệnh SET - đây là một liên kết trong trường hợp bất kỳ ai khác cần nó: dev.mysql.com/doc/refman/5.1/en/set-option.html
Đánh dấu McDonald

4
Cũng đáng đề cập đến biến nào là thay đổi động khi bạn có cơ hội phiên bản MySQL. Ví dụ: trong 5.x, bạn có thể kích hoạt nhật ký truy vấn chậm khi đang di chuyển, nhưng trong 4.x bạn không thể (như tôi đã khám phá ngày hôm qua!).
Coops

1

Tôi đã tìm kiếm một giải pháp cho vấn đề này nhưng không hài lòng với sự giúp đỡ hạn chế mà tôi tìm thấy. Một chap đề nghị giết -HUP .. không hiệu quả với tôi ..

những gì tôi đã làm là tạm dừng các trường hợp apache .. và sau đó tiếp tục chúng sau đó .. hoạt động như một cơ duyên trên máy chủ nơi tôi có trung bình 25 yêu cầu hoạt động mỗi giây.

với sudo (rõ ràng) pkill -STOP httpd && /etc/init.d/mysqld khởi động lại && pkill -CONT httpd

Tất nhiên, tên quy trình apache của bạn và / hoặc tập lệnh khởi động lại mysql có thể khác với tôi, nhưng bạn hiểu đúng rồi!

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.