Hướng dẫn why mysql has gone away? - tại sao mysql đã biến mất?

Máy chủ MySQL đã biến mất lỗi, điều đó có nghĩa là máy chủ MySQL (MySQLD) đã hết thời gian và đóng kết nối. Theo mặc định, MySQL sẽ đóng kết nối sau tám giờ (28800 giây) nếu không có gì xảy ra. Tuy nhiên, trong một số trường hợp, máy chủ web, DBA hoặc nhà phát triển ứng dụng của bạn có thể đã giảm cài đặt thời gian chờ này, như được thảo luận dưới đây.

Máy chủ MySQL đã biến mất, có thể là một lỗi khó chịu để giải quyết. Điều này một phần là do, để giải quyết lỗi này, đôi khi giải pháp liên quan đến nhiều lớp, ứng dụng hoặc thay đổi cấu hình dịch vụ. Bài viết này bao gồm các giải pháp mà tôi đã thấy cho lỗi chung của máy chủ MySQL này. Nếu bạn đã tìm thấy một giải pháp không được liệt kê hoặc liên kết trên trang này, vui lòng gửi cho tôi một ghi chú hoặc để lại nhận xét.

Hướng dẫn why mysql has gone away? - tại sao mysql đã biến mất?

Máy chủ MySQL đã biến mất các ví dụ về nhật ký lỗi.

Hãy nhớ rằng lỗi này có thể được đăng nhập theo một vài cách, như được liệt kê dưới đây. Ngoài ra, đôi khi, lỗi chỉ là một dấu hiệu của một vấn đề cơ bản sâu hơn. Có nghĩa là lỗi có thể là do vấn đề hoặc lỗi trong ứng dụng kết nối hoặc dịch vụ từ xa của bạn. Trong trường hợp đó, bạn cần kiểm tra tất cả các nhật ký lỗi liên quan với cùng một dấu thời gian để xác định xem một vấn đề khác có thể là đáng trách hay không. Các giải pháp giám sát hiệu suất ứng dụng và các công cụ theo dõi ngăn xếp PHP có thể giúp ích. Với suy nghĩ này, đây là các ví dụ về nhật ký lỗi của máy chủ MySQL đã biến mất lỗi:

General error: 2006 MySQL server has gone away
Error Code: 2013. Lost connection to MySQL server during query
Warning: Error while sending QUERY packet
PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

Được tài trợ: & nbsp; datadog & nbsp; - xem bên trong bất kỳ ngăn xếp nào, bất kỳ ứng dụng nào, ở bất kỳ quy mô nào, mọi nơi. Datadog là một nền tảng giám sát, phân tích và bảo mật thống nhất cung cấp giám sát từ đầu đến cuối cho các ứng dụng Linux của bạn cùng với các số liệu và sự kiện từ hơn 450 công nghệ khác để có cái nhìn thống nhất về toàn bộ cơ sở hạ tầng của bạn. Với giám sát cơ sở hạ tầng tương quan, giám sát hiệu suất ứng dụng, quản lý nhật ký, công cụ bảo mật, v.v. thời gian.

Hướng dẫn why mysql has gone away? - tại sao mysql đã biến mất?

Datadog is a unified monitoring, analytics, and security platform that offers end-to-end monitoring for your Linux applications alongside metrics and events from 450+ other technologies for a unified view of your entire infrastructure. With correlated infrastructure monitoring, application performance monitoring, log management, security tools, and more, Datadog enables Dev, Ops, and Security teams to work collaboratively to help organizations avoid downtime, resolve performance problems fast, and ensure that development and deployment cycles finish on time.

Chi phí: & nbsp; kế hoạch miễn phí, hoặc từ $ 15 hàng tháng.

MySQL Wait_Timeout

Lý do cho máy chủ MySQL đã biến mất thường xuyên là do MySQL Lừa Wait_timeout vượt quá. MySQL Wait_Timeout là số giây mà máy chủ chờ hoạt động trên kết nối không tương tác trước khi đóng nó. Bạn nên đảm bảo & nbsp; Wait_Timeout & nbsp; không được đặt quá thấp. Mặc định cho mysql wait_timeout là & nbsp; 28800 giây. Thông thường, nó bị hạ thấp tùy ý. Điều đó nói rằng, bạn có thể đặt & nbsp; Wait_Timeout thấp hơn mà không ảnh hưởng đến các kết nối cơ sở dữ liệu, có thể là một dấu hiệu tốt cho hiệu quả cơ sở dữ liệu MySQL. Ngoài ra, hãy kiểm tra các biến: & nbsp; net_read_timeout, & nbsp; net_write_timeout & nbsp; và & nbsp; interactive_timeout. Điều chỉnh hoặc thêm các dòng sau trong & nbsp; my.cnf để đáp ứng các yêu cầu của bạn:

wait_timeout=90
net_read_timeout=90
net_write_timeout=90
interactive_timeout=300
connect_timeout=90

MySQL Kết nối thời gian chờ trong cấu hình PHP.

Hãy xem tệp cấu hình php.ini của bạn. Bạn sẽ tìm thấy các tùy chọn cấu hình MySQL. Đảm bảo & nbsp; mysql.connect_timeout Cài đặt không được đặt thấp hơn mysql wait_timeout, đã thảo luận ở trên. Nó cũng là khi chờ phản hồi đầu tiên từ máy chủ MySQL. & NBSP; hãy thử tăng & nbsp; mysql.connect_timeout để khớp hoặc vượt quá MySQL Wait_Timeout của bạn và đảm bảo rằng mysql.allow_persistent & nbsp;

mysql.connect_timeout=90
mysql.allow_persistent=1

QUAN TRỌNG: Đọc đầu tiên về các kết nối cơ sở dữ liệu liên tục & nbsp; để hiểu các lợi ích và & nbsp; hãy cẩn thận. Read first about PHP Persistent Database Connections to understand the benefits and caveats.

Ngoài ra, điều chỉnh PHP từ & nbsp; default_socket_timeout. & Nbsp; ví dụ: tập lệnh PHP có thể đang chạy một truy vấn chậm. Tạo một sự chờ đợi sử dụng default_socket_timeout. Cuối cùng, nó thoát khỏi máy chủ MySQLL đã biến mất lỗi. Trước khi bạn gửi thư ghét, xin vui lòng đọc ở đây trước. Ở đây, một đoạn trích:

Theo mặc định, PHP, đặt thời gian chờ đọc là 60 giây cho các luồng. Điều này được đặt thông qua & nbsp; php.ini, & nbsp; default_socket_timeout. Mặc định này áp dụng cho tất cả các luồng không đặt giá trị thời gian chờ khác. xa."connections of long running queries can be disconnected after default_socket_timeout seconds resulting in an error message 2006 – MySQL Server has gone away.”

default_socket_timeout=90

Để được xuyên suốt, cũng điều chỉnh & nbsp; max_execut_time và & nbsp; max_input_time vẫn còn trong php.ini, nếu cần.

max_execution_time = 90
max_input_time = 90

Mysql max_allowed_packet

MAX_ALLOWED_PACKET là kích thước tối đa của một gói. Kích thước mặc định là 4MB giúp máy chủ MySQL bắt được các gói lớn (có thể không chính xác). Kể từ MySQL 8, mặc định đã được tăng lên 16MB. Nếu MySQLD nhận được một gói quá lớn, thì nó giả định rằng có điều gì đó không ổn và đóng kết nối. Để khắc phục điều này, bạn nên tăng max_allowed_packet & nbsp; trong my.cnf, sau đó khởi động lại mysql. & Nbsp; tối đa cho cài đặt này & nbsp; là 1GB. Ví dụ:max_allowed_packet in my.cnf, then restart MySQL. The max for this setting is 1GB. For example:

max_allowed_packet = 512M

Mysql innodb_log_file_size

Bạn có thể cần phải tăng & nbsp; innodb_log_file_size & nbsp; biến MySQL trong cấu hình My.cnf của bạn. Mysql từ & nbsp; innodb_log_file_size & nbsp; phải là 25% của & nbsp; innodb_buffer_pool_size (nếu có thể, không dưới 20%). Hãy nhớ rằng giá trị này càng lớn, sẽ càng mất nhiều thời gian để phục hồi sau sự cố cơ sở dữ liệu. (Nguồn: Cố vấn phpmyadmin)

Điều này có nghĩa là: Nếu kích thước nhóm đệm của bạn được đặt thành innodb_buffer_pool_size = 16g & nbsp; và của bạn Điều này sẽ tạo hai (2) tệp nhật ký ở mức 2GB mỗi tệp, bằng 25% & nbsp; innodb_buffer_pool_size = 16g.=16G and your innodb_log_files_in_group setting is still set to the recommended default of 2 files (innodb_log_files_in_group=2), then your innodb_log_file_size should be set to 2G. This will create two (2) log files at 2GB each, which equals 25% of innodb_buffer_pool_size=16G.

Cảnh báo: & nbsp; bạn phải dừng máy chủ mysql để thay đổi & nbsp; innodb_log_file_size hoặc & nbsp; innodb_log_files_in_group. Nếu bạn don, bạn có nguy cơ thảm họa! (Đọc: Hướng dẫn làm lại nhật ký MySQL.)You must stop MySQL server in order to change innodb_log_file_size or innodb_log_files_in_group. If you don’t, you risk catastrophe! (Read: MySQL Log Redo instructions.)

Các nguyên nhân khác của & nbsp; máy chủ mysql đã biến mất

Kết nối MySQL từ xa

Hãy nhớ trước đó tôi đã đề cập rằng lỗi, đôi khi, chỉ là một dấu hiệu của một vấn đề cơ bản sâu hơn. Ví dụ: các kết nối MySQL từ xa đến các dịch vụ của bên thứ 3. Sử dụng & nbsp; xử lý thanh toán của bên thứ 3 & nbsp; plugin cho oscommerce, magento, v.v.

Charset và đối chiếu cơ sở dữ liệu MySQL

Thay đổi Charset cơ sở dữ liệu mặc định thành Latin1 và đối chiếu mặc định thành Latin1_General_Ci dường như đã giải quyết & NBSP; Máy chủ MySQL đã biến mất cho một số người.

Vượt quá cài đặt mysql max_connections

Max_Connections Đặt số lượng kết nối máy khách đồng thời được phép tối đa. Hãy cẩn thận với cài đặt này !! Kiệt sức bộ nhớ và các tài nguyên khác có thể xảy ra khi đặt quá lớn và chi phí lên lịch cũng tăng lên. Theo hướng dẫn, đặt MAX_Connections lên xấp xỉ gấp đôi số lượng kết nối máy khách đồng thời tối đa trước đó. Ví dụ: nếu sau một tháng hoạt động, kết nối máy khách đồng thời tối đa là 114, sau đó được đặt thành MAX_CONNONTECTERS = 250. Trước khi bạn phát điên với cài đặt này, vui lòng đọc: Cách MySQL xử lý các kết nối khách hàng.

Vẫn chưa được giải quyết? Xem trang trợ giúp MySQL.

Oracle đã tập hợp một trang tự giúp đỡ tốt đẹp cho & NBSP; Máy chủ MySQL đã biến mất. Trên trang đó, họ cũng đề nghị bạn đảm bảo MySQL đã không dừng/khởi động lại trong quá trình truy vấn. Đoạn trích:

Bạn có thể kiểm tra xem máy chủ MySQL đã chết và khởi động lại bằng cách thực thi & nbsp; phiên bản mysqladmin & nbsp; và kiểm tra thời gian hoạt động của máy chủ. Nếu kết nối máy khách bị hỏng vì & nbsp; mysqld & nbsp; bị sập và khởi động lại, bạn nên tập trung vào việc tìm lý do cho vụ tai nạn.mysqladmin version and examining the server’s uptime. If the client connection was broken because mysqld crashed and restarted, you should concentrate on finding the reason for the crash.”

# mysqladmin version
mysqladmin Ver 9.1 Distrib 10.1.40-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version 10.1.40-MariaDB
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 20 days 11 hours 49 min 40 sec

Threads: 5 Questions: 1030744326 Slow queries: 3343 Opens: 3585 Flush tables: 1 Open tables: 2564 Queries per second avg: 582.150
Error Code: 2013. Lost connection to MySQL server during query
0

Tôi hi vọng cái này giúp được!


Những bài viết liên quan:

  • Điều chỉnh hiệu suất MySQL: Mẹo, tập lệnh và công cụ
  • Điều chỉnh MySQL: My.cnf, Tránh cạm bẫy phổ biến này!
  • Hiệu suất MySQL: Ngừng tích trữ. Thả cơ sở dữ liệu MySQL không sử dụng

Xuất bản: ngày 7 tháng 6 năm 2019 | Cập nhật lần cuối: ngày 10 tháng 11 năm 2022

Tags: APM, Linux, MariaDB, MySQL, Performance, Server, Sysadmins

Điều gì đã thay thế MySQL?

10 lựa chọn thay thế cho MySQL..
Microsoft SQL Server ..
IBM DB2 ..
Dịch vụ cơ sở dữ liệu quan hệ Amazon (RDS).
PostgreSQL..
Đám mây SAP HANA ..
SQLite..
MariaDB..
Cơ sở dữ liệu Azure SQL ..

MySQL vẫn được sử dụng?

MySQL Community Edition là cơ sở dữ liệu miễn phí được sử dụng rộng rãi nhất trong ngành.Ngoài ra, phiên bản thương mại của nó được sử dụng rộng rãi trong ngành.. Also, its commercial version is used extensively in the industry.

MySQL được gọi là gì bây giờ là gì?

MySQL được sở hữu và tài trợ bởi công ty Thụy Điển MySQL AB, được mua bởi Sun Microsystems (nay là Oracle Corporation).Vào năm 2010, khi Oracle mua lại Sun, Widenius đã đưa ra dự án MySQL nguồn mở để tạo ra Mariadb.... mysql ..

Làm cách nào để khôi phục mysql?

Trong cơ sở dữ liệu Explorer, bấm chuột phải vào kết nối máy chủ mà bạn muốn khôi phục cơ sở dữ liệu và chọn sao lưu và khôi phục> Khôi phục cơ sở dữ liệu.Trong Trình hướng dẫn khôi phục cơ sở dữ liệu, chọn tệp sao lưu và nhấp vào Khôi phục.