Dưới đây là các lỗi phổ biến trong MySQL mà có thể Quý khách có thể sẽ gặp phải trong quá trình sử dụng. Bài viết sau đây có thể giúp ích cho Quý khách trong việc fix các lỗi liên quan đến MySQL.
1. Lỗi “mysqld dead but subsys locked”.
Đây là trường hợp mysql bị lỗi, không thể restart, khi thực hiện câu lệnh:
#service mysqld status
thì nó hiện ra thông báo lỗi như trên,
“mysqld dead but subsys locked”
Giải quyết:
Copy file đang bị khoá vào thư mục /root
#cp /var/lock/subsys/mysql /root/mysqld
Sau đó xoá tiến trình mysql đang bị khoá này đi, ta thực hiện câu lệnh sau:
#rm -f /var/lock/subsys/mysqld
Thực hiện tắt các dịch vụ liên quan sau đó restart lại:
#service httpd stop
#service mysql restart
#service httpd restart
Sau đó tiến hành truy cập lại mysql và kiểm tra.
Các câu lệnh trên được sử dụng trên hệ thống CentOS 6.x trở lên.
2. Lỗi “ERROR 2006 (HY000): MySQL server has gone away”
Đây là mội lỗi trong quá trình làm việc với MySQL export/import dữ liệu .
Sự cố này xảy ra với nguyên nhân chủ yêu là do dung lượng của cơ sở dữ liệu database quá lớn, vượt mức quy định cấu hình trong MySQL.
Nếu bị lỗi này, Quý khách vui lòng làm theo hướng dẫn sau để có thể fix lỗi:
Giải quyết:
Mở file cấu hình my.cnf của MySQL ( nếu không nhớ đường dẫn file cấu hình có thể dùng lệnh #find / -name my.cnf để tìm kím).
Thêm dòng sau (hoặc nâng cao mức cho phép lên nếu đã có dòng này trong file my.cnf)
max_allowed_packet=500M
Sau khi tiến hành thêm xong, khởi động lại MySQL bằng câu lệnh sau:
#service mysql restart
Sau khi import/export thành công, Quý khách có thể vào lại file my.cnf để xóa hoặc hạ thấp mức giới hạn xuống cho phù hợp nhu cầu sử dụng.
3. Lỗi “InnoDB: Error: log file ./ib_logfile0 is of different size”
Lỗi này xảy ra có thể khi thực hiện việc converted một database nào đó sử dụng InnoDB sau đó restart MySQL thì báo fail, kiểm tra log MySQL ghi nhận lỗi, ví dụ như sau:
“InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes”
Giải quyết:
Đầu tiên Quý khách vui lòng phục hồi tất cả các thay đổi cấu hình trong file “my.cnf” sau đó start lại MySQL.
Tiếp theo, thực hiện câu lệnh dưới đây sau khi thực hiện việc truy cập vào MySQL.
#SET GLOBAL innodb_fast_shutdown=0;
Sau đó stop MySQL.
#service mysql stop
Thay đổi cấu hình tập tin với kích thước file log, trong file my.cnf ta thêm dòng hay chỉnh sửa lại giá trị kích thước file log nếu có:
innodb_log_file_size = 256M
Tiến hành xoá các file log cũ (ví dụ như: ib_logfile0 và ib_logfile1)
Sau đó tiến hành start lại dịch vụ MySQL:
#service mysql start
4. Lỗi “MySQL is running but PID file could not be found”
Lỗi trên xảy ra trong trường hợp thực hiện việc restart lại dịch vụ MySQL.
Để khắc phụ tình trạng lỗi trên, Quý khách vui lòng làm theo hướng dẫn sau:
Giải quyết:
Tạo thư mục mysql trong /var/run bằng lệnh sau:
#mkdir /var/run/mysql
Sau đó di chuyển vào thư mục trên và tạo file mysql.pid bằng lệnh sau:
#cd /var/run/mysql
#touch mysqld.pid
Cấp quyền MySQL cho file trên cho user mysql:
#chown mysql:mysql mysql.pid
Tiến hành khởi động lại MySQL service:
#service mysql restart
Nếu vẫn xuất hiện lỗi như trên, xin Quý khách vui lòng làm theo các bước dưới đây để quá trình fix lỗi được hoàn tất.
Tiếp theo, tìm kím cái PID của MySQL đang thực thi trên máy chủ hoặc VPS.
#pidof mysql
Tiến hành kill hết các processes mysql đang thực thi bằng câu lệnh sau:
#kill -9 [id-processes-mysql]
Tiến hành khởi động lại MySQL service một lần nữa:
#service mysql restart
Sau đó tiến hành kiểm tra lại.
5. Lỗi “Unable to connect to database: Too many connections”.
Khi xuất hiện lỗi trên có nghĩa là Quý khác không thể truy cập vào cơ sở dữ liệu bởi vì số lần truy cập đã quá giới hạn của server.
Giải quyết:
Để giải quyết lỗi trên, Quý khách có làm theo các bước dưới đây để có thể tăng các thông số giới hạn:
Sau khi truy cập vào VPS, tiến hành mở file “my.cnf”.
#vi /etc/my.cnf
Sau đó thêm dòng sau vào:
max_connections = 1024; ( giá trị không nên lớn quá, vì còn tuỳ thuộc nhiều vào hệ thống của Quý khách)
Ngoài ra, cần tăng thêm giá trị sau:
max_user_connections = 20;
Sau khi thực hiện thêm 2 dòng trên vào file cấu hình, ta tiến hành restart lại dịch vụ mysql.
#service mysql restart
6. Lỗi “Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock”
Lỗi trên nguyên nhân là do không thể kết nối đến MySQL server thông qua soket nằm tại đường dẫn trên.
Giải quyết:
Quý khách có thể tham khảo hướng dẫn sau đây để có thể fix được lỗi trên.
Bước đầu tiên xác định được tập tin “mysql.sock” có trong đường dẫn /var/lib/mysql/ hay không bằng cách truy cập vào đường dẫn và thực hiện câu lệnh ls -l
#cd /var/lib/mysql
#ls -l
Nếu như không có thì ta tiến hành sử dụng câu lệnh sau để tìm kiếm file “mysql.sock“.
#find / -name mysql.sock
Sau khi tiến hành xác định được tập tin “mysql.sock”, ta tiến hành chỉnh sửa thông số lại trong file “my.cnf”.
#vi /etc/my.cnf
Thêm dòng sau vào:
socket=/var/lib/mysql/mysql.sock (ví dụ: file mysql.sock đặt tại đường dẫn /var/lib/mysql/)
Tiến hành chmod thư mục
chmod -R 777 /var/lib/mysql/
Thực hiện lại việc kiểm tra trạng thái MySQL.
#mysqladmin -u root -p status
Ngoài ra, nếu như đường dẫn file “mysql.sock” nằm ở đường dẫn khác, Quý khách có thể thực hiện các thao tác như sau:
#mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bk
#ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock (ví dụ đường dẫn file “mysql.sock” nằm ở /data/mysql_datadir)
Tiến hành restart lại dịch vụ mysql.
#service mysql restart
7. Lỗi “mySQL error: Got error 28 from table handler. “
Lỗi này có nghĩa là không gian còn lại trên đĩa cứng đã hết, khiến cho MySQL không thể thực thi được.
Giải quyết:
Đầu tiên tiến hành stop dịch vụ mysql.
#service mysql stop
Tiến hành kiểm tra file hệ thống và các thư mục tạm.
#df -h
#cd /tmp
#df -h /tmp
Sau khi tiến hành kiểm tra xong, Quý khách có thể xoá bớt dung lượng trong thư mục tạm để có thể giải phóng bớt dung lượng trống.
#cd /tmp
#rm -rf *
Ngoài ra, Quý khách có thể làm rỗng các tập tin ghi log.
#echo ” > /var/log/file log
Nếu như dung lượng ổ cứng trên VPS hay máy chủ, Quý khách nên tính đến việc nâng cấp thêm.
Sau khi thực hiện các bước trên, hãy khởi động lại dịch vụ MySQL.
#service mysql start
https://vinahost.vn