Thỉnh thoảng mysqld bị shutdown đột ngột do vấn đề bộ nhớ hoặc một lý do gì đó và website bị đột tử.
Shell script kiểm tra trạng thái mysqld và khởi động tự động nếu dịch vụ không được chạy.
1/ Đầu tiên, tạo một shell script như bên dưới
#!/bin/bash
# Kiểm tra trạng thái mysqld có đang chạy không
check_mysqld_status() {
if systemctl is-active --quiet mysqld; then
echo "MySQL đang hoạt động"
return 1
else
echo "MySQL không hoạt động"
return 0
fi
}
# Khởi động mysql
start_mysqld() {
echo "Đang khởi động MySQL..."
sudo systemctl start mysqld
}
# Thực thi script chính
if check_mysqld_status; then
echo "MySQL đang không hoạt động."
start_mysqld
else
echo "MySQL đang hoạt động, không cần khởi động lại."
fi
2/ Phân quyền thực thi
chmod +x mysql_auto_restart.sh
Để kiểm tra, chạy lệnh bên dưới thủ công
./mysql_auto_restart.sh
Nếu dịch vụ MySQL không chạy, tập lệnh sẽ cố gắng khởi động lại nó bằng systemctl. Hãy nhớ rằng bạn có thể cần điều chỉnh tên dịch vụ mysqld dựa trên tên dịch vụ thực tế cho hệ thống của bạn (ví dụ: đó có thể là mysql hoặc mariadb thay vì mysqld).
Để lên lịch cho tập lệnh chạy định kỳ, bạn có thể thiết lập một công việc định kỳ. Mở cấu hình crontab:
crontab -e
Thêm một mục ở cuối tệp để chạy tập lệnh lúc 23 giờ mỗi ngày, ví dụ:
0 23 * * * /path/to/mysql_auto_restart.sh
Lưu và thoát tệp crontab. Tập lệnh bây giờ sẽ được thực thi lúc 23 giờ hằng ngày và nếu dịch vụ MySQL không chạy, nó sẽ tự động khởi động lại. Điều chỉnh lịch trình cron khi cần dựa trên yêu cầu giám sát của bạn.