Loại lỗi này xảy ra khi kết nối giữa máy khách và máy chủ vượt quá giá trị thời gian chờ đã chỉ định
Ví dụ: nếu bạn có một truy vấn dài cần nhiều thời gian để hoàn thành việc thực thi, MySQL sẽ ngắt kết nối tới máy chủ
Lấy ví dụ, khi xuất một cơ sở dữ liệu lớn, tùy thuộc vào phương thức xuất và dữ liệu được xuất, quá trình này có thể mất nhiều thời gian để hoàn tất. Để ngăn chặn các sự cố trên máy chủ, MySQL có thể ngắt kết nối này trước khi quá trình hoàn tất
Một nguyên nhân phổ biến khác của loại lỗi này là các thao tác nối phức tạp
MySQL Hiển thị giá trị thời gian chờ
Như đã đề cập, bạn có thể khắc phục loại lỗi này bằng cách tăng thời lượng thời gian chờ ở phía máy chủ
Các giá trị thời gian chờ được lưu trữ trong các biến Wait_timeout và Interactive_timeout. Chúng tôi có thể tìm nạp các giá trị hiện tại như được hiển thị trong các truy vấn sau
mysql> hiển thị các biến toàn cục như 'interactive_timeout';
Kết quả đầu ra như sau
+---------------------+-------+
. tên_biến. Giá trị.
+---------------------+-------+
. Interactive_timeout. 28800.
+---------------------+-------+
1 . 00 giây)
Kết quả đã cho hiển thị giá trị mặc định của biến Interactive_timeout. Giá trị này xác định khoảng thời gian, tính bằng giây, mà máy chủ đợi một hoạt động trên một phiên đang hoạt động trước khi chấm dứt hoạt động đó
Chúng ta cũng có thể lấy giá trị của biến wait_timeout là
mysql> hiển thị các biến toàn cục như 'wait_timeout';
bảng kết quả
+---------------+-------+
. tên_biến. Giá trị.
+---------------+-------+
. chờ_thời gian chờ. 28800.
+---------------+-------+
1 hàng trong tập hợp (0. 01 giây)
Biến này đặt thời lượng mà máy chủ MySQL chờ một hoạt động trong phiên không tương tác
Khắc phục lỗi mất kết nối MySQL bằng cách cập nhật biến thời gian chờ
Để khắc phục loại lỗi này, chúng ta có thể cập nhật giá trị của hai biến đã thảo luận trước đó. Chúng ta có thể chạy truy vấn như sau
mysql> ĐẶT @@global. Interactive_timeout=43200;
Truy vấn OK, 0 hàng bị ảnh hưởng (0. 00 giây)
Lệnh trước sẽ cập nhật giá trị của biến Interactive_timeout thành 43200 giây
Để cập nhật tham số wait_timeout, hãy chạy lệnh sau
mysql> ĐẶT @@global. wait_timeout=43200;
Truy vấn OK, 0 hàng bị ảnh hưởng (0. 00 giây)
Bạn xong việc rồi. Bạn có thể thử chạy lại truy vấn đã hẹn giờ của mình
Phần kết luận
Trong bài đăng này, chúng tôi đã thảo luận về nguyên nhân gây ra lỗi mất kết nối khi làm việc với MySQL và các bước bạn có thể thực hiện để khắc phục chúng. Tuy nhiên, hãy chú ý đến các truy vấn của bạn hoặc phân đoạn chúng thành các khối hiệu quả
Trong bài đăng trên blog này, tôi sẽ chỉ cho bạn cách khắc phục sự cố và giải quyết các sự cố kết nối với Phiên bản Aurora MySQL RDSBáo cáo sự cố
Chúng tôi không thể thiết lập kết nối với một trong các kho lưu trữ dữ liệu Aurora MySQL RDS của chúng tôi. Tôi sử dụng MySQL Workbench cục bộ để kết nối với cơ sở dữ liệu AWS và tôi có thể kết nối với mọi cơ sở dữ liệu khác ngoại trừ cơ sở dữ liệu này. Vui lòng tìm chi tiết lỗi bên dưới —
Mất kết nối với máy chủ MySQL trong khi truy vấn
Làm ơn.
1 Kiểm tra xem MySQL có đang chạy trên địa chỉ *****
2 Kiểm tra xem MySQL có thể truy cập được trên cổng 3306 không (lưu ý. 3306 là giá trị mặc định nhưng có thể thay đổi giá trị này)
3 Kiểm tra xem quản trị viên người dùng có quyền kết nối với ***** từ địa chỉ của bạn (Quyền MySQL xác định những máy khách nào có thể kết nối với máy chủ và .
4 Make sure you are both providing a password if needed and using the correct password for ***** connecting from the host address you’re connecting from.
Đọc qua phần trên có vẻ như có sự cố kết nối giữa máy khách MySQL và máy chủ Cơ sở dữ liệu và kết nối đã hết thời gian chờ trước khi trả về dữ liệu
Vấn đề có cụ thể đối với MySQL Workbench không?
- Mở Tùy chọn bàn làm việc của MySQL
- Kiểm tra xem giá trị Thời gian chờ SSH và Thời gian chờ DBMS có được đặt thành chỉ vài giây không
- Cố gắng tăng giá trị mặc định của thời gian chờ kết nối
- Lưu cài đặt, đóng MySQL Workbench và mở lại kết nối để xem bạn có thể kết nối với cơ sở dữ liệu không
Bạn đã thử khởi động lại phiên bản Cơ sở dữ liệu chưa?
Khởi động lại một phiên bản CSDL sẽ khởi động lại dịch vụ công cụ cơ sở dữ liệu. Nó sẽ dẫn đến mất điện tạm thời mặc dù
Bạn cũng có thể khởi động lại phiên bản cơ sở dữ liệu bằng AWS CLI —
aws rds reboot-db-instance –db-instance-identifier databasename –profile live –region us-east-1
Đảm bảo kiểm tra trạng thái Cơ sở dữ liệu và xác nhận trạng thái 'Có sẵn'
Bạn đã kiểm tra Chỉ số Cloudwatch cho Cụm cơ sở dữ liệu chưa?
Bạn có thể kiểm tra các số liệu của cơ sở dữ liệu Cloudwatch – đặc biệt là DatabaseConnections, EngineUptime và UpdateThroughput như một bước khắc phục sự cố
Trong trường hợp này, có vẻ như sau khi động cơ khởi động lại vào ngày 11/8, đã xảy ra một số sự cố kết nối
Bạn đã kiểm tra Nhật ký lỗi cơ sở dữ liệu chưa?
Bạn có thể xem, tải xuống và theo dõi nhật ký cơ sở dữ liệu bằng bảng điều khiển Amazon RDS
Đây là nơi tôi có thể tìm ra nguyên nhân cốt lõi của lỗi kết nối. Rõ ràng là đã có lỗi trong nhật ký nêu rõ - 'lệnh init_connect không thành công'
Init_connect - Tham số này xác định một chuỗi để máy chủ chạy cho từng máy khách kết nối. Không có giá trị mặc định cho tham số này. Chuỗi bao gồm một hoặc nhiều câu lệnh SQL, được phân tách bằng dấu chấm phẩy
Tôi đã đề cập đến một giá trị không chính xác thông số 'init_connect' gây ra sự cố. Khi tôi đã sửa giá trị và áp dụng các thay đổi, tôi có thể kết nối với cơ sở dữ liệu
Kết luận
Tóm tắt bài đăng trên blog này, có một số điều bạn có thể làm để khắc phục sự cố kết nối với cơ sở dữ liệu AWS RDS của mình trong khi cố gắng kết nối cục bộ qua MySQL Workbench —