1. Restart Mysql thủ công khi quá tải

MySQL có thể gặp sự cố khi hết bộ nhớ hoặc vì một số vấn đề khác trong trường hợp của mình là khi server chạy nhiều site khác nhau. Trong hầu hết các trường hợp, chúng ta có thể giải quyết vấn đề này bằng cách khởi động lại dịch vụ MySQL thủ công.

Để kiểm MySQL có đang chạy hay không, chạy câu lệnh:

sudo service mysql status
// kiểm tra trạng thái mysql

Hoặc:

sudo service mysqld status
// kiểm tra trạng thái nếu sử dụng mariadb

Nếu trạng thái Mysql đã tắt, khởi động lại bằng dòng lệnh:

sudo service mysql restart
// hoặc
sudo service mysqld restart

Nếu làm thủ công như vậy thì đơn giản rồi, tuy nhiên nếu csdl bị quá tải vào giữa đêm, khi chúng ta đang ngủ thì website truy cập sẽ bị gián đoạn, dó chính là vấn đề, vậy làm sao để giải quyết vấn đề này ?

Với linux/Centos, hệ điều hành cung cấp cho chúng ta tính năng Cron , đó là một công cụ lập lịch công việc tự động chạy tập lệnh dựa trên thời gian cho Linux để có thể chạy các tập lệnh mà chúng ta không cần thao tác thủ công nữa.

2. Tạo một kịch bản (Bash script) khởi động lại MySQL

Bạn có thể cấu hình cron để tự động kiểm tra trạng thái của máy chủ MySQL và khởi động lại nó nếu nó gặp sự cố. Tất nhiên, đây không phải là một bản sửa lỗi vĩnh viễn cho máy chủ MySQL tồi tàn của bạn, nhưng nó có thể giúp bạn mất thời gian cho đến khi bạn có thể điều tra thêm.

Trước tiên, chúng ta cần tạo một tập lệnh BASH đơn giản và lưu trữ nó trong thư mục chính (hoặc bất cứ nơi nào bạn muốn), sau đó hướng dẫn cron chạy tập lệnh BASH này mỗi phút một lần.

Bạn có thể đặt tập lệnh này ở bất cứ đâu, nhưng trong ví dụ này, mình sẽ đặt nó trong thư mục root. hoặc, bạn có thể sử dụng bitvise để truy cập tới server và tạo folder mô phỏng theo dòng lệnh của mình, tiếp theo, tạo một folder tên là scripts

cd /root/
// change directory to root folder
sudo mkdir scripts
// make dir scripts with root permission

sử dụng bitvise truy cập vào thư mục root

Truy cập vào thư mục scripts vào tạo file mysqlmon bằng công cụ nano ( trình biên tập dữ liệu trên terminal linux), hoặc sử dụng bitvise để tạo file này

cd scripts
sudo nano mysqlmon.sh

Dùng bitvise tạo mysqlmon.sh

Chèn đoạn code này vào file mysqlmon.sh vừa tạo tùy theo dịch vụ của bạn là mysql hay mysqld nhé:

#!/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

// sử dụng 1 trong 2 đoạn code này phù hợp server của bạn, chỉ khác nhau mysql và mysqld

#!/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 sử dụng nano, lưu lại và thoát (bấm tổ hợp phím Ctrl + X , bấm Y(yes) sau đó bấm enter)

Cấp quyền thực thi cho kịch bản:

sudo chmod +x mysqlmon.sh

3. Kiểm tra file kịch bản vừa tạo xem đã hoạt động đúng chưa

Chạy dòng lệnh này để thực thi file script vừa tạo:

sudo ./mysqlmon.sh

Nếu dịch vụ Mysql vẫn chạy, terminal sẽ hiển thị dòng:

MySQL Service is running already. Nothing to do here.

Nếu bạn muốn xem điều gì sẽ xảy ra khi tập lệnh phát hiện nếu MySQL gặp sự cố, hãy dừng dịch vụ MySQL, hãy lưu ý công đoạn này, server của bạn sẽ bị lỗi tạm thời do không load được database:

sudo service mysql stop

Sau khi stop, thử chạy lại file mysqlmon.sh vừa tạo xem có nhận diện được và khởi động lại mysql không:

sudo ./mysqlmon.sh

Nếu chạy đúng, dòng văn bản này sẽ hiển thị

MySQL Service was down. Restarting now..

Kiểm tra lại trạng thái lần cuối xem đã thành công chưa:

sudo service mysql status

4. Tự động hóa việc chạy file script bằng tính năng cron

Tạo file cron bằng nano hoặc bitvise:

cd ~
cd /etc/cron.d
// chuyển tơi thư mục etc/cron.d
nano -w auto_restart
// khởi tạo file auto_restart với trình biên tập nano

Paste dòng lệnh này vào file auto_restart

*/1 * * * * root /root/scripts/mysqlmon.sh >/dev/null 2>&1
// chạy file này 1 phút 1 lần, tăng số 1 lên nhiều nếu bạn muốn thời gian tự động chạy lâu hơn

file auto_restart hiển thị trong cron.d

Lưu lại file cron để hoàn tất.

Lưu ý, khi sử dụng cách này, bạn sẽ không thể tìm thấy lệnh cron bằng dòng lệnh crontab -l , để xem lệnh của bạn đã được nhận diện chưa, sử dụng dòng lệnh:

head -n -0 /var/spool/cron/* /etc/crontab /etc/cron.d/*
// xem các kịch bản tự động chạy trong thư mục cron.d
ls /etc/cron.{hourly,daily,weekly,monthly}/
// xem các file cron tự động chạy trong các thư mục cron theo giờ, ngày, tuần, tháng ...

Chúc bạn thành công !

Sẵn sàng để phát triển doanh nghiệp của bạn?

Để được tư vấn chi tiết hơn về dịch vụ, quý khách vui lòng cung cấp thông tin cho chúng tôi theo mẫu sau.

Bài viết liên quan

8 chiến lược tiếp thị giữ chân khách hàng được nhiều doanh nghiệp áp dụng 2024

Nội dung bài viết1. Restart Mysql thủ công khi quá tải2. Tạo một kịch bản...

Từ vụ việc drama Sầu Riêng: Thương hiệu lao đao vì người đại diện “vạ miệng”, cần quản lý như thế nào?

Nằm không cũng dính đạn, thương hiệu Foodmap mới đây đã bất ngờ hứng chịu...

19 kịch bản chatbot mẫu chuyên nghiệp nhất hiện nay

Trong thời đại công nghệ số, chatbot trở thành công cụ hữu ích giúp người...

SƯ MINH TUỆ – KHEN CŨNG THẾ MÀ KHÔNG KHEN CŨNG NHƯ THẾ

Cảnh mở đầu, quay con đường mòn trong đêm, cỏ mọc um tùm, chứng tỏ...

Bản phát hành bảo mật WordPress 6.5.5 – Những điều bạn cần biết

WordPress Core 6.5.5 đã được phát hành ngày hôm qua , ngày 24 tháng 6 năm 2023....