[MySQL] Fix lỗi ‘MySQL server has gone away’ khi import database

Chào các bạn, cùng đến với bài viết Fix lỗi ‘MySQL server has gone away’ khi import database nhé.

Chúng ta có một tình huống như thế này : bạn có 1 database đã được dump ra file tầm 20MB, bạn chuyển file database đó sang vps/server mới và tiến hành import database đó vào hệ thống mới thì gặp phải lỗi sau :

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

 
Bạn thử import đi ? import lại nhưng vẫn lỗi như trên. Nếu bạn gặp tình huống này thì dưới đây là cách giải quyết cơ bản nhất.

Nguyên nhân

Tình huống này là do khi mà hoạt động import CSDL 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 ‘max_allowed_packet‘ thì dịch vụ MySQL sẽ tự động ngắt kết nối hoạt động import hay kết nối.

Tất nhiên là vẫn còn những thông báo lỗi có liên quan đến việc tinh chỉnh ‘max_allowed_packet’, nhưng trong trường hợp này cách giải quyết sẽ là tăng giá trị ‘max_allowed_packet‘ lên.

Khắc phục

– Hãy tăng giá trị ‘max_allowed_packet‘ ở giá trị cao hơn dung lượng database bạn cần import vào. Ở ví dụ này, database của bạn có dung lượng là 20MB, thì hãy tăng giá trị ‘max_allowed_packet‘ lên 32MB. Có 2 cách để tăng :

1. Tăng tạm thời set biến ‘global’ MySQL

– Chúng ta sẽ tăng giá trị ‘max_allowed_packet‘ bằng cách set biến GLOBAL max_allowed_packet của dịch vụ MySQL đang hoạt động , không cần phải khởi động lại dịch vụ MySQL. Giá trị của bạn sẽ là : 32 x 1024 x 1024

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

 
Rồi tiến hành import lại. 

2. Cấu hình file dịch vụ MySQL

– Với việc thiết lập cấu hình trong file /etc/my.cnf thì khi dịch vụ MySQL có khởi động lại cũng sẽ luôn set giá trị đúng với con số mong muốn. Nếu lúc đầu tiên bạn cần tăng giá trị này thì cần khởi động lại dịch vụ MySQL.

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

 
Cám ơn các bạn đã theo dõi bài viết.

Previous article[Tech] Gmail xuất hiện lổ hổng giúp hacker có thể chiếm đoạt bất kì tài khoản email nào
Next article[Nginx] Hướng dẫn cấu hình Nginx bảo trì website với HTTP 503
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !