MySQL イベント スケジューラに関するよくある話 (必読)

MySQL イベント スケジューラに関するよくある話 (必読)

概要

MySQL には独自のイベント スケジューラもあり、これは Linux の crontab ジョブとして簡単に理解できます。ただし、SQL アプリケーションの場合は、より完全な機能があり、メンテナンスが容易です。個人的には、あまり多く作成すると DB のパフォーマンスに影響したり、デバッグが困難になる可能性があると感じています。

MySQLイベントスケジューラの主な内容

メインスイッチ

パラメータevent_schedulerはイベントスケジューラのマスタースイッチです。一般的には、ONまたはOFFに設定できます。無効に設定することはお勧めしません。ONに設定すると、show processlistでスレッドを確認できます。


作成、変更、表示などの構文

イベントの作成方法と変更方法についてはここでは説明しません。作成構文は次のとおりです。具体的な意味については、次のイベント情報テーブルの紹介を参照してください。公式ウェブサイトのドキュメントリンク http://dev.mysql.com/doc/refman/5.6/en/create-event.html も参照できます。


作成されたイベントを表示するには、現在のデータベースにアクセスした後、show create event xxx\G を使用します。



情報クエリとイベントの意味

イベントのステータス情報を表示するには、mysql.event または information_schema.events を表示するか、現在の DB に切り替えて show events を実行します。3 つの内容は基本的に同じです。information_schema はデータのコピーを作成できません。次の名前と開始時刻は、読みやすくするために変更されています。ここでは、information_schema.eventsの情報を例に挙げて説明します。


EVENT_CATALOG:一般的には、

EVENT_SCHEMA:イベントが配置されているスキーマ

EVENT_NAME:イベントの名前

DEFINER:イベントの定義者。これは、イベントを定義するときの selectcurrent_user() のデフォルトの結果と一致します。ユーザーにスーパー権限がある場合は、別のユーザーを指定できます。

TIME_ZONE:イベントで使用されるタイムゾーン。デフォルトはシステムです。変更しないことをお勧めします。

EVENT_BODY:通常はSQLなので気にしないでください

EVENT_DEFINITION:イベントの内容は、挿入などの特定のSQL、またはストアドプロシージャを呼び出す操作です。

EVENT_TYPE:このパラメータは非常に重要で、定義時に指定します。RECURRING と ONE TIME の 2 つの値があります。RECURRING は、条件が満たされる限りイベントが繰り返し実行されることを意味し、ONE TIME は 1 回だけ呼び出されます。

EXECUTE_AT: 1 回限りのイベントに有効です。RECURRING イベントの場合は、通常 NULL となり、イベントの推定実行時間を示します。

INTERVAL_VALUE: RECURRING タイプのイベントに有効で、実行間隔の長さを示します。

INTERVAL_FIELD: RECURRINGタイプのイベントに有効で、実行間隔の単位(通常はSECOND、DAYなど)を示します。詳細については、作成構文を参照してください。

SQL_MODE:現在のイベントで使用されるSQL_MODE

STARTS: RECURRING タイプのイベントに有効で、1 回限りの EXECUTE_AT 関数と同様に、イベントの実行が開始される時点を示します。 NULL は条件が満たされるとすぐに実行が開始されることを意味します。

ENDS: RECURRING タイプのイベントに有効で、イベントの実行が停止する時点を示します。NULL の場合、イベントは停止しません。

STATUS:一般的に、ENABLED、DISABLED、SLAVESIDE_DISABLED の 3 つの値があります。ENABLED はイベントをアクティブにすることを意味します。他の条件が満たされている限り、イベントは実行されます。DISABLED 状態は、イベントが実行されないことを意味します。SLAVESIDE_DISABLED は、スレーブ ライブラリでイベントが実行されないことを意味します。マスター データベースがイベントを一度実行し、それをスレーブ データベースにコピーしてから、スレーブ データベースで再度実行すると、データの一貫性が失われるため、スレーブ データベースでいかなる形式のイベントも実行しないように特に注意する必要があります。一般的には、スレーブ データベースでメイン スイッチ event_scheduler を無効にするだけで済みます。

ON_COMPLETION: 値はPRESERVEとNOT PRESERVEの2つだけです。PRESERVE

作成日時: イベントが作成された日時

LAST_ALTERED: イベントが最後に変更された時刻

LAST_EXECUTED: イベントが最後に実行された時刻。NULL の場合は、イベントが一度も実行されていないことを意味します。

EVENT_COMMENT: イベントコメント情報

ORIGINATOR: 現在のイベントが作成された際のサーバーID。マスターとスレーブでの処理に使用されます(SLAVESIDE_DISABLEDなど)。

CHARACTER_SET_CLIENT: イベントが作成されたときのクライアント文字セット、つまりcharacter_set_client

COLLATION_CONNECTION: イベント作成時の接続文字検証ルール、つまりcollat​​ion_connection

DATABASE_COLLATION: イベント作成時のデータベース文字セット検証ルール

イベント権限管理

1 event_schedulerシステム変数を設定するにはsuper_priv権限が必要です

2 イベントの作成、変更、削除には、スキーマ レベルのユーザーの EVENT 権限が必要です。

3 イベントの具体的な内容に応じて、対応する権限が必要となります。たとえば、イベント内のテーブルに挿入操作がある場合、ユーザーはテーブルを挿入する必要があります。そうでない場合、LAST_EXECUTED は常に NULL になります。

イベントステータスクエリ

DBが起動してからのイベント関連の統計を表示するには、次のコマンドを使用します。

mysql> '%event%' のようなグローバルステータスを表示します。

+--------------------------+-------+

|変数名 | 値 |

+--------------------------+-------+

|Com_alter_event | 0 |

|Com_create_event | 2 |

|Com_drop_event | 2 |

|Com_show_binlog_events | 0 |

|Com_show_create_event | 191 |

|Com_show_events | 40 |

|Com_show_relaylog_events | 0 |

+--------------------------+-------+

セット内の行数は 7 です (0.00 秒)

使用方法の提案

1 マスターがすでにイベントを実行した場合、スレーブはイベントが実行されないようにする必要があります(スレーブ上でイベントが意図的に作成されない限り)

2. mysql.event テーブルを直接操作して作成、削除などの操作を行うことは固く禁じられています。代わりに、create などの通常の構文を通じて実装する必要があります。そうしないと、メタデータの混乱が発生し、イベントが実行されなかったり、繰り返し実行されたりするなど、さまざまな説明のつかない問題が発生します。現時点では、唯一の解決策は DB を再起動することです。

3 作成するイベントに大量のデータ変更が含まれる場合は、既存のネットワーク サービスに影響を与えないことを確認するために十分なテストを実施する必要があります。

4 イベントを含む DB をバックアップする必要がある場合は、mysqldump を実行するときに --event パラメータを追加する必要があります。

私が皆さんにお伝えしたいのは、上記の記事「MySQL イベント スケジューラ (必読)」だけです。これが皆さんの参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL の計画タスクとイベント スケジュール例の分析
  • MySQL スケジュールタスク (イベント スケジューラ) イベント スケジューラの概要
  • MySQL スケジュールタスク (EVENT イベント) を詳細に設定する方法
  • MySQLのイベントスケジューラEVENTを理解する
  • MySQL イベント変更イベント (ALTER EVENT)、イベントの無効化 (DISABLE)、イベントの有効化 (ENABLE)、イベント名の変更、およびデータベース イベントの移行操作の詳細な説明
  • mysql スケジュールタスク (イベント イベント) の詳細な説明
  • MySQL binlog のイベントタイプの詳細な説明
  • MySQL イベント スケジューラを使用したスケジュールされたタスクの作成の詳細な説明
  • MySQL でスケジュールされたイベント スケジュールを作成する手順を説明します。
  • MySQL イベント スケジューラの使用の概要
  • mysqlイベントの有効化と呼び出し
  • MySQLはイベントを使用してスケジュールされたタスクを完了します

<<:  Vue でよく使われる高階関数と包括的な例

>>:  Dockerでmongodbデータベースを使用するための実装コード

推薦する

SQLはLeetCodeを実装します(180.連続した数字)

[LeetCode] 180. 連続した数字少なくとも 3 回連続して出現するすべての数字を検索す...

Vueはシンプルな計算機能を実装します

この記事では、参考までに、Vue の具体的なコードで簡単な計算機を実装する方法を紹介します。具体的な...

セマンティックウェブページ XHTML セマンティックマークアップ

構造とプレゼンテーションを分離するもう 1 つの重要な側面は、セマンティック マークアップを使用して...

HTML 画像 img にハイパーリンクを追加した後の醜い青い境界線の問題を解決する

HTML画像にハイパーリンクを追加すると醜い青い枠線が表示される次のように:解決: CSS スタイル...

ウィンドウ環境設定Mysql 5.7.21 windowx64.zip無料インストール版チュートリアル詳細説明

1. 公式サイトのmysqlダウンロードページからmysql-5.7.21-windowx64.zi...

他の人が私のウェブページを保存したり、サイトをコピーしたりするのを防ぐためのヒント

現在、インターネット上でウェブサイトをコピーすることは非常に一般的です。では、他人が私たちのウェブサ...

CentOS 7 で PHP 5.4 を 5.6 にアップグレードする方法の簡単な分析

1.ターミナルに入ったらPHPのバージョンを確認するphp -v出力は次のようになります。 PHP ...

あなたのウェブサイトはIE8に適していますか?

オリンピック期間中にIE8ベータ2がリリースされ、英語版のリリースに合わせて中国語版も第一波でリリー...

Nexusプライベートサーバー構築原理とチュートリアル分析

1つ。 Nexus プライベート サーバーを構築する理由は何ですか?社内の開発メンバーは全員外部ネッ...

デュアル VIP を使用した高可用性 MySQL クラスタの構築

目次1. プロジェクトの説明: 2. プロジェクト環境: 2. プロジェクトの手順: 3. プロジェ...

Tomcat 初回展開 Web プロジェクト プロセス図

独自のWebプロジェクトをtomcatディレクトリの下のwebappsディレクトリに配置します。 R...

LinuxにDockerをインストールする(非常に簡単なインストール方法)

最近、かなり暇です。大学4年生として数か月間インターンをしていました。インターンとして、Docker...

ボタンの 4 つのクリック応答方法の概要

ボタンは頻繁に使用されます。ここでは、イベント処理メソッドを整理し、実装方法が多数あることを発見しま...

Linuxの基本コマンドmktempの詳しい説明

mptemp は安全な方法で一時ファイルまたはディレクトリを作成します。このコマンドの適用範囲: R...

ウェブサイトレイアウトにおける CSS の計算関数 calc の例

calc は数値を計算するために使用される CSS 関数です。長さ、角度、時間などを計算できます。 ...