Linux で MySQL スケジュールタスクを実装する方法

Linux で MySQL スケジュールタスクを実装する方法

前提: ストアド プロシージャは、毎日午後 10 時から午前 5 時まで 10 分ごとに実行されます。

実装:

1 つ目は、MySQL 自体を使用してイベント タイミング タスクを作成することです。これは、Navicat For MySQL またはその他のデータベース開発ツールを使用して実行できます。
2 番目の実装方法は、Linux システムに付属のタスク管理ツールを使用して実装される、Linux のスケジュールされたタスクを使用することです。

1.Mysqlのイベントタイミングタスクに関連するコマンド、

1. イベントが有効になっているかどうかを確認します。

@@event_schedulerを選択します。 
または SHOW VARIABLES LIKE 'event%';

2. スケジュールされたタスクを開始します。

GLOBAL event_scheduler を 1 に設定します。 
または SET GLOBAL event_scheduler = ON;

3. スケジュールされたタスクを作成します。

JOB_ALARMが存在する場合はイベントを削除します。
イベント JOB_ALARM の作成
 10分ごとにスケジュールどおり
する
 始める
  if(date_format(current_time(),'%H')>22 || date_format(current_time(),'%H')<5) その後
   PRO_ALARM() を呼び出します。
  終了の場合;
終わり

4. ストアドプロシージャを作成します。

PRO_ALARMが存在する場合はプロシージャを削除します。 
プロシージャ PRO_ALARM() を作成します。 
 始める 
  userId VARCHAR(32) を宣言します。 
  #これは、カーソルが最後の行に到達した状況を処理するために使用されます。DECLARE s INT DEFAULT 0; 
  #カーソルcursor_nameを宣言します(cursor_nameは複数行の結果セットです) 
  cursor_data CURSORを宣言する 
   tmp.USER_ID を選択 
   から ( 
       選択 
        e.USER_ID、 
        MAX(e.TIME_GMT) TIME_GMT 
       イベントから 
       GROUP BY e.USER_ID 
       MAX(e.TIME_GMT) < UNIX_TIMESTAMP() - 60 * 30 の場合 
          AND MAX(e.TIME_GMT) > UNIX_TIMESTAMP() - 60 * 60 * 24) tmp 
    内部結合イベント t ON tmp.USER_ID = t.USER_ID 
                   かつ tmp.TIME_GMT = t.TIME_GMT 
   ここで、TYPE_ID != '34001'; 
  #終了マークを設定します。DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s = 1; 
  カーソルデータを開きます。 
  #現在のカーソルポインタのレコードを取得し、データ行を読み取って変数a、bに渡します 
  FETCH カーソルデータ 
  ユーザーIDに; 
  #ループを開始し、ループ条件WHILE s <> 1 DOとしてカーソルが末尾に到達したかどうかを判断します。 
   EVENTS_NOTIFICATION VALUES (NULL、SYSDATE()、UNIX_TIMESTAMP(SYSDATE()) に挿入します。 
                          UNIX_TIMESTAMP(SYSDATE()), '00000', ユーザーID, '1', '0'); 
   #次の行のデータを読み取る FETCH cursor_data 
   ユーザーIDに; 
  終了しながら; 
  #カーソルを閉じます CLOSE cursor_data; 
 終わり;

2. Linuxのスケジュールタスクを使用する

Linux スケジュールされたタスクの基本コマンド:

スケジュールされたタスクを表示する: crontab -l
スケジュールされたタスクを編集する: crontab -e

*/10 22-23,0-5 * * * mysql -u ユーザー名 -p パスワード -e "use db_name;CALL PRO_ALARM();"

または、use db_name;CALL PRO_ALARM(); を SQL スクリプトに保存し、スケジュールされたタスクを次のように編集します。

*/10 22-23,0-5 * * * mysql -u ユーザー名 -p パスワード < /application/Job_mysql.sql

要約する

上記は、Linux で MySQL のスケジュールされたタスクを実装する方法についての紹介です。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL スケジュールタスク (EVENT イベント) を詳細に設定する方法
  • MySQL スケジュールタスクの実装と使用例
  • MySQLでスケジュールされたタスクを設定する方法の分析
  • mysql スケジュールタスク (イベント イベント) の詳細な説明
  • Linux で MySQL スケジュール タスク バックアップ データを実装する方法
  • MySQL スケジュールタスク例チュートリアル
  • MySQLのスケジュールタスクが正常に実行できない原因の分析と解決

<<:  セキュリティとパフォーマンスを向上させるためのNginxの最適な構成の詳細な説明

>>:  TypeScript のマップされた型とより優れたリテラル型推論について説明します。

推薦する

VMware 15 を使用して仮想マシンをインストールし、CentOS 8 を使用する詳細な手順

序文:現在、Linux と .Net Core を学習しており、クロスプラットフォームの知識を学んで...

MySQL GROUP_CONCAT 制限の解決

効果: GROUP_CONCAT関数は、フィールド値を文字列に連結することができます。デフォルトの区...

重複データの処理に関するMySQL学習ノート

MySQLは重複データを処理します一部の MySQL テーブルには重複レコードが含まれている場合があ...

Docker+Jenkinsによる自動デプロイの実現方法

Code Cloud を使用して Git コード ストレージ ウェアハウスを構築するhttps://...

HTML(divレイヤー)を介してFLASHにリンクを追加するための実装コード

今日、クライアントが広告を掲載したいのですが、提供された素材は Flash です。私たちはあまり気に...

Linux で大きなファイルの指定された内容を見つける方法

大きなことも小さなことも考えて、方向転換しましょう。 Linux では非常に大きなファイルに遭遇する...

Ubuntu の起動後にアプリケーションを実行するためのターミナルの設定方法

1.メニューバーにスタートと入力し、スタートアップアプリケーションをクリックして入力します。 2. ...

js におけるイベントバブリングとイベントキャプチャの簡単な分析

目次01-イベントバブリング1.1- イベントバブリングの概要1.2-イベントバブリングの利用(イベ...

Vueはボトムクエリ関数を実装します

この記事では、ボトムクエリ機能を実装するためのVueの具体的なコードを例として紹介します。具体的な内...

Alibaba Cloud Centos6.X でメールを送信する際に発生するさまざまな問題

序文: Webサービスを提供するために、Alibabaクラウドホストを新しくインストールしました。す...

JavaScript の基本演算子

目次1. オペレーター要約する1. オペレーター演算子は、代入、比較、算術演算などの機能を実装するた...

ReactとAntdのFormコンポーネントを組み合わせてログイン機能を実装する方法を詳しく説明します

目次1. ReactとAntdを組み合わせてログイン機能を実現2. ReactとAntdを組み合わせ...

CSS3 における構造擬似クラスセレクターと擬似要素セレクターの使い方の詳細な説明

構造擬似クラスセレクタの紹介構造擬似クラスセレクターは、いくつかの特殊効果を処理するために使用されま...

Windows 10 での MySQL 8.0.20 のインストールと設定方法のグラフィック チュートリアル

Win10システムにMySQL8.0.20をローカルにインストールし、個人的にテストして利用可能であ...

HTML メタビューポート属性の詳細な説明

ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウィンドウ」(ビューポート) に配置し...