サーバーが過負荷になったときにMysqlの自動再起動をスケジュールするためにcronjobを使用するための手順
- 24-07-2022
- Toanngo92
- 0 Comments
Mục lục
1.過負荷になったときにMysqlを手動で再起動します
MySQLは、メモリが不足した場合、またはサーバーが多くの異なるサイトを実行している場合の私の場合は他の問題が原因で問題が発生する可能性があります。ほとんどの場合、MySQLサービスを手動で再起動することでこの問題を解決できます。
MySQLが実行されているかどうかを確認するには、次のコマンドを実行します。
sudo service mysql status // kiểm tra trạng thái mysql
または:
sudo service mysqld status // kiểm tra trạng thái nếu sử dụng mariadb
Mysqlの状態がオフの場合は、コマンドラインを使用して再起動します。
sudo service mysql restart // hoặc sudo service mysqld restart
手動で行うのは簡単ですが、深夜にデータベースが過負荷になると、寝ているときにWebサイトへのアクセスが中断されるので、これを解決するにはどうすればよいでしょうか。
linux / Centosを使用すると、オペレーティングシステムはCron機能を提供します。これは、Linux用の時間ベースの自動スクリプトジョブスケジューラであり、スクリプトを操作せずにスクリプトを実行できます。
2. MySQLを再起動するスクリプト(Bashスクリプト)を作成します
MySQLサーバーのステータスを自動的にチェックし、クラッシュした場合は再起動するようにcronを構成できます。もちろん、これは薄汚いMySQLサーバーの恒久的な修正ではありませんが、さらに調査できるようになるまで時間を節約できます。
まず、簡単なBASHスクリプトを作成し、それをホームディレクトリ(または任意の場所)に保存してから、このBASHスクリプトを1分に1回実行するようにcronに指示する必要があります。
このスクリプトはどこにでも配置できますが、この例では、ルートディレクトリに配置します。または、bitviseを使用してサーバーにアクセスし、コマンドラインをシミュレートするフォルダーを作成します。次に、scriptsというフォルダーを作成します。
cd /root/ // change directory to root folder sudo mkdir scripts // make dir scripts with root permission
スクリプトフォルダに移動し、nanoツール(Linuxターミナルのデータエディタ)でmysqlmonファイルを作成するか、bitviseを使用してこのファイルを作成します
cd scripts sudo nano mysqlmon.sh
サービスがmysqlであるかmysqldであるかに応じて、新しく作成されたmysqlmon.shファイルに次のコードを挿入します。
#!/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
nanoを使用している場合は、保存して終了します(Ctrl + Xを押し、Y(yes)を押してから、Enterを押します)
スクリプトに実行権限を付与します。
sudo chmod +x mysqlmon.sh
3.作成したスクリプトファイルが正しく機能しているかどうかを確認します
次のコマンドを実行して、新しく作成されたスクリプトファイルを実行します。
sudo ./mysqlmon.sh
Mysqlサービスがまだ実行中の場合、ターミナルは次の行を表示します。
MySQL Service is running already. Nothing to do here.
スクリプトがMySQLのクラッシュを検出したときに何が起こるかを確認したい場合は、MySQLサービスを停止してください。この手順に注意してください。データベースを読み込めないため、サーバーが一時的にクラッシュします。
sudo service mysql stop
停止した後、作成したmysqlmon.shファイルを再度実行して、mysqlを認識して再起動するかどうかを確認してください。
sudo ./mysqlmon.sh
正しく実行されると、このテキスト行が表示されます
MySQL Service was down. Restarting now..
最後にもう一度ステータスをチェックして、成功したかどうかを確認します。
sudo service mysql status
4.cronを使用してスクリプトファイルの実行を自動化します
nanoまたはbitviseを使用してcronファイルを作成します。
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
このコマンドラインをファイル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
cronファイルを保存して終了します。
この方法を使用する場合、コマンドラインcrontab -lでcronコマンドを見つけることができないことに注意してください。コマンドが認識されるかどうかを確認するには、次のコマンドラインを使用します。
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 ...
幸運を !