Nhiều lúc các bạn sẽ gặp tình huống web không vào được với thông báo “error establishing a database connection” và một trong những nguyên nhân gây ra lỗi này là do dịch vụ MySQL bị treo, mà nguyên nhân là do tài nguyên máy chủ của bạn không đủ đáp ứng, hoặc MySQL bị lỗi trong quá trình hoạt động. Sâu đây là cách kiểm tra và tự Khởi Động Lại MySQL Khi Quá Tải Trên Máy Chủ Linux (VPS) nhé!
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:
1 2 3 4 |
cd /root mkdir auto cd auto nano -w auto-mysql.sh |
(Nếu máy chủ bạn chưa có công cụ Nano bạn vui lòng chạy lệnh cài đặt #yum install nano -y)
Bước 2: Dán đoạn code sau vào file auto-mysql.sh
Nếu bạn đang sử dụng MySQL CenOS:
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash # Check if MySQL is running sudo service mysqld status > /dev/null 2>&1 # Restart the MySQL service if it's not running. if [ $? != 0 ]; then echo -e "MySQL Service was down. Restarting now...\n" sudo service mysqld restart else echo -e "MySQL Service is running already. Nothing to do here.\n" fi |
Nếu bạn đang sử dụng MySQL Ubuntu:
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash # Check if MySQL is running sudo service mysql status > /dev/null 2>&1 # Restart the MySQL service if it's not running. if [ $? != 0 ]; then echo -e "MySQL Service was down. Restarting now...\n" sudo service mysql restart else echo -e "MySQL Service is running already. Nothing to do here.\n" fi |
Bước 3: Chạy lệnh phân quyền cho file auto-mysql.sh
1 |
#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
1 |
#(crontab -u root -l ; echo "*/5 * * * * /root/auto/auto-mysql.sh") | crontab -u root – |
Lưu ý:
- Với lệnh Cronjob bạn không nên đặt thời gian quá ngắn (dưới 5 phút) điều này sẽ dẫn đến quá tải tài nguyên và lỗi hệ thống.
- Một số trường hợp copy các dòng lệnh về sẽ bị lỗi giữa các ký tự “ và ” ‘ và ‘ các bạn chuyển về ‘ và ” để code chạy đúng nhé.
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:
B1: vào menu Cron như hình trên
Đăng nhập và aaPanel và vào menu Cron như hình
B2: Tạo 1 script kiểm tra và khởi động lại mySql như hình
- Tại “Type of Task” chọn “Shell Script”
- Tại “Name of Task” vui lòng chọn tên cho script này vd: Codfe: Check and restart MySQL
- Tại “Execution cycle” chọn “Nminutes” và chọn 10 phút (hoặc tùy bạn, tuy nhiên thời gian càng ngắn thì càng nặng cho máy chủ)
- Tại “Scriptcontent” nhập vào script phù hợp với MySQL hay MariaDB như phần trên
Sau khi tạo xong chúng ta sẽ thấy danh sách bên dưới xuất hiện Cron vừa mới tạo tương tự như hình bên dưới
Các bạn 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 tương tự bên dưới
1 |
MySQL Service is running already. Nothing to do here. |
Trường hợp lỗi sẽ có các thông báo lỗi tương ứng. Chúc các bạn thực hiện thành công.