Hướng dẫn sửa lỗi Waiting for table meta lock

  • Tuesday 03/01/2023

Đôi khi website của bạn gặp tình huống lỗi “Error establishing a database connection” dù đã kiểm tra các thông tin khai báo kết nối database vẫn chính xác, kiểm tra dịch vụ mysqld vẫn đang hoạt động, rất có thể bạn đang gặp tình trạng table bị lock.

Trong bài viết này, PAVietnam sẽ hướng dẫn bạn cách xử lý lỗi Waiting for table meta lock.

Hướng dẫn sửa lỗi Waiting for table meta lock

Hướng dẫn sửa lỗi Waiting for table meta lock

1. Cách xác định lỗi Waiting for table meta lock

Bạn có thể xem danh sách processlist liên quan đến table hiện tại của website trực tiếp trên giao diện control panel, hoặc kiểm tra trực tiếp trên terminal với lệnh mysqladmin pr. Nếu kết quả trả về tương tự như ảnh bên dưới, với nhiều dòng có nội dung Waiting for table meta lock, thì có thể xác định được nguyên nhân đang dẫn đến lỗi “Error establishing a database connection”.

2. Cách xử lý lỗi Waiting for table meta lock

Trước tiên các bạn cần kill các process này bằng cách truy cập vào mysql , sau đó thực hiện lệnh kill đối với ID của các process bị lock.

[root@root ~]# mysql # lệnh truy cập vào mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13098794
Server version: 8.0.31 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> kill 6428269; #lệnh kill  process có ID tương ứng

 

Khi đã thực hiện kill hoàn tất, bạn có thể kiểm tra lại sau ít phút để hệ thống xử lý với lệnhshow full processlist; . Lúc đó các process đã không còn nữa.

Nguyên nhân của lỗi này do MySQL chỉ sử dụng row-level locking trong bảng InnoDB. Các storage engines khác sử dụng table-level locks. Do đó, các bảng MyISAM có số lượng thao tác ghi lớn có thể gặp phải tình trạng tranh chấp khóa. Vì vậy ta cần chuyển đổi các table gặp vấn đề từ MyISAM sang InnoDB để hạn chế tình trạng này.

Trước tiên ta cần backup 1 bản dữ liệu để có thể phục hồi nếu lỗi xảy ra.

mysqldump DATABASE_NAME TABLE_NAME > TABLE_NAME.sql

Sau đó thực hiện đổi sang InnoDB đối với table này.

mysql -e "ALTER TABLE DATABASE_NAME.TABLE_NAME ENGINE=InnoDB"

Bạn cũng có thể thực hiện chuyển đổi table sang InnoDB thông qua phpmyadmin.

Trước tiên bạn vào phpmyadmin , sau đó chọn database và table tương ứng cần chuyển đổi.đổi

Sau đó bạn click vào Operations để thay đổi.

 

Ở dòng Storage Engine bạn đổi từ MyISAM thành InnoDB và click Go để lưu.

 

Bạn có thể tham khảo thêm ở bài viết hướng dẫn bên dưới của hãng cPanel

https://support.cpanel.net/hc/en-us/articles/1500004842842-Queries-to-MyISAM-table-stuck-in-Waiting-for-table-level-lock-state

 

Tổng kết

Chúng tôi hy vọng bài viết này đã giúp bạn tìm hiểu cách xử lý lỗi Waiting for table level lock.

Bạn cũng có thể tham khảo thêm các bài viết liên quan đến WordPress tại đây.

Ngoài ra PA Việt Nam cung cấp đa dạng các Plan Hosting WordPress đáp ứng yêu cầu của khách hàng
WordPress Hosting phổ thông
WordPress Hosting chất lượng cao
WordPress VIP

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/

Rate this post