hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Direct Admin
  • Kiến thức hệ điều hành
  • Linux
Hướng dẫn dùng cronjob lập lịch tự động restart Mysql khi server quá tải

Hướng dẫn dùng cronjob lập lịch tự động restart Mysql khi server quá tải

  • 16-01-2022
  • Toanngo92
  • 0 Comments

Mục lục

  • 1. Restart Mysql thủ công khi quá tải
  • 2. Tạo một kịch bản (Bash script) khởi động lại MySQL
  • 3. Kiểm tra file kịch bản vừa tạo xem đã hoạt động đúng chưa
  • 4. Tự động hóa việc chạy file script bằng tính năng cron

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 !

Bài viết liên quan:

Khái niệm Disk Inode và cách xem Inode, sử dụng Inode trong ubuntu
Giới thiệu về Shell Script và lập trình C cơ bản trong UNIX
Giới thiệu về bảo mật và phân quyền trong unix/linux
Làm việc với tệp tin (file) trong Linux
Hướng dẫn mount (gắn kết) ổ cứng trong ubuntu
Giới thiệu cấu trúc thư mục và bắt đầu phiên làm việc với Linux
Giới Thiệu về Hệ Điều Hành Linux
Fix lỗi initramfs (fsck) khi khởi động ubuntu: BusyBox v1.22.1 (Ubuntu 1:1.30.0-4ubuntu6.4)
Hướng dẫn sử dụng Rclone backup VPS lên google drive
Hướng dẫn backup linux server bằng Rsync
Hướng dẫn xử lý lỗi CentOS 8 – Failed to download metadata for repo ‘AppStream’ [CentOS] khi chạy lệnh yum
Hướng dẫn xóa toàn bộ message system trên Directadmin qua SSH

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Mẫu prompt tạo mô tả chi tiết bối cảnh

Một số cải tiến trong ASP.NET Core, Razor Page, Model Binding, Gabbage collection

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×