Hotline : 07 088 44444
Thích
Chia sẻ

Mysql server has gone away vận hành web

21/02/2021

Để một website vận hành mượt mà, bạn cần đảm bảo dòng chảy giữa code và database là liên tục. Nhưng sẽ ra sau nếu dòng chảy của bạn hẹp đi, bị giới hạn lại? Bài viết, sẽ trình bày về 1 trong những vấn đề của lỗi mysql server has gone away mà đa số chúng ta thường gặp.

Nguyên nhân lỗi mysql server has gone away

Hãy tưởng tượng rằng code của bạn là dòng chảy của con sông, MySQL là dòng sông hay nói khác hơn là chiều rộng của dòng sông. Dòng chảy với cường độ lớn, nhanh và nhiều trong khi con sông quá hẹp. Và dĩ nhiên nếu dòng chảy cứ liên tục như vậy thì bạn cũng biết chuyện gì xảy ra rồi nhỉ?

Tương tự lỗi này cũng vậy: MySQL cần nhiều thời gian để thực hiện công việc giống như dòng sông cần được mở rộng hơn.

Khắc phục mysql server has gone away

Việc khắc phục rất đơn giản, bạn chỉ cần tăng thời gian để mysql thực hiện công việc của mình bằng cách điều chỉnh 2 chỉ số tại file config: “/etc/my.cnf.

<blockquote><pre>#Thông số cần điều chỉnh
wait_timeout=300
interactive_timeout=300</pre></blockquote>

Trong đó:

  • wait_timeout: Là giá trị cho khoảng thời gian X, mà mysql dành cho các phiên làm việc không tương tác đợi được tới lúc thực hiện.
  • interactive_time: Là giá trị cho khoảng thời gian Y, mà mysql dành cho việc thực hiện các tác vụ tại phiên làm việc hiện thời.

Lưu ý: Đường dẫn có thể khác tuỳ vào phiên bản hoặc cách bạn cài đặt.

Một số ảnh hưởng

Mysql server has gone away
lỗi #2006 Mysql server has gone away

Nguyên nhân lỗi MySQL server has gone away

Khi bạn có 1 database đã dump ra 20MB, bạn thực hiển chuyển file database sang vps/server mới bắt đàu tiến hành import database vào hệ thống và gặp lỗi:

# mysql -u root -p'pass' demo_db < demo_db.sql
MySQL Error 2006 (HY000) at line 406: MySQL server has gone away

Nguyên nhân là do khi CSDL hoạt động import vào CSDL mới, phải thực hiện gửi nội dung SQL-statement trong file dump cho dịch vụ MySQL, nhưng dung lượng packet chứa SQL-statement vượt quá quy định thì dịch vụ sẽ tự động ngắt kết nối.

Cách khắc phục mysql server has gone away import

Khắc phục bằng cách tăng giá trị max_allowed_ packet với 2 cách dưới đây. Khi database của bạn là 20MB và tăng lên 32MB.

Set biến global MySQL

Tăng giá trị max_allowed_ packet bằng cách set biến GLOBAL max_allowed_ packet của MySQL đang hoạt động. Giá trị sẽ là: 32 x 1024 x 1024

# mysql -u root -p
Enter password:
mysql> SET GLOBAL max_allowed_packet=33554432

Sau đó import lại.

Cấu hình file MySQL

# vi /etc/my.cnf
[mysqld]
max_allowed_packet=32M
...
# /etc/init.d/mysql restart

Website hằng ngày đem lại lớn lợi nhuận cho cá nhân và doanh nghiệp, đừng để vì một lỗi đơn giản mà ảnh hưởng đến bạn nhé. Hi vọng hướng dẫn trên đây sẽ giúp các bạn khắc phục lỗi mysql server has gone away dễ dàng.

Chúc bạn may mắn và thành công.

Nếu bạn có thắc mắc hay có vấn đề cần hỗ trợ, bạn có thể liên hệ trực tiếp với Vietnix thông qua các kênh sau:
  • Hotline: 1800 1093 - 07 088 44444
  • Email: support@vietnix.vn
  • Hoặc chat trực tiếp với Vietnix thông qua biểu tượng Livechat ở góc phải màn hình. Đội ngũ chuyên viên của chúng tôi luôn sẵn sàng tư vấn và hỗ trợ bạn 24/7.
Vietnix hiện đang có chương trình khuyến mãi lớn nhất trong năm, giảm giá TRỌN ĐỜI: Đăng ký dùng thử ngay và Vietnix sẽ hoàn tiền 100% nếu quý khách không hài lòng với chất lượng sản phẩm, dịch vụ!
Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PersonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments