Có thể xảy ra Incompatible-parameters ở RDS mặc dù không có vấn đề gì về parameters
RDS có thể không khởi động lại đươc vì phát sinh lỗi Incompatible-parameters. Có những lúc lỗi này không thể giải quyết được bằng các biện pháp thông thường.
Kết Luận:
Khi RDS phải khởi động đi khởi động lại nhiều lần thì cho dù không có vấn đề gì về parameters thì vẫn có thể hiện ra lỗi Incompatible-parameters. Đợi một lúc thì sẽ khởi động trở lại được mà không cần phải làm gì cả.
Bối Cảnh:
Không chỉ ở riêng RDS mà các hệ thống RDBMS nói chung có sự khác biệt đáng kể về hiệu suất Khi ở trạng thái lúc ngay sau khi khởi động và Khi ở trạng thái mà các thông tin cần thiết như Index được lưu đầy vào trong bộ nhớ . Lần này, thì tôi đã cố ý khởi động lại RDS nhiều lần để điều tra hiệu suất của MySQL instance được tạo bởi RDS ở trạng thái ngay sau khi khởi động, nhưng đã đột nhiên hiện lỗi Incompatible-parameters và không thể khởi động database được nữa.
Cách Giải Quyết Thông Thường:
Thông thường thì nguyên nhân xảy ra lỗi Incompatible-parameters là do nội dung trong file my.cnf đang bị sai dẫn đến việc không khởi động được database.
Tuy nhiên ở trong bối cảnh này thì rõ ràng là không phải nguyên nhân trên, vì
- Với nội dung my.cnf đó thì vẫn đã khởi động được bình thường trước đó
- Đã kiểm tra nội dung file my.cnf nhưng không thấy có yếu tố nào gây cho database không khởi động được cả
- Dùng file my.cnf trên cho instance khác thì vẫn khởi động và tái khởi động được bình thường
Cách giải quyết lần này:
Sau khi hỏi bộ phận hỗ trợ thì nhận được câu trả lời là nếu khởi động database nhiều lần thì có trường hợp sẽ xảy ra báo lỗi Incompatible-parameters. Chờ một lúc thì sẽ tự động hồi phục.
Bài học:
Trên môi trường Production thì tránh khởi động đi lại database nhiều lần nếu không thực sự cần thiết. Đặc biệt khi thực hiện chỉnh sửa database cần phân biệt rõ nguyên nhân gây ra lỗi hiển thị Incompatible-parameters là do nội dung my.cnf sai hay là do database bị khởi động lại nhiều lần. Nếu điều tra thấy nội dung my.cnf không có vấn đề gì thì thử dùng file đó cho một instance khác xem khởi động có vấn đề gì không để xác định được xem là do nguyên nhân nào.