[Ubuntu VPS] Crontab tự bật lại MySQL khi bị Stop trên VPS

Chào các bạn, đây là bài viết đầu tiên của mình trên Blog EGG.  Xin phép tự giới thiệu bản thân ở một bài viết khác. Về cơ bản mình sẽ viết lên blog những vấn đề mình gặp phải trong quá trình làm việc thực. Một số chủ đề mình đang làm và sẽ viết về nó: Server VPS, Git – Gitlab, Ubuntu, Java, Java Servlet,  Google Cloud Platform, PHP, WordPress.

Vào chủ đề chính, hôm nay một số website của công ty tự dưng die, và thông báo một câu ngắn gọn ở dưới:

sql-die

Sau một hồi trace log, thì có vẻ ở 1 thời điểm nào đó VPS bị hết RAM dẫn đến Sql service bị tắt, việc cần xử lý đơn giản là start lại.

Để tránh việc này xảy ra thì mình có thể xử lý theo 2 bước:

  1. Kiểm tra lại các cấu hình cho mysql, tạo thêm swap mở rộng RAM khi cần.
  2. Check mysql, nếu bị stop thì bật lại ngay. Mình sẽ hướng dẫn chi tiết bước này ở dưới.

I. Tạo script auto start mysql viết trên shell

Đầu tiên, chúng ta cần tạo ra một đoạn script làm nhiệm vụ check xem mysql có đang running hay không? Nếu đang không running thì cần phải start lại.

Câu lệnh check status: root@dobody:~# service mysql status
Câu lệnh start lại: root@dobody:~# service mysql start

Tiếp theo, chúng ta viết thành một script để cron sử dụng nó khi bắt đầu một task.

  1. Tạo một file tên là auto-start-mysql.sh
  2. File có nội dung như sau:
  3. Lưu file lại, nếu dùng nano thi bấm Ctrl+O để lưu và Ctrl+X để thoát.
  4. Cấp quyền run cho sript vừa viết.
    chmod +x /root/auto-start-mysql.sh
  5. Chạy thử script.

II. Tạo crontab để chạy script auto start mysql

Crontab là gì? Cron là một tiện ích cho phép các tác vụ (tasks) tự động chạy nền trên hệ thống theo định kỳ bằng cách sử dụng các cron daemon. Crontab (CRON TABle) là một file chứa đựng trong nó các bảng biểu (schedule) cần chạy cũng như thời gian chạy của nó.

Mình sẽ viết 1 bài chi tiết về Crontab sau nhé.

Phần này mình sẽ cần lập 1 lịch để chạy script auto-start-mysql.sh định kì:

  1. Edit crontab:
  2. Thêm lịch check: Ở ví dụ dưới là 5 phút chạy auto-start-mysql.sh (file này đang ở thư mục /root/) một lần:
  3. Lưu file lại, nếu dùng nano thi bấm Ctrl+O để lưu và Ctrl+X để thoát.

III. Kết luận

Để đảm bảo server hoạt động liên tục, không bị khách hàng kêu ca phàn nàn, mình có thể viết thêm nhiều các script khác để check, ghi log hệ thống… Tất cả nhưng việc đó crontab đều làm được hết.
Hôm nay type thế này thôi, giữ sức hôm sau gặp vấn đề gì thì lại viết tiếp.

Thân ái <3

The following two tabs change content below.

tuannd.egg