Biến cấu hình MySQL là một tập hợp các biến hệ thống máy chủ được sử dụng để định cấu hình hoạt động và hành vi của máy chủ. Trong bài đăng trên blog này, chúng tôi sẽ giải thích sự khác biệt trong việc quản lý các biến cấu hình giữa MySQL 5.7 và MySQL 8.0.
Chúng tôi sẽ giải thích ba cách khác nhau để thiết lập các biến cấu hình dựa trên trường hợp sử dụng của bạn. Các biến cấu hình có thể được đặt tại thời điểm chạy được gọi là biến Động và những biến cần khởi động lại máy chủ MySQL để có hiệu lực được gọi là biến Không động.
1:Đặt cấu hình cho tuổi thọ hiện tại của máy chủ MySQL đang chạy
Hầu hết các cấu hình MySQL có bản chất động và có thể được thiết lập tại thời điểm chạy bằng lệnh SET. Điều này có nghĩa là các thay đổi không liên tục và sẽ bị mất nếu máy chủ MySQL khởi động lại. Điều này rất hữu ích để kiểm tra hành vi của thay đổi cấu hình của bạn trước khi đặt nó vĩnh viễn.
Đối với cả MySQL 5.7 và 8.0, bạn có thể thực hiện điều này bằng cách sử dụng lệnh SET GLOBAL
Ví dụ:
mysql> set global max_connect_errors=10000;
2:Đặt và duy trì thay đổi cấu hình qua Khởi động lại MySQL
Sau khi hài lòng với cài đặt thay đổi cấu hình, bạn muốn đặt nó vĩnh viễn.
Trong MySQL 5.7, bạn cần thực hiện việc này theo 2 bước:
- Đặt cài đặt cấu hình thời gian chạy bằng lệnh SET GLOBAL
mysql> set global max_connect_errors=10000;
- Lưu thay đổi này trong tệp my.cnf của bạn bằng cách cập nhật mục nhập hiện có cho max_connect_errors hoặc bằng cách thêm một mục mới.
Điều này đã trở nên dễ dàng hơn nhiều trong MySQL 8.0. Bạn có thể thực hiện việc này trong một bước duy nhất bằng lệnh SET PERSIST
mysql> set persist max_connect_errors=10000;Cách đặt các biến cấu hình - MySQL 5.7 so với MySQL 8.0Nhấp vào Tweet
Thao tác này sẽ đặt giá trị thời gian chạy cho cấu hình và cũng duy trì thay đổi bằng cách lưu nó vào tệp mysqld-auto.cnf tồn tại trong thư mục dữ liệu. Đây là tệp json và bây giờ bạn sẽ thấy các mục sau trong tệp.
{ "Version": 1, "mysql_server": { "max_connect_errors": { "Value": "10000", "Metadata": { "Timestamp": 1581135119397374, "User": "sgroot", "Host": "localhost" } } } }
Lưu ý: Cài đặt cấu hình có trong mysqld-auto.cnf luôn ghi đè các giá trị có trong tệp my.cnf. Vì vậy, bất kỳ thay đổi nào bạn thực hiện trong tệp my.cnf cho biến “max_connect_errors” sẽ không có hiệu lực. Điều này có thể gây nhầm lẫn cho những người chuyển đổi từ MySQL 5.7 vì họ có thể quen với việc lưu trữ tất cả cài đặt của mình trong my.cnf
3:Đặt các biến cấu hình không động
Không thể đặt một số biến cấu hình tại thời điểm chạy và sẽ yêu cầu khởi động lại MySQL để có hiệu lực.
Trong MySQL 5.7, bạn sẽ tạo một mục nhập cho các biến này trong tệp my.cnf của mình và khởi động lại máy chủ MySQL để nó có hiệu lực. Ví dụ cho một biến như vậy là innodb_log_file_size.
Trong MySQL 8.0, bạn có thể chạy một lệnh có tên CHỈ ĐẶT DANH SÁCH CÁ NHÂN, lệnh này sẽ tạo một mục nhập trong mysqld-auto.cnf.
Ví dụ:
mysql> set persist_only innodb_log_file_size=134217728;
Cũng có thể khởi động lại máy chủ MySQL từ dòng lệnh bằng lệnh RESTART. Điều này sẽ làm cho giá trị đã thay đổi của innodb_log_file_size có hiệu lực.
Lưu ý: Lệnh RESTART chỉ hoạt động nếu MySQL được quản lý bằng các chương trình bên ngoài như systemd hoặc mysqld_safe. Vui lòng xem thêm chi tiết về điều này tại đây.
Nếu không, lệnh RESTART không thành công với thông báo như sau.
mysql> RESTART; ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).
Quản lý cấu hình MySQL trên nhiều máy chủ
Quản lý cấu hình MySQL trong môi trường nguồn-bản sao là một quá trình tẻ nhạt nếu bạn phải quản lý nhiều cụm đang chạy các phiên bản MySQL khác nhau. Đây là nơi mà một giải pháp được quản lý như ScaleGrid sẽ có lợi.
Bảng điều khiển giao diện người dùng ScaleGrid có thể được sử dụng để xem lại cài đặt hiện tại của các biến cấu hình khác nhau hoặc đặt giá trị của chúng.
ScaleGrid có thể nhận ra khi cài đặt cấu hình không động và sẽ cảnh báo người dùng nếu cần khởi động lại MySQL để giá trị có hiệu lực. ScaleGrid cũng sẽ tạo bản sao lưu của tệp my.cnf hiện tại trước khi áp dụng bất kỳ thay đổi cấu hình mới nào.
Trong môi trường nguồn-bản sao, ScaleGrid thay đổi cài đặt cấu hình theo cách luân phiên từng máy chủ tại một thời điểm. Nếu một biến không động cần được đặt, ScaleGrid sẽ thực hiện chuyển đổi dự phòng của biến cái hiện tại để giảm thiểu thời gian chết có liên quan nếu MySQL phải được khởi động lại.
Truy cập liên kết bên dưới để tìm hiểu thêm về các tính năng khác nhau của giải pháp lưu trữ ScaleGrid MySQL.