Hướng dẫn tạo script khởi động lại MySQL khi bị stop trên máy chủ Linux

Tác giả: 18/09/2022
I.Giới thiệu

Trong quá trình sử dụng hay quản trị máy chủ Linux, chắc hẳn các bạn không còn lạ gì với việc dịch vụ MySQL bị treo hoặc stop ở một số thời điểm vì một nguyên nhân nào đó ví dụ như : máy chủ quá tải tài nguyên RAM thì một dịch vụ có tên OOM sẽ phải kill tiến trình MySQL để giảm tải tài nguyên này hay máy chủ bị đầy dung lượng…

Nếu trường hợp MySQL bị stop do đầy dung lượng, thì việc các bạn cần làm là kiểm tra và xóa bớt các dữ liệu không thiết đi (file backup,log,…) thì mới có thể start lại MySQL. Còn nếu rơi vào trường hợp bị stop do quá tải tài nguyên Ram hay lý do nào đó chưa xác định thì chúng ta có thể áp dụng cách tạo Cron như bài viết này nhé

II.Hướng dẫn tạo Script
Bước 1: SSH vào máy chủ Linux của bạn

Để tạo Cron khởi động MySQL trên máy chủ Linux việc đầu tiên các bạn cần làm là SSH hoặc truy cập VPS hoặc máy chủ của bạn với quyền root trước. Nếu bạn chưa biết cách SSH vào máy chủ của bạn thì bạn có thể tham khảo bài viết hướng dẫn sau

Bước 2: Tạo script check trạng thái và khởi động MySQL

Các bạn làm theo lần lượt các lệnh bên dưới để tạo đường dẫn cũng như thêm nội dung script nhé (Các bạn có thể thay thế đường dẫn, tên file/folder tùy ý theo nhu cầu của mình).

  • Tạo đường dẫn chứa file script
mkdir /root/automysql

vi /root/automysql/autostart-mysql.sh

 

Ví dụ này mình đang tạo thư mục automysql tại /root và tạo file autostart-mysql.sh tại /root/automysql/

  • Thêm nội dung bên dưới vào file vừa tạo

Sau khi tạo file autostart-mysql.sh xong, các bạn tiến hành chỉnh sửa và dán nội dung script bên dưới vào file

Lưu ý : Để xác định được đang sử dụng MySQL hay MariaDB thì bạn có thể sử dụng lệnh bên dưới để xem

netstat -nlp | grep 3306

Trường hợp sử dụng MySQL thì dùng script sau:

if [ ! "$(systemctl status mysql.service | awk 'NR==3 {print $2}')" == "active" ]; then

/bin/systemctl start mysql.service

exit

fi

Trường hợp các bạn sử dụng MariaDB thì dùng script sau:

if [ ! "$(/bin/systemctl status mariadb.service | awk 'NR==3 {print $2}')" == "active" ]; then

systemctl start mariadb.service

exit

fi

Thêm xong các bạn lưu lại nhé

  • Phân quyền cho File autostart-mysql.sh
chmod +x /root/automysql/autostart-mysql.sh
Bước 3: Tạo Cron để thiết lập thời gian chạy script

Các bạn không nên thiết lập thời gian chạy Cron quá ngắn (dưới 5 phút) , vì có thể dễ làm quá tải tài nguyên và gây lỗi hệ thống.

Các bạn có thể thiết lập thời gian cứ 10,20 phút script sẽ được chạy một lần để kiểm tra trạng thái MySQL, nếu trạng thái bị stop thì sẽ tự động Start lại

crontab -e

Thêm */10 * * * * /bin/bash /root/automysql/autostart-mysql.sh

Khởi động lại dịch vụ Crond theo lệnh sau :

systemctl restart crond
III.Tổng kết:

Như vậy Nhân Hòa đã hướng dẫn các bạn cách tạo Cron tự động kiểm tra trạng thái và khởi động lại MySQL nếu bị stop. Việc này giúp website của các 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 được.

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!

Các bạn có thể tham khảo thêm các hướng dẫn sử dụng khác tại link sau : https://wiki.nhanhoa.com

Trả lời