MySQLを再起動してもevent_scheduler=ONを維持する方法
MySQLのグローバルシステム変数「event_scheduler」は、SET GLOBAL文で有効化(ON)しただけでは、サーバーの再起動とともにデフォルト値へ戻ってしまいます。再起動後もイベントスケジューラを確実に有効なままにしておくには、設定ファイルへの記述、あるいは永続化機能の利用が必要です。
現在の設定状態を確認する
まず、現在のevent_schedulerの状態を次のSELECT文で確認できます。
mysql> SELECT @@event_scheduler;
実行結果:
+-------------------+ | @@event_scheduler | +-------------------+ | ON | +-------------------+ 1 row in set (0.00 sec)
方法1:設定ファイル(my.cnf / my.ini)に記述する
最も基本的な方法は、設定ファイルの[mysqld]セクションに以下のように記述することです。Linux系OSではmy.cnf、Windowsではmy.iniが該当します。
[mysqld] event_scheduler = ON
この設定を行ったうえでMySQLを起動(または再起動)すれば、サーバーを何度再起動してもevent_schedulerは常にONになります。すでに稼働中のサーバーへ即時反映したい場合は、「SET GLOBAL event_scheduler = ON;」を実行しておくと良いでしょう。
方法2:SET PERSISTで永続化する(MySQL 8.0以降)
MySQL 8.0以降を使用している場合は、SET PERSIST文を使うことで、再起動後も設定を維持できます。設定内容はmysqld-auto.cnfファイルに保存され、次回起動時に自動的に適用されます。
mysql> SET PERSIST event_scheduler = ON;
このコマンドは実行時に即座に反映されると同時に、再起動後も設定が保持されるため、設定ファイルを直接編集する必要がありません。
再起動後の動作確認
実際にMySQLを再起動して挙動を確認してみます。RESTARTステートメントを実行します。
mysql> RESTART; Query OK, 0 rows affected (0.00 sec)
サーバーの再起動中は接続が一時的に切断されるため、直後にクエリを実行すると次のようなエラーが表示されることがあります。
mysql> SELECT @@event_scheduler; ERROR 2013 (HY000): Lost connection to MySQL server during query
しばらく待ってから同じSELECT文を再度実行すると、クライアントが自動的に再接続し、event_schedulerがONのまま維持されていることを確認できます。
mysql> SELECT @@event_scheduler; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 8 Current database: *** NONE *** +-------------------+ | @@event_scheduler | +-------------------+ | ON | +-------------------+ 1 row in set (0.04 sec)
まとめ
event_schedulerを再起動後も確実にONに保つには、my.cnfやmy.iniの[mysqld]セクションに「event_scheduler = ON」を記述するか、MySQL 8.0以降ならSET PERSIST文を利用します。これにより、サーバーを再起動してもイベントスケジューラは常に有効な状態が維持されます。
-
MySQLでsql_modeを永続的に設定する方法を解説
MySQLのsql_modeを永続的に設定する手順MySQLでは、セッションごとにSET sql_modeを実行してSQLモードを変更できますが、サーバーを再起動すると設定は元に戻ってしまいます。そこで本記事では、設定ファイル(my.cnf / my.ini)を編集することで、sql_modeを永続的に設定する方法を解説します。ステップ1:データディレクトリの場所を確認するまず、MySQLのデータディレクトリの場所を確認しましょう。以下のコマンドを実行します。mysql> select @@datadir;実行結果は次のようになります。+-------------------------
-
MySQLでINFORMATION_SCHEMA.key_column_usageのパフォーマンス低下を解決する方法
INFORMATION_SCHEMA.key_column_usageが遅くなる原因MySQLでINFORMATION_SCHEMA.key_column_usageを参照するクエリを実行した際、処理に長い時間がかかってしまうことがあります。このパフォーマンス低下の主な原因は、システム変数innodb_stats_on_metadataがデフォルトで有効(ON)になっていることです。この設定が有効な場合、INFORMATION_SCHEMAのメタデータテーブルにアクセスするたびにInnoDBが統計情報を更新するため、大量のディスクI/Oが発生し、クエリが遅くなります。解決方法:GLOBAL変数