Thứ Năm, 24 tháng 8, 2023

Nguyên nhân và cách khắc phục lỗi MySQL phổ biến khi sử dụng

Dưới đây Vietnix sẽ liệt kê các lỗi MySQL thường gặp khi sử dụng MySQL, bài viết sau đây có thể giúp ích cho các bạn trong việc fix các lỗi liên quan đến MySQL.

lỗi mysql
Các lỗi MySQL phổ biến khi sử dụng

Lỗi “mysqld dead but subsys locked” của MySQL

Đâ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 restart
-> xuất ra kết quả: 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.

Lỗi ERROR 2006 (HY000): MySQL server has gone away

Nguyên nhân:

MySQL server has gone away (lỗi 2006) có hai nguyên nhân chính như sau:

  • Server đã hết thời gian chờ và đóng kết nối.
  • 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.

Giải quyết:

Đối với lỗi server timed out – hết thời gian chờ, để khắc phục, hãy kiểm tra biến mysql wait_timeout trong tệp cấu hình my.cnf của bạn đã đủ lớn chưa, nếu chưa hãy tăng thời gian chờ lên.

wait_timeout=300
interactive_timeout=300

Đối với lỗi dung lượng packet vượt quá dung lượng, cách khắc phục như sau: Bạn có thể tăng giới hạn kích thước packet của biến max_allowed_packet trong tệp my.cnf lên mức tối đa.

Ví dụ:
Đặt max_allowed_packet = 128M
Khởi động lại máy chủ MySQL: /etc/init.d/mysql restart

Hoặc trong trường hợp bạn muốn tăng lên một mức cụ thể nào đó lớn hơn dung lượng packet đang import thì có thể set theo giá trị đó.

Ví dụ: Bạn có database với dung lượng file 20MB và khi import database vào MySQL thì gặp phải lỗi như trên, tăng giá trị lên mức 32MB và set max_allowed_packet với giá trị là: 32 x 1024 x 1024 = 33554432. Với cách này bạn không phải khởi động lại Mysql.

Lỗi Unable to connect to database: Too many connections

Khi xuất hiện lỗi trên có nghĩa là bạn 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:

  • 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 = 300; (giá trị không nên lớn quá, vì còn tuỳ thuộc nhiều vào hệ thống trên dịch vụ)
  • Ngoài ra, cần tăng thêm giá trị sau: max_user_connections = 20; (giá trị có thể tăng lên nếu cần thiết)
  • 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

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 socket nằm tại đường dẫn trên.

Giải quyết:

  • Bước đầu tiên xác định được tập tin mysql.sock bằng cách 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 phân quyền thư mục và kiểm tra trạng thái Mysql:
    • chmod -R 777 /var/lib/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, các bạn 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)
    • #service mysql restart

Lỗi InnoDB: Error: log file ./ib_logfile0 is of different size

Lỗi này thường xảy ra khi thực hiện converted một database sửu dụng InnoDB sau đó restart MySQL thì báo “fail”. KIểm tra lại log MySQL ghi nhận lỗi có thể như sau:

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes

Giải quyết:

Đầu tiên, bạn cần khôi phục tất cả các thay đổi cấu hình trong file “my.cnf” sau đó khởi động lại MySQL. Tiếp theo, thực hiện câu lệnh dưới đây sau khi bạn truy cập vào MySQL.

#SET GLOBAL innodb_fast_shutdown=0;

Sau đó dừng MySQL:

#service mysql stop

Thay đổi cấu hình tập tin với kích thước file log, trong file my.cfn , sau đó thêm dòng chỉnh sửa kích thước file log nếu có:

innodb_log_file_size  = 256M

Tiếp theo, xóa các file log cũ và tiến hành start lại dịch vụ MySQL:

#service mysql start

Lỗi MySQL is running but PID file could not be found

Lỗi này thường xảy ra trong trường hợp restart lại MySQL. Bạn có thể làm theo hướng dẫn dưới đây để khắc phục lỗi.

Giải quyết:

Tạo thư mục trên và tạo file mysql.pid bằng lệnh sau:

#mkdir /var/run/mysql

Sau đó, di chuyển vào thu mục trên và tạo file mysql.pid bằng lệnh:

#cd /var/run/mysql
#touch mysqld.pid

Cấp quyền MySQL cho file trên cho user MySQL:

#chown mysql:mysql mysql.pid

Bây giờ, khởi động lại dịch vụ MySQL:

#service mysql restart

Kiểm tra lại và nếu vẫn phát hiện lỗi thì bạn có thể làm thêm các bước dưới đây:

  • Tìm kiếm 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]

Và bâu giờ bạn khởi động lại MySQL lại một lần nữa:

#service mysql restart

Lỗi mySQL error: Got error 28 from table handler

Khi thông báo 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ực thi được

Giải quyết:

Điều đầu tiên là bạn cần stop MySQL:

#service mysql stop

Tiến hành thực hiện kiểm tra file hệ thống và các thư mục tạm để giải phóng bớt dung lượng trống.

#df -h 
#cd /tmp
#df -h /tmp

Sau khi tiến hành kiểm tra xong, bạn 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, bạn có thể làm rỗng các tập tin log như sau:

#echo '' > /var/log/file log

Nếu dung lượng trên máy chủ hoặc VPS không còn nhiều, thì bạn nên tiết hành nâng cấp dịch vụ thêm. Và thực hiện khởi động lại MySQL

Trên đây là tất cả các lỗi MySQL phổ biến mà bạn có thể gặp khi sử dụng MySQL. Mong những cách khắc phục trên sẽ giúp bạn fix lỗi MySQL thành công.

=============================
Website không bao giờ chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn muốn tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ kinh nghiệm, thủ tục, quy trình, bí kíp thực chiến mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin1_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
Nguyên nhân và cách khắc phục lỗi MySQL phổ biến khi sử dụng, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master