Làm gì khi service của VPS stop không rõ nguyên nhân và cách phòng tránh.

Thông báo lỗi:

“Error establishing a database connection Database connection error (2): Could not connect to MySQL Database error” CÁCH KIỂM TRA STATUS SERVICE

1. Cách kiểm tra STATUS SERVICE

  • Có nhiều lệnh để kiểm tra trạng thái của dịch vụ xem có đang chạy hay không, bạn có thể dùng netstat hoặc ps nhưng phải kết hợp với các options để xuất được ra kết quả như ý.
  • Với mysql khi chạy trên máy chủ sẽ có 2 dấu hiệu để nhận diện nó, ví dụ mysql chạy với port 3306, có process name là mysql hay mysqld. Như vậy chúng ta chỉ cần chạy netstat và ps để xem có các dấu hiệu nhận biết đó không là được, nếu có thì service đang start còn không thì service đang stop.
  • Đây là 2 câu lệnh bạn cần:

ps -ef | awk ‘{ print $8 }’ | grep mysqld | wc -l
netstat -tulpn | awk ‘{ print $7 }’ | grep mysqld | wc -l

2. Lệnh START SERVICE

Linux cũng có nhiều cách để start dịch vụ, trên CentOS 5/6/7 Ubuntu 10/12/14/15/16 chúng ta có những câu lệnh sau:

/etc/init.d/mysql start
service mysql start
systemctl mysql start

3. VIẾT SHELL SCRIPT

  • Đã có đủ các thông tin cần thiết phần này chúng ta sẽ bắt tay vào viết script đầu tiên, với logic:
  • Nếu kiểm tra service trả về kết quả lớn hơn 0 thì hiển thị dòng thông báo Running Service, ngược lại sẽ thực hiện lệnh start service.
  • Ngắn gọn vậy thôi, bạn dùng trình soạn vi/vim hoặc nano tạo file auto_start_mysql.sh vi /var/www/script/auto_start_mysql.sh
  • Với nội dung sau:
#!/bin/bash
 service=mysqld
if (( $(ps -ef | awk '{ print $8 }' | grep mysqld | wc -l) > 0 ))
 then
 echo "$service chay ngon lanh"
 else
 /etc/init.d/$service start
 fi
  • Trong script này chỉ có duy nhất một lệnh điều kiện if…else đơn giản, muôn hiểu cách viết lệnh, dấu chấm, dấu phảy, space, ngoặc đơn, ngoặc kép bạn phải tự mình đọc tài liệu cơ bản shell script trên google, mình không chi tiết hết được.
  • mỗi OS sẽ có tên khác nhau lúc là mysql lúc lại mysqld bạn thay thế cho phù hợp với hệ thống của mình.

4. TỰ ĐỘNG CHẠY SHELL SCRIPT VỚI CRONTAB

  • Giờ đến bước tự động hóa công việc, bạn cần phân quyền thực thi script cho người dùng. chmod +x /var/www/script/auto_start_mysql.sh
  • Tham khảo: cách chmod trên linux.
  • Chạy lệnh crontab -e tạo crontab với nội dung bên dưới.
*/5 * * * * sh /var/www/script/auto_start_mysql.sh
  • Tùy mức độ quan trọng của service và tần suất xảy ra lỗi, bạn đặt thời gian chạy crontab phù hợp như bên trên mình để cứ 5 phút chạy script một lần. Done.

Leave a Reply