Một kết nối MySQL liên kết [kết nối] Bàn làm việc với máy chủ MySQL. Hầu hết các hành động được thực hiện trong Workbench sau đó được thực hiện đối với máy chủ MySQL được kết nối. Mỗi kết nối MySQL chứa tập hợp các định nghĩa riêng, vì vậy bạn có thể xác định nhiều kết nối MySQL trong Workbench. Ví dụ: các kết nối có thể kết nối với các máy chủ MySQL khác nhau hoặc cùng một máy chủ MySQL với các tên người dùng khác nhau hoặc bật SSL cho một máy chủ hoặc bạn có thể thiết lập kết nối với máy chủ MySQL từ xa [trên máy chủ lưu trữ web của bạn?] bằng SSH
Đối với nhiều kết nối đến cùng một máy chủ MySQL cục bộ, bạn có thể có một kết nối sử dụng "root" với một kết nối khác sử dụng người dùng ít đặc quyền hơn. Tùy thuộc vào cách bạn thiết lập người dùng, họ có thể [hoặc không] đều có quyền xem và sử dụng cùng một cơ sở dữ liệu [thông tin]. Ví dụ: bạn có thể sử dụng Workbench để định cấu hình và sử dụng người dùng ít đặc quyền hơn mà bạn sử dụng cho ứng dụng web của mình
Vì vậy, để tóm tắt, các kết nối chỉ cần kết nối với máy chủ MySQL. Nếu hai kết nối sử dụng cùng một thông tin chính xác thì kết quả trong Workbench sẽ giống hệt nhau, mặc dù đây không phải là trường hợp sử dụng phổ biến. Để biết thêm thông tin về kết nối MySQL trong MySQL Workbench, hãy xem Chương 5, Kết nối trong MySQL Workbench
Khi cài đặt Stash hoặc trong quá trình sử dụng ứng dụng, mẫu thông báo sau được báo cáo trong tệp nhật ký
2012-08-12 22:20:25,437 ERROR [main] com.jolbox.bonecp.ConnectionHandle Database access problem. Killing off all remaining connections in the connection pool. SQL State = 08S01
2012-08-12 22:20:25,456 ERROR [main] o.h.transaction.JDBCTransaction JDBC begin failed
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 18,058 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.
Gây ra
Sự cố này xảy ra do các kết nối cơ sở dữ liệu hết thời gian của máy chủ MySQL nhanh hơn nhóm kết nối Stash có thể nhận thấy. Điều này làm cạn kiệt nhóm kết nối Stash vì nó sẽ giữ cho các kết nối của nó mở trong khi phía MySQL của các kết nối đã bị đóng
Nghị quyết
Stash được vận chuyển với khoảng thời gian kiểm tra kết nối mặc định là 10 phút
MySQL có giá trị mặc định biến được đặt thành 28800 giây [8 giờ]
Do đó, nếu cả hai bên của kết nối vẫn giữ nguyên giá trị mặc định, sự cố sẽ không bao giờ xảy ra, vì MySQL sẽ không bao giờ hết thời gian chờ kết nối trước khi Stash thực hiện điều đó
Nếu biến wait_timeout của MySQL bị giảm giá trị
Trong trường hợp này, để tránh việc MySQL đóng các kết nối và Stash không thông báo, hãy xác định giá trị khoảng thời gian kiểm tra Stash thành giá trị nhỏ hơn giá trị MySQL.
Trong tệpSTASH_HOME/shared/stash-config.properties
, hãy thêm dòng sau và xác định số phút cho thời gian chờ kết nốidb.pool.idle.testInterval=1
Nếu thời gian chờ của MySQL chưa đến một phút, hãy thêm
interactiveClient=true
vào URL JDBC trong tệpstash-config.properties
file to use MySQL default value 28800 seconds, eg:jdbc.url=jdbc:mysql://localhost:3306/stash212?autoReconnect=true&characterEncoding=utf8&useUnicode=true&sessionVariables=storage_engine%3DInnoDB&interactiveClient=true
Lưu ý rằng MySQL giữ lại một số phạm vi cho biến wait_timeout
và interactive_timeout
. Kiểm tra kỹ cài đặt tương tự của biến bằng cách chạy các truy vấn sau trên cơ sở dữ liệu
Hôm nay, chúng ta đang tìm hiểu cách thay đổi thời gian chờ kết nối trong MySQL bằng Linux [Ubuntu 20. 04] và hệ điều hành Windows
Đôi khi, bạn liên tục mất kết nối với Máy chủ MySQL vì thuộc tính
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
6 được đặt thành vài giây theo mặc địnhỞ đây, chúng ta sẽ xem cách thay đổi giá trị mặc định của
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
6 trong MySQL bằng Linux [Ubuntu 20. 04] và hệ điều hành WindowsChúng tôi có thể cập nhật tệp cấu hình hoặc sử dụng các truy vấn SQL để thực hiện các thay đổi trong cả hai hệ điều hành. Hãy xem từng người trong số họ
Đầu tiên, chúng ta cần mở Windows Command Line và điều hướng đến đường dẫn cài đặt MySQL Server. Theo mặc định, Máy chủ MySQL được cài đặt tại
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
8Điều hướng đến thư mục
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
9 bằng cách sử dụng mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
0 trên Dòng lệnh. Ngoài ra, hãy nhập mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
1 để đăng nhập với tư cách người dùng mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
2Bây giờ, chúng ta có thể thấy giá trị mặc định của thuộc tính
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
6 bằng cách sử dụng truy vấn sau đây trước khi thực hiện các cập nhật cần thiếtmysql> SHOW VARIABLES LIKE 'connect_timeout';
đầu ra
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
Như chúng ta có thể thấy, kết nối đến MySQL Server sẽ bị mất sau 10 giây. Vì vậy, chúng ta có thể thay đổi nó thành 28800 giây [8 giờ] bằng cách sử dụng các lệnh sau trên Windows Command-Line
Hãy nhớ rằng, việc cập nhật
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
4 và mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
5 là tốt vì nó sẽ hữu ích khi chạy các ứng dụng tiêu tốn nhiều thời gian để thực hiện đầy đủmysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
Sử dụng lệnh sau để xác nhận tất cả các bản cập nhật
mysql> SHOW VARIABLES WHERE Variable_Name
-> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];
đầu ra
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| connect_timeout | 28800 |
| interactive_timeout | 28800 |
| wait_timeout | 28800 |
+---------------------+-------+
3 rows in set [0.04 sec]
Ở đây,
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
6 đại diện cho số giây mà máy chủ mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
7 đợi gói kết nối trước khi quay lại mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
8. mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
4 cũng hiển thị số giây mà Máy chủ MySQL chờ một hoạt động trên kết nối tương tác trước khi đóngGiống như
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
6 và mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
4, mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
5 cũng hiển thị số giây mà Máy chủ MySQL chờ một hoạt động trên kết nối trước khi đóng nóNếu bạn đang viết một ứng dụng nào đó, thì bạn có thể làm theo cách sau để thay đổi nó qua ngôn ngữ lập trình, chẳng hạn như Java hoặc Python
connection.query['SET GLOBAL connect_timeout=28800']
connection.query['SET GLOBAL interactive_timeout=28800']
connection.query['SET GLOBAL wait_timeout=28800']
Một cách khác là cập nhật tệp cấu hình bằng cách mở tệp
mysql> SHOW VARIABLES WHERE Variable_Name
-> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];
3 tại đường dẫn mysql> SHOW VARIABLES WHERE Variable_Name
-> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];
4 [nếu bạn đã cài đặt máy chủ MySQL ở vị trí mặc định]. Sau đó, tìm phần mysql> SHOW VARIABLES WHERE Variable_Name
-> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];
5 và viết[mysqld]
connect_timeout = 28800
interactive_timeout = 28800
wait_timeout = 28800
Khởi động lại máy chủ MySQL và tận hưởng các bản cập nhật
Mở trình bao Ubuntu và đăng nhập với tư cách siêu người dùng bằng cách sử dụng
mysql> SHOW VARIABLES WHERE Variable_Name
-> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];
6. Sau đó, đăng nhập vào máy chủ MySQL bằng truy vấn sau$ mysql -u root -p password
Khi chúng tôi vào, hãy kiểm tra giá trị mặc định của
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
6, là 10 giây, như chúng tôi có thể thấy bên dướimysql> SHOW VARIABLES LIKE 'connect_timeout';
đầu ra
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
Bây giờ, hãy thực hiện các truy vấn sau để cập nhật các giá trị của
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
6, mysql> SHOW VARIABLES WHERE Variable_Name
-> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];
9 và mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
5. Như đã đề cập trước đó, chúng tôi cập nhật ba ứng dụng này để chạy các ứng dụng mất nhiều thời gian để thực thi đầy đủmysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
đầu ra
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
1Cách khác là cập nhật tệp cấu hình. Giả sử chúng ta kỳ vọng 28800 giây là giá trị của
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| connect_timeout | 10 |
+-----------------+-------+
1 row in set [0.00 sec]
6, mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
4 và mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
5Để làm được điều đó, chúng ta cần chỉnh sửa tệp cấu hình nằm ở đường dẫn này,
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| connect_timeout | 28800 |
| interactive_timeout | 28800 |
| wait_timeout | 28800 |
+---------------------+-------+
3 rows in set [0.04 sec]
4. Chúng tôi sử dụng trình soạn thảo +---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| connect_timeout | 28800 |
| interactive_timeout | 28800 |
| wait_timeout | 28800 |
+---------------------+-------+
3 rows in set [0.04 sec]
5;