Đôi lúc bạn sẽ gặp tình huống dịch vụ MySQL thường xuyên bị treo hoặc báo lỗi “Error establishing a database connection”. Mà nguyên nhân là do tài nguyên máy chủ của bạn không đủ đáp ứng, nhưng việc nâng cấp chưa thực sự là cần thiết hoặc MySQL bị lỗi trong quá trình hoạt động. Thì đây là giải pháp cho bạn.
Kiểm tra và tự Khởi Động Lại MySQL Khi Quá Tải Trên Máy Chủ Linux
Bước 1: Tạo file script
Chạy lần lượt các lệnh sau:
cd /root
mkdir auto
cd auto
nano -w auto-mysql.sh
Bước 2: Dán đoạn code sau vào file auto-mysql.sh
Nếu bạn đang sử dụng MySQL:
if [ ! "$(systemctl status mysql.service | awk 'NR==3 {print $2}')" == "active" ]; then
/bin/systemctl start mysql.service
exit
fi
Nếu bạn đang sử dụng MariaDB:
if [ ! "$(/bin/systemctl status mariadb.service | awk 'NR==3 {print $2}')" == "active" ]; then
systemctl start mariadb.service
exit
fi
Bước 3: Chạy lệnh phân quyền cho file auto-mysql.sh
#chmod +x /root/auto/auto-mysql.sh
Bước 4: Đặt thời gian hệ thống tự check trạng thái MySQL và tự động start nếu MySQL không hoạt động
Ví dụ: Bạn muốn 5 phút hệ thống kiểm tra 1 lần
#(crontab -u root -l ; echo "*/5 * * * * /root/auto/auto-mysql.sh") | crontab -u root -
Tạo Script kiểm tra và tự Khởi Động Lại MySQL trên aaPanel
Trường hợp các bạn dang xài aaPanel vốn rất hay xảy ra lỗi quá tải MySQL các bạn có thể tạo scripts kiểm tra và khởi động lại bằng các dùng chức năng cron có sẵn như sau:
Thực hiện tạo Cron thông qua giao diện aaPanel
Truy cập vào aaPanel > Cron
Thêm đoạn bash shell bên dưới:
Với MySQL
if [ ! "$(systemctl status mysql.service | awk 'NR==3 {print $2}')" == "active" ]; then
/bin/systemctl start mysql.service
echo "MySQL đã khởi động thành công vào $(date)" >> /root/mysql-restart.log
exit
fi
Nếu bạn đang sử dụng MariaDB
if [ ! "$(/bin/systemctl status mariadb.service | awk 'NR==3 {print $2}')" == "active" ]; then
systemctl start mariadb.service
echo "MySQL đã khởi động thành công vào $(date)" >> /root/mysql-restart.log
exit
fi
- Type of Task: Chọn ShellScript
- Name of Task: Đặt tên bất kỳ
- Execution cycle: Chọn N Minutes (5 phút chạy cron 1 lần)
- Script content: Nhập vào script được chỉ định ở trên.
Sau đó bấm vào Add task để thêm cron.
Bấm vào Execute để chạy script sau đó vào Log để kiểm tra script đã chạy chưa? trường hợp đã chạy đúng các bạn sẽ thấy trong log có dòng thông báo “★[2024-10-26 11:25:01] Successful” thì đã thực hiện thành công, ngoài ra bạn có thể kiểm tra file log mysql-restart.log để xem nhật ký ghi lại.
Như vậy mình đã hướng dẫn các bạn chi tiết cách tạo Cron tự động kiểm tra trạng thái và khởi động lại Mysql nếu bị lỗi. Việc này giúp Website của bạn không bị gián đoạn quá lâu trong một số trường hợp các bạn không thể theo dõi máy chủ của mình 24/24. Hy vọng bài viết này hữu ích với các bạn, chúc các bạn thực hiện thành công.
Chúc các bạn thực hiện thành công!